using System.Collections; using System.Collections.Generic; using UnityEngine; public class JoyStickController : BaseController { /// /// 控制对象的Transform /// 若为空则控制当前脚本所在对象 /// [Tooltip("控制对象的Transform,默认为当前对象")] public Transform tran; /// /// 移动速度(米/秒) /// [Tooltip("移动速度(米/秒)")] public float moveSpeed = 5; /// /// 旋转速度(角度/秒) /// [Tooltip("旋转速度(角度/秒)")] public float rotateSpeed = 10; void Start() { if (tran == null) tran = transform; } // Update is called once per frame void Update() { if (CanControl) { if (JoyStickHandler.js_x != 0 || JoyStickHandler.js_y != 0) { IsJoyStickOnControl = true; ControllWithKey(JoyStickHandler.js_x, JoyStickHandler.js_y); } else { if (IsJoyStickOnControl) { Invoke("SetJoyStick", 0.2f); } } } } void SetJoyStick() { IsJoyStickOnControl = false; } Vector3 tmp; /// /// 使用键盘控制对象 /// /// 水平偏移量 /// 垂直偏移量 void ControllWithKey(float h, float v) { switch (JoyStickHandler.CurrentMode) { case JoyStickHandler.Mode.Right: tran.Rotate(Vector3.up * rotateSpeed * Time.deltaTime); // 旋转 break; case JoyStickHandler.Mode.Left: tran.Rotate(Vector3.up * -rotateSpeed * Time.deltaTime); // 旋转 break; case JoyStickHandler.Mode.Up: tran.position += tran.forward * moveSpeed * Time.deltaTime; // 移动 break; case JoyStickHandler.Mode.Down: tran.position += tran.forward * -moveSpeed * Time.deltaTime; // 移动 break; } //tran.position += tran.forward * moveSpeed * Time.deltaTime * v; // 移动 //tran.Rotate(Vector3.up * rotateSpeed * Time.deltaTime * h); // 旋转 //Debug.Log(h + "," + v); //tmp.x = h; //tmp.z = v; //tran.Translate(tmp * moveSpeed * Time.deltaTime); } }