如何让Unity3d在桌面上移动对象?

时间:2013-04-15 19:12:25

标签: unity3d game-physics

我正在开发一款桌面游戏,用户使用手机中的加速度计进行控制。它与iOS上的Labyrinth非常相似。

场景包含使用平面和立方体创建的桌面,以及球体作为球。由于它在Labyrinth游戏中工作,倾斜的手机球应该落到倾斜的一侧,而相机保持在桌子中心。我试图做类似的事情,用户倾斜手机,桌子上的物体移动到倾斜的一侧。

目前,我在倾斜时将x和z组件添加到Physics.gravity。可悲的是,这种重力变化不会影响留在桌子上的球。选择使用重力作为球,并且它最初从高度下降到桌面然后停止。在初始下降之后,球不会对任何重力变化做出反应。

我也试过旋转整个表,但是使用transform.rotate也不起作用。桌子与摄像机一起完美旋转,但球悬挂在空中。所以,目前我对这个问题不够深入。

是否有任何其他方式允许倾斜动作记录,以便球移动到倾斜方向?我不能使用addforce功能,因为有多个对象需要对倾斜作出反应,并且很难跟踪那么多addforce调用。我怎么能让它运作起来?

1 个答案:

答案 0 :(得分:1)

有关相关信息,请参阅this post

至于你的球体粘在桌子上的原因,我可以假设你的球体有一个刚体吗?如果是这样,您需要将其唤醒:

  

if(rigidbody.IsSleeping())rigidbody.WakeUp();

理想情况下,只有在检测到方向/重力的变化后才会进行该调用,而不是每一帧。