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));
}
}
Dado que las coordenadas del panel táctil Pico no son las mismas que pensaba, primero reduje las coordenadas del panel táctil en 127,5 y borré las coordenadas, y luego juzgué en qué área se encuentra el punto táctil de acuerdo con el ángulo, escribí un guión, copie el código anterior y montarlo en Vamos a probarlo en el objeto "Pvr_UnitySDK". Se puede utilizar la prueba G2.
图像来源:[https://blog.csdn.net/SandmanRUN/article/details/108410778]