平滑地查看目标会禁用围绕另一个轴的旋转

时间:2017-07-01 13:17:20

标签: unity3d

旋转3d对象时遇到问题。它是一个锁定火箭,应该始终朝向目标,但也应围绕其x轴旋转。

我正在使用以下代码来顺利查看目标:

void SmoothLookAt (Vector3 target)
{
    Vector3 difference = target - transform.position;
    float rotationZ = Mathf.Atan2(difference.y, difference.x) * Mathf.Rad2Deg;
    var targetRotation = Quaternion.Euler(0, 0, rotationZ);
    transform.rotation = Quaternion.Slerp(transform.rotation, targetRotation, 5 * Time.deltaTime);
}

我怎样才能让它围绕x轴旋转?

我试图添加

transform.Rotate(Vector3.right * Time.deltaTime * speed);

但没有运气。我的火箭完全拒绝旋转(面向前方的工作)

提前致谢!

1 个答案:

答案 0 :(得分:1)

使用多个转换

由于您有两种竞争类型的旋转,使它们堆叠的唯一方法是将每个旋转分配给变换层次结构中的变换。做"旋转"部分是"孩子的目标"部分。场景层次结构的变换矩阵将为您完成其余的工作。