在Unity中,我有一个具有以下结构的相机
GameObject Pan
=> GameObject Rotation
=> GameObject Zoom
=> GameObject Camera (the component that have the camera script)
我有一个对象目标
GameObject target;
我想围绕该对象沿所有方向旋转。就像是飞机一样,所以我可以左右旋转。
我有以下代码
void ChangePosition()
{
if(Input.GetAxis("Horizontal") != 0 || Input.GetAxis("Vertical") != 0)
{
if (target)
{
transform.RotateAround(target.transform.position, transform.right, -Input.GetAxis("Vertical") * speed);
transform.RotateAround(target.transform.position, transform.up, -Input.GetAxis("Horizontal") * speed);
rotationObject.transform.LookAt(target.transform.position);
}
}
}
当您仅向左或向上移动时,效果很好。
但是,如果您同时移动展位,则旋转不再直观。它还会旋转照相机。
我希望相机仅向左或向上移动(所以绕2轴旋转,但不要对自己旋转)
我该如何解决?
答案 0 :(得分:1)
我不喜欢使用RotateAround()
,但是它们是一个简单得多的解决方案。首先修改层次结构,添加一个新对象,将其作为旋转中心,并将其放置在目标对象的中心。
GameObject Target (your target game object)
=> GameObject RotationCenter (local position: 0, 0, 0. The center of Target)
=> GameObject Camera
然后只需旋转新的游戏对象RotationCenter
。这样的事情应该可以解决问题:
RotationCenter.Rotate(Input.GetAxis("Vertical") * speed, Input.GetAxis("Vertical") * speed);