Oculus中OVRPlayerController飞行视角的制作
最近项目上的事,忙的不可开交。忙里偷闲,记录下Oculus飞行视角的制作
师兄给我的要求是,带上Oculus,通过remote和头盔操作,可以完成飞行
我的解决办法:1、消除重力的影响,如同在真空中,就可以不会掉下。
2、逐步修改位置,叠加眼睛正前方的标量,完成飞行。
using UnityEngine; using System.Collections; public class flyingCarper : MonoBehaviour { //OVR人的预制体Transform组件 private OVRPlayerController com_OVRControl; //头盔眼镜Transform组件 private Transform eye_transform; //飞行速度 public int speed = 10; //处于飞行状态,T是,F否 private bool fly_flag = false; void Start () { com_OVRControl = GetComponent<OVRPlayerController> (); eye_transform = GameObject.Find("CenterEyeAnchor").GetComponent<Transform> (); } void Update () { if(fly_flag){ //处于飞行状态 if (OVRInput.Get (OVRInput.RawButton.DpadUp)) { //按住remote,前进按钮 fn_forward (); //前进 } if (OVRInput.Get(OVRInput.RawButton.DpadDown)){ //按住remote,后退按钮 fn_back (); //后退 } } } public void reciveCheck(bool flag){ if (flag) { com_OVRControl.GravityModifier = 0f; //修改重力为0 fly_flag = true; //飞行状态置为true }else { com_OVRControl.GravityModifier = 1f; //修改重力为1 fly_lag = false; //飞行状态置为false } } private void fn_forward(){ //看向哪里就向那里飞行 this.transform.position +=(eye_transform.forward*speed*Time.deltaTime); } private void fn_back(){ //看下哪里,就与相反的方向飞行 this.transform.position -=(eye_transform.forward*speed*Time.deltaTime); } }
新的知识点:1、OVRPlayer中OVRPlayerController组建中可设置重力为0;
2、OVRInput.Get (OVRInput.RawButton.DpadUp)检测remote的按钮