C# Unity3D角色控制器移动问题。摄像机位置没有改变

C# Unity3D角色控制器移动问题。摄像机位置没有改变,c#,unity3d,virtual-reality,C#,Unity3d,Virtual Reality,我有一个问题,在调用CharacterController.SimpleMove()后,主摄像机位置没有改变。任务是创建摄影机移动的场景。 我有与角色控制器和脚本连接的主要相机游戏对象。 问题是调用SimpleMove()后,vrCamera位置中的任何内容都没有更改 我的问题是这个代码有什么错。我认为MainCamera对象和CharacterController组件之间的绑定有问题,但我花了很多时间进行研究,没有发现任何工作 使用UnityEngine; [RequiredComponen

我有一个问题,在调用CharacterController.SimpleMove()后,主摄像机位置没有改变。任务是创建摄影机移动的场景。 我有与角色控制器和脚本连接的主要相机游戏对象。 问题是调用SimpleMove()后,vrCamera位置中的任何内容都没有更改
我的问题是这个代码有什么错。我认为MainCamera对象和CharacterController组件之间的绑定有问题,但我花了很多时间进行研究,没有发现任何工作

使用UnityEngine;
[RequiredComponent(typeof(CharacterController))]
公共类走道:单一行为{
公共摄像机;
公共浮动TogleAngle=30.0f;
公共浮子速度=3.0f;
公共事业的发展;
私有字符控制器cc;
//用于初始化
无效开始(){
cc=vrCamera.GetComponent();
}
//每帧调用一次更新
无效更新(){
如果(vrCamera.eulerAngles.x>=切换角度和&vrCamera.eulerAngles.x<90.0f)
{
Vector3向前=vrCamera.TransformDirection(Vector3.forward);
cc.SimpleMove(前进*速度);
}
}
}

试试这个。您的TransformDirection可能返回错误的向量

Vector3 forward = vrCamera.transform.forward;
cc.SimpleMove(forward * speed);

你不能移动虚拟现实摄像头,是SDK决定了主摄像头的位置


要移动你的相机,你只需制作一个新的
GameObject
作为你的
Main相机的父对象
,然后移动父对象
GameObject

,试着在
Update
中将
vrCamera.eulerAngles.x
打印到控制台,看看它的值是否确实在30到90之间。我调试了脚本。“if”语句中的代码返回true;执行cc.SimpleMove()行。非常感谢可能的重复!我已经尝试过这样的方法,它是有效的。摄像机移动,但有一个新问题:我希望每个
Update()
方法都会改变摄像机位置:调用
cc.SimpleMove()
后,值
vrCamera.transform.forward
将被更新,因此下次调用
Update()
vrCamera.transform.forward
将有新值。但是现在
vrCamera.transform.forward
总是一样的。所以看起来玩家只需迈出一步,然后停下来。当
if()
语句等于false时,相机将移动到其初始位置。你知道为什么会这样吗?@EvgenyDes你可以参考你的相机并使用他的矢量前进(例如:camera.mainCamera.transform.foward)
Vector3 forward = vrCamera.transform.forward;
cc.SimpleMove(forward * speed);