using Pvr_UnitySDKAPI;
using UnityEngine;
public class NewBehaviourScript : MonoBehaviour
{
private Transform RealCamera;
[SerializeField] private CharacterController character;
[SerializeField] private float speed=50f;
private void Start()
{
if (transform.eulerAngles != Vector3.zero)
transform.eulerAngles = Vector3.zero;
RealCamera = transform.Find("Head");
if (!character)
if (GetComponent<CharacterController>())
character = GetComponent<CharacterController>();
else
character = gameObject.AddComponent<CharacterController>();
}
private void Update()
{
Vector2 v2 = Controller.UPvr_GetTouchPadPosition(0);
v2 = new Vector2(v2.y - 127.5f, v2.x - 127.5f);
Vector3 fxV3 = Vector3.zero;
float angle = Vector2.SignedAngle(new Vector2(0, 1f), v2);
if ((angle >= 0f && angle < 45f) || (angle <= 0f && angle > -45))//触摸板 上
fxV3 = new Vector3(0f, 0f, 1f);
else if ((angle > 135f && angle <= 180f) || (angle < -135f && angle >= -180f))//触摸板 下
fxV3 = new Vector3(0f, 0f, -1f);
else if (angle < 135f && angle > 45f)//触摸板 左
fxV3 = new Vector3(-1f, 0f, 0f);
else if (angle < -45f && angle > -135f)//触摸板 右
fxV3 = new Vector3(1f, 0f, 0f);
//使用Character移动,
character.SimpleMove(transform.TransformDirection(RealCamera.rotation * fxV3 * Time.deltaTime * speed));
}
}
由于Pico触摸板坐标和我想的不太一样,于是先将触摸板坐标先减了127.5清零坐标,然后根据角度判断触摸点在上下左右哪个区域,写个脚本,复制上面代码,挂载在“Pvr_UnitySDK”这个物体上测试吧。G2测试能用。
图像来源:[https://blog.csdn.net/SandmanRUN/article/details/108410778]