我正在尝试使用 Unity3D 制作一个包含 AR(增强现实)模式的移动应用程序。所以我已经将我的移动设备与我的 unity3d 程序连接起来,并且相机工作正常。但是,当移动移动设备时,unity程序内的主摄像头不会移动与移动设备移动相同的轨道。有谁知道如何改变或控制unity3d中主相机的轨道吗?
发生这种情况的原因有多种。例如,这可能是由于非居中枢轴或坐标系造成的。
请问您使用的是哪种AR系统?顺便说一句,在工作中,我们最近有一个涉及 Unity3d 和 Metaio 的项目,要弯曲系统来做我们需要的事情是一场噩梦,特别是当我们需要基于局部坐标系进行大量对象定位时。
当您提到相机的轨道时,我想可能是相机的枢轴以某种方式偏移,并且相机围绕该偏移旋转。或者相机可能是由 AR 系统控制的实际游戏对象的子节点,在这种情况下,该父节点充当相机的枢轴。
在下图中,您可以看到相机远离该中心点,并且当它旋转时,它会基于该中心点进行旋转,换句话说,相机总是试图看着该中心点,它给人一种“”的感觉移动时“绕轨道运行”。
要控制 Unity3D 中主摄像机的移动,您可以结合使用脚本编写和输入处理。这是一个简单的例子:
在 Unity 中创建一个新的 C# 脚本并将其附加到您的主相机 GameObject。
在脚本中,声明一些变量来控制相机移动:
public float movementSpeed = 5f;
public float rotationSpeed = 150f;
void Update()
{
// Move camera forward/backward
float moveVertical = Input.GetAxis("Vertical");
transform.Translate(Vector3.forward * moveVertical * movementSpeed * Time.deltaTime);
// Move camera left/right
float moveHorizontal = Input.GetAxis("Horizontal");
transform.Translate(Vector3.right * moveHorizontal * movementSpeed * Time.deltaTime);
// Rotate camera left/right
float rotateCamera = Input.GetAxis("Rotation");
transform.Rotate(Vector3.up * rotateCamera * rotationSpeed * Time.deltaTime);
}
在 Unity 编辑器中,选择主摄像机 GameObject 并添加一个 Rigidbody 组件(如果还没有)。这确保了可以使用物理属性来移动相机。
在 Unity 输入管理器中设置输入轴。转到编辑 -> 项目设置 -> 输入管理器。为“垂直”、“水平”和“旋转”创建新轴(或者根据需要修改现有轴)。
测试并调整脚本中的移动和旋转速度,直到您对相机进行所需的控制。
通过这些步骤,您现在应该可以在 Unity3D 中控制主摄像机的移动和旋转。