88 lines
2.4 KiB
C#
88 lines
2.4 KiB
C#
using System.Collections;
|
||
using System.Collections.Generic;
|
||
using UnityEngine;
|
||
|
||
public class JoyStickController : BaseController
|
||
{
|
||
/// <summary>
|
||
/// 控制对象的Transform
|
||
/// 若为空则控制当前脚本所在对象
|
||
/// </summary>
|
||
[Tooltip("控制对象的Transform,默认为当前对象")]
|
||
public Transform tran;
|
||
/// <summary>
|
||
/// 移动速度(米/秒)
|
||
/// </summary>
|
||
[Tooltip("移动速度(米/秒)")]
|
||
public float moveSpeed = 5;
|
||
/// <summary>
|
||
/// 旋转速度(角度/秒)
|
||
/// </summary>
|
||
[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;
|
||
/// <summary>
|
||
/// 使用键盘控制对象
|
||
/// </summary>
|
||
/// <param name="h">水平偏移量</param>
|
||
/// <param name="v">垂直偏移量</param>
|
||
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);
|
||
}
|
||
} |