我对UnityScript和C#缺乏经验,我非常感谢能够学习的解决方案。
我想要的行为是拾取器在地形上随机移动,如果它们遇到刚体或静态物体,则改变方向。
我在这里尝试了“Wander.cs”脚本: http://wiki.unity3d.com/index.php/Wander
然而,在播放时,脚本会结束游戏对象,我无法纠正这个问题。此外,物体倾向于在角落中聚集而不是向前移动。
答案 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将身体移动到任何给定方向(您也可以指定随机方向)。并在碰撞时停止并重新开始运动。