2017-01-02 75 views
1

我希望我的对象选择随机方向,旋转到它,然后遵循一段时间。之后再重复一遍。这是我的用于选择方向我的轮换很奇怪

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

您没有设置旋转。你在旋转。 (即将所选旋转添加到变换的现有旋转中。) – Abion47

+0

我更改了代码,现在角度匹配。我仍然有问题,该对象正面临错误的方向。我会尝试设置已知值的角度,例如0,10,45,90 ...并查看它是如何移动的 – sasha199568

+0

我发现我的问题。在'Translate'函数中,我使用了'transform.forward'。我应该使用'Vector3.forward'。我的坏,你不能解决我的问题,因为我没有发布我的移动代码 – sasha199568

回答

3

您目前只是在旋转对象,未设置其旋转角度。而不是transform.Rotate(...)您应该使用:

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