之前接触过别人写的VR移动脚本,但是没有细看里面的内容,只是会用而已,现在换工作了,只能自己写了(菜鸟一个,大神勿喷)
using UnityEngine;
using VRTK;
using VR;
public class VR_CameraMove : MonoBehaviour
{
public float _moveSpeed;
public bool isTouchStart = false;
public Vector2 touchVec;
private VR_ControllerEvents vr_ControllerEvents;
private void Awake()
{
vr_ControllerEvents = FindObjectOfType<VR_ControllerEvents>();
if (vr_ControllerEvents.controllerType == ControllerType.Right)
{
vr_ControllerEvents.touchPadTouchStart += TouchPadTouchStart;
vr_ControllerEvents.touchPadAxisChanged += TouchPadAxisChanged;
vr_ControllerEvents.touchPadTouchEnd += TouchPadTouchEnd;
}
}
private void Start()
{
_moveSpeed = PlayerPrefs.GetFloat("VR_CameraMove");
}
private void Update()
{
if (isTouchStart)
{
MoveController(touchVec);
}
}
/// <summary>
/// 设置移动速度
/// </summary>
/// <param name="speed">速度数值</param>
public void SettingMoveSpeed(float speed)
{
_moveSpeed = speed;
}
private void MoveController(Vector2 vector)
{
Vector3 direction = new Vector3(vector.x, 0, vector.y);
transform.Translate(direction * _moveSpeed * Time.deltaTime, Space.Self);
}
private void TouchPadTouchEnd(object sender, ControllerInteractionEventArgs e)
{
isTouchStart = false;
}
private void TouchPadAxisChanged(object sender, ControllerInteractionEventArgs e)
{
touchVec = e.touchpadAxis;
}
private void TouchPadTouchStart(object sender, ControllerInteractionEventArgs e)
{
isTouchStart = true;
}
}