围绕y轴旋转游戏对象z度

时间:2017-12-19 06:25:00

标签: c# unity3d

我有一个游戏对象,它在z轴上倾斜x度,在x轴周围倾斜z度。我设法使用以下代码

public float xtilt, ztilt, ytilt;

//These virables are public float values for how much tilt or rotation I want. 
//xtilt for how much rotation when moving on the x axis. 
//ztilt for how much rotation when moving on the z axis. 
//ytilt for how much rotation when moving on the y axis.

void FixedUpdate()
{
  Rigidbody rb;
  rb.rotation = Quaternion.Euler(rb.velocity.z * ztilt, 0.0f, rb.velocity.x * -xtilt);
}

上面的代码给了我以下

  • 绕z轴移动时,GameObject旋转x度。
  • 围绕x轴移动时,GameObject旋转z度。

目的:

我想补充一点:围绕y轴旋转或倾斜游戏对象x度。

所以它会是这样的:

  • 围绕y轴移动时,GameObject旋转x度。

我试图绕过代码来实现这一点,但没有运气。

任何想法??

2 个答案:

答案 0 :(得分:0)

假设ztilt * rb.velocity.z = z degrees

如果您想使用zdegrees围绕Y轴旋转对象,是否应该取代Y参数?像这样:

rb.rotation = Quaternion.Euler(0f, rb.velocity.z * ztilt, 0f);

从统一文档中,欧拉函数的声明是:

public static Quaternion Euler(float x, float y, float z); 

答案 1 :(得分:0)

如果你想要z度,那么使用包含z值的变量:

替换

rb.velocity.y * ytilt

通过

rb.velocity.y * ztilt