transform.LookAt()使Y角度增加180

时间:2016-03-11 08:05:18

标签: unity3d camera

我正在努力创造第三人飞船运动。

宇宙飞船在其位置绕所有轴旋转,并具有向前移动的油门控制。总是有一台摄像头。我不是让相机成为孩子,因为我希望相机不跟随绕z轴的旋转。

相机有一个脚本,可以将其位置保持在太空船后面固定的距离,然后调用transform.LookAt(spaceShipTarget)

问题在于,当我将船绕全球x轴旋转90度时,相机的y轴突然旋转180度。相机控制脚本如下:

using UnityEngine;

namespace UnityStandardAssets.Utility
{
    public class FollowBehind : MonoBehaviour
    {
        public Transform target;
        public float distance;
        public float delay;

        private Vector3 velocity = Vector3.zero;

        private void LateUpdate()
        {
            Vector3 offset = target.transform.TransformVector(0, 0, distance);
            Vector3 currentPosition = transform.position;
            Vector3 finalPosition = target.position + offset;
            transform.position = Vector3.SmoothDamp(currentPosition,
                finalPosition, ref velocity, delay);
            transform.LookAt(target);
        }
    }
}

为什么会发生这种情况,我该如何解决?

1 个答案:

答案 0 :(得分:0)

相机旋转时遇到的问题可能是由于您用来使相机跟随飞船的脚本,可能是因为当您旋转飞船时,相机的旋转(可能是位置)会受到影响。

您可以做的是将另一个对象的太空飞船和摄像机子项同时生成,然后将脚本添加到此父对象。现在,您可以在父级脚本中放置一些代码来移动父级本身(这样,相机和太空飞船将一起移动,并且您不需要手动将它们保持在一起),也可以在父级的脚本中您可以根据特定输入单独或一起旋转飞船和摄像机。