如何在地形上添加随机x,0,z移动到GameObjects?

时间:2015-11-22 05:48:43

标签: c# unity3d unityscript unity5

我对UnityScript和C#缺乏经验,我非常感谢能够学习的解决方案。

我想要的行为是拾取器在地形上随机移动,如果它们遇到刚体或静态物体,则改变方向。

我在这里尝试了“Wander.cs”脚本: http://wiki.unity3d.com/index.php/Wander

然而,在播放时,脚本会结束游戏对象,我无法纠正这个问题。此外,物体倾向于在角落中聚集而不是向前移动。

1 个答案:

答案 0 :(得分:0)

就我的理解而言,有两种可能性。

我没有尝试,但希望它有所帮助。

1-借助于圆的参数方程,即

<强> X = v.t.cos(THETA)
Y = v.t.sin(THETA)

在你的情况下:

x = v.t.cos(theta)+ xDistance
z = v.t.sin(theta)+ zDistance

其中 xDistance zDistance 是您身体的简单初始位置值。开始移动后(移动直到发生碰撞),这些值不会改变。

在更新()中,使用常数 v theta 将这些方程应用于您的身体,并增加 t(t ++或t + = 0.1f)按时间。当身体发生碰撞时,只需保留当前的平移(位置)值。然后再次开始移动,这次用当前值改变 xDistance zDistance 的值,但只改变一次。

2-借助 iTween 。它是Asset Store

提供的免费动画脚本

您可以使用iTween.MoveTo将身体移动到任何给定方向(您也可以指定随机方向)。并在碰撞时停止并重新开始运动。

相关问题