所以我有一个播放器预制件(来自 steamVR),并且我将两只手连接到它上面,代替旧手,其中一只手是枪,按预期完美工作,另一只手完全被击中,我已经花了最后 2 小时调试无济于事。我有一个脚本,它使用控制器的玩家方向和拇指杆移动的方向,它连接到左侧控制器,并且在它工作时会破坏传送。
我可以让运动完美地工作,牺牲我的传送系统(传送工作,除了高度,不能传送到我目前所在的地方,只是把我放在它下面。同样值得注意的是,我使用的是 steamvr 的传送也是预制的。
当控制器不工作时,这是它的工作设置:
播放器预制:https ://gyazo.com/0d52edf219b4a16c1f842818dbafc89a
手:https ://gyazo.com/5089b750520dcf6f6b8fe5bd899ef1cb
这是传送无法正常工作时的设置 Player Prefab:(与以前相同)手:https ://gyazo.com/5cc125244e3ae3911ae14f23d2e187fd
这是运动的代码:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Vrtouchmove : MonoBehaviour {
[SerializeField]
private Transform camera;
private Valve.VR.EVRButtonId touchpad =
Valve.VR.EVRButtonId.k_EButton_SteamVR_Touchpad;
private SteamVR_Controller.Device controller { get { return
SteamVR_Controller.Input((int)trackedObj.index); } }
private SteamVR_TrackedObject trackedObj;
private Vector2 axis = Vector2.zero;
void Start()
{
trackedObj = GetComponent <SteamVR_TrackedObject>();
}
void Update ()
{
if (controller == null)
{
Debug.Log("Controller not Set");
return;
}
var device = SteamVR_Controller.Input((int)trackedObj.index);
if (controller.GetTouch(touchpad))
{
axis = device.GetAxis(Valve.VR.EVRButtonId.k_EButton_Axis0);
if (camera != null)
{
camera.position += (transform.right * axis.x + transform.forward * axis.y)
* Time.deltaTime;
camera.position = new Vector3(camera.position.x, 0, camera.position.z);
}
}
}
}
我很困惑为什么它不起作用,感谢任何帮助。