【问题标题】:My rotation is weird我的旋转很奇怪
【发布时间】:2017-01-02 06:17:45
【问题描述】:

我希望我的对象选择随机方向,旋转到它,然后跟随它一段时间。在此之后再重复一遍。这是我选择方向的代码

private void ChooseDirection() {
    // create a random angle from 0.0 to 360.0, Remap is a simple function for it
    float angle = Utils.Remap (Random.value, 0.0f, 1.0f, 0.0f, 360.0f);
    transform.Rotate (Vector3.up, angle);
    print (angle + " : " + transform.rotation.eulerAngles.y);

}

上面的代码在控制台产生以下输出

38.12973 : 38.12972

283.771 : 321.9007

295.227 : 257.1267

142.9637 : 40.09043

178.7077 : 218.7981

126.3595 : 345.1576

347.749 : 332.9065

250.1977 : 223.1042

243.5038 : 106.608

252.1878 : 358.7958

20.00817 : 18.804

如您所见,实际旋转角度不是随机选择的角度。结果,我的对象没有面向它移动的方向。

【问题讨论】:

  • 您没有设置旋转。你在旋转。 (即将选择的旋转添加到变换的现有旋转中。)
  • 我更改了代码,现在角度匹配了。我仍然遇到对象朝向错误方向的问题。我将尝试将角度设置为已知值,例如 0、10、45、90 ... 并查看它如何移动
  • 我发现了我的问题。在Translate 函数中,我使用了transform.forward。我应该使用Vector3.forward。我的错,你不能解决我的问题,因为我没有发布我的移动代码

标签: c# unity3d rotation


【解决方案1】:

您当前只是旋转对象,而不是设置其旋转。而不是 transform.Rotate(...) 你应该使用:

transform.rotation = Quaternion.Euler(0, 0, angle);

【讨论】:

    猜你喜欢
    • 2012-02-15
    • 2019-09-06
    • 2012-12-25
    • 1970-01-01
    • 1970-01-01
    • 2011-11-01
    • 2015-07-08
    • 1970-01-01
    • 2015-10-31
    相关资源
    最近更新 更多