Unity Pico一体机使用手柄触摸板 前后左右移动位置

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

                   图像来源:[https://blog.csdn.net/SandmanRUN/article/details/108410778]

猜你喜欢

转载自blog.csdn.net/weixin_44003637/article/details/114983964