【发布时间】:2017-09-22 11:38:10
【问题描述】:
我有一个 3D 汽车游戏,其中相机从上到下指向。当汽车移动时,我需要相机跟随它。我知道如何进行位置跟随,但我不知道如何顺利地进行与汽车相同的旋转。我只需要更改y 轴。 x = 90 和 z = 0 一直都是。汽车也只在y 轴上旋转。
public float interpVelocity;
public float minDistance;
public float followDistance;
public GameObject target;
public Vector3 offset;
Vector3 targetPos;
// Use this for initialization
void Start()
{
targetPos = transform.position;
}
// Update is called once per frame
void FixedUpdate()
{
if (target)
{
Vector3 posNoZ = transform.position;
posNoZ.z = target.transform.position.z;
Vector3 targetDirectionZ = (target.transform.position - posNoZ);
interpVelocity = targetDirectionZ.magnitude * 5f;
targetPos = transform.position + (targetDirectionZ.normalized * interpVelocity * Time.deltaTime);
transform.position = Vector3.Lerp(transform.position, targetPos + offset, 0.25f);
Vector3 posNoX = transform.position;
posNoX.x = target.transform.position.x;
Vector3 targetDirectionX = (target.transform.position - posNoX);
interpVelocity = targetDirectionX.magnitude * 5f;
targetPos = transform.position + (targetDirectionX.normalized * interpVelocity * Time.deltaTime);
transform.position = Vector3.Lerp(transform.position, targetPos + offset, 0.25f);
}
}
【问题讨论】:
-
这个问题可能更适合gamedev.stackexchange.com
-
考虑使用 Slerp 而不是 Lerp