通过上篇UGUI实现虚拟摇杆功能的介绍,相信大家可以很容易掌握并实现虚拟摇杆功能。接下来介绍如何通过虚拟摇杆控制物体的移动和旋转。
思路
- 通过JoyStick脚本中的TargetPos获取到虚拟摇杆向量
var targetPos = joyStickHandle.TargetPos.normalized;
- 通过摇杆向量转换为目标向量
var moveVector = new Vector3(targetPos.x, 0f, targetPos.y);
- 朝向采用函数Quaternion LookRotation(Vector3 forward)
transform.rotation = Quaternion.LookRotation(moveVector);
- 移动采用Translate(Vector3 translation, [DefaultValue(“Space.Self”)] Space relativeTo)
transform.Translate(moveVector * moveSpeed * Time.deltaTime, Space.World);
完整代码
using UnityEngine;
public class PlayerMove : MonoBehaviour
{
public JoyStickHandle joyStickHandle;
public float moveSpeed;
private void Update()
{
var targetPos = joyStickHandle.TargetPos.normalized;
if (targetPos != Vector2.zero)
{
var moveVector = new Vector3(targetPos.x, 0f, targetPos.y);
transform.rotation = Quaternion.LookRotation(moveVector);
transform.Translate(moveVector * moveSpeed * Time.deltaTime, Space.World);
}
}
}
将此脚本挂在具体物体身上并给予相应的赋值即可实现摇杆对物体的移动旋转控制。