RigidBody gravityScale无法正常工作

时间:2016-05-25 10:39:06

标签: android unity3d

我有rigidBody,它附加到游戏对象上:

obj = GameObject.Find ("spider");
body = obj.AddComponent<Rigidbody2D> ();
body.angularVelocity = 180f;

所以它正在通过重力影响从屏幕向下移动,但我希望它在某个时刻停止,所以我做了一个条件:

if (obj.transform.position.y < 0) {
    Debug.Log("Stop point");
    body.gravityScale = 0.0f;
}

我在日志中看到消息“停止点”,它通知我应该停止重力,但没有任何事情发生,物体仍在下降,我做错了什么?

1 个答案:

答案 0 :(得分:0)

GravityScale表示重力对物体的影响程度。如果你的物体处于移动状态,它的速度和重力为0只表示不会给你的游戏物体增加力量,而不是停止它。认为重力0与外太空中的物体类似,但速度永远不会停止。 使用Addforce或Set velocity来停止对象。

body.velocity = Vector2.zero;
body.angularVelocity = 0.0f;

//Ensure not move
body.Sleep()