1、挂载脚本到角色的父物体A上
2 、以屏幕左边的触摸为移动,右边为转向操作
3、加载角色时,将角色的父物体设置为A,须将角色的位置和角度置0
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class TouchMove : MonoBehaviour
{public float x = 189f;public float y = 1f;public float z = 562f;[SerializeField]private Transform camera;public float dx = 2;public float dy = 14;public float dz = -10;public int speed = 8;public int roteSpeed = 45;public Vector3 dretOne = Vector3.zero;public bool if_move = false;public bool if_rote = false;Vector2 deltaPos = Vector2.zero;int roteDirt =0;public int screenWidth = Screen.width;public int screenHeight = Screen.height;void Start(){}void Update(){if (Input.touchCount == 1){Touch touch = Input.GetTouch(0);if (touch.position.x < screenWidth / 2){checkMove(touch);}else if(touch.position.x > screenWidth / 2){checkRote(touch);}} else if (Input.touchCount > 1){Touch touch1 = Input.GetTouch(0);Touch touch2 = Input.GetTouch(1);if (touch1.position.x < screenWidth / 2){checkMove(touch1);}else if (touch1.position.x > screenWidth / 2){checkRote(touch1);}if (touch2.position.x < screenWidth / 2){checkMove(touch2);}else if (touch2.position.x > screenWidth / 2){checkRote(touch2);}}if (if_move){Move();}if (if_rote){Rote();}}void checkRote(Touch touch){if (touch.phase == TouchPhase.Began){Debug.Log("Touch began");if_rote = true;Debug.Log("触碰位置:" + touch.position);}else if (touch.phase == TouchPhase.Moved ){deltaPos = touch.deltaPosition;if (Math.Abs(deltaPos.x) > 2 ){if(deltaPos.x<0){roteDirt = -1;}else{roteDirt = 1;}}Debug.Log("Touch moved:" + deltaPos);}else if (touch.phase == TouchPhase.Ended){Debug.Log("Touch ended");if_rote = false;roteDirt = 0;}}void checkMove(Touch touch){deltaPos = touch.deltaPosition;if (touch.phase == TouchPhase.Began){Debug.Log("Touch began");if_move = true;Debug.Log("触碰位置:" + touch.position);}if (touch.phase == TouchPhase.Moved ){if (Math.Abs(deltaPos.x) > 2 || Math.Abs(deltaPos.y) > 2){dretOne = new Vector3(deltaPos.x, 0, deltaPos.y).normalized;}Debug.Log("Touch moved:" + deltaPos);}else if (touch.phase == TouchPhase.Ended){Debug.Log("Touch ended");if_move = false;dretOne = Vector3.zero;}}void Rote(){transform.Rotate(Vector3.up * roteDirt*roteSpeed * Time.deltaTime, Space.Self);}void Move(){transform.localPosition += dretOne * Time.deltaTime * speed;}public void BackBtn(){transform.position = new Vector3(x, y, z);}void CameraLook(){camera.position = transform.position + new Vector3(dx, dy, dz);}
}