2016-05-25 3 views
0

У меня есть rigidBody, она придает игре объект, как это:RigidBody gravityScale не работает

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; 
} 

я вижу в журналах сообщение„Stop Point“, который уведомляет меня, что сила тяжести должна быть остановлена, но ничего не происходит, и объект все еще идет вниз, что я делаю неправильно?

ответ

0

GravityScale указывает, сколько гравитации влияет на ваш объект. Если ваш объект находится в движении, его скорость, а сила тяжести равна 0, только скажите, что не добавляйте силу в свой игровой объект, а не останавливайте это. Подумайте, что с силой тяжести 0 похож на объект во внешнем пространстве, но со скоростью его никогда не останавливают. Используйте Addforce или Set speed, чтобы остановить ваш объект.

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

//Ensure not move 
body.Sleep() 
+1

Да, это разрешило мою проблему: body.velocity = new Vector2 (0, 0); \t \t \t body.angularVelocity = 0f; спасибо, а также: я буду задавать некоторые вопросы о базовом единстве, поэтому вы можете помочь мне и получить легкую репутацию)) –

+0

вы можете гарантировать, что не переместите mm, добавив последнюю строку кода с body.Sleep(); Я редактирую свой пост, добавляя это – joreldraw

+0

angularVelocity - это float, а не Vector, и это 2D-объект, поэтому скорость Vector2, но я понял вас, спасибо –

Смежные вопросы