Unity3d 平滑查看目标将禁用绕另一个轴旋转

Unity3d 平滑查看目标将禁用绕另一个轴旋转,unity3d,Unity3d,我在旋转3d对象时遇到问题。它是一个锁定在火箭上的装置,应该总是朝向它的目标,但也应该绕着它的x轴旋转 我使用以下代码使其平滑地查看目标: void SmoothLookAt (Vector3 target) { Vector3 difference = target - transform.position; float rotationZ = Mathf.Atan2(difference.y, difference.x) * Mathf.Rad2Deg; var ta

我在旋转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);
但这不是运气。我的火箭完全拒绝向前旋转,并按预期工作

提前谢谢

使用多个变换
因为有两种相互竞争的旋转类型,所以要使它们堆叠起来,唯一的方法是将每一种旋转指定给变换层次中的变换。使旋转部分成为朝向目标部分的注视的子对象。场景层次下面的变换矩阵将为您处理其余部分。

您有两个不同的函数来编写旋转。一个期望它不会改变自己的最后一次改变的人,一个迫使它改变特定方向的人。你以为会发生什么?我刚才说旋转不起作用,我想澄清一下我想要实现什么。你需要使用变换层次结构,你不能只是把两个旋转函数打碎在一起,然后期望它们起作用。@Draco18是的,这起作用了。如果你将此作为答复,我将接受