【发布时间】:2016-03-11 08:05:18
【问题描述】:
我正在尝试创建第三人称宇宙飞船运动。
宇宙飞船在其位置围绕所有轴旋转,并具有向前移动的油门控制。有一个相机总是在它后面。我没有让相机成为孩子,因为我希望相机不跟随围绕 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);
}
}
}
为什么会发生这种情况,我该如何解决?
【问题讨论】:
-
所以你将船在 x 上旋转 90 度,然后相机在 y 上跳跃 180 度?
-
还有其他代码可以修改您的相机变换吗?如果是这样,您能否将其也包含在代码 sn-p 中?目前,给定的信息似乎不足以缩小问题范围......
-
@Serlite 完成...谢谢!
-
@NikaKasradze 是的。