Метод "AddForce ()" не работает на моем объекте - PullRequest
0 голосов
/ 30 марта 2019

Я пытался добавить силу к объекту под названием «простой банан», но он не работает.Вот мой код:

simpleBanana.GetComponent<Rigidbody>().AddForce(Vector3.back * 10000f, ForceMode.Impulse);

Вставка "Debug.Log (" ... ");"на следующей строке работает.Масса объекта равна 1, объект не кинематический

1 Ответ

1 голос
/ 30 марта 2019

Первое и самое важное: таким образом, вы получаете твердое тело, что приведет к низкой производительности. GetComponent - очень дорогой метод, никогда не делайте это в Update, делайте это в void Setup, сохраняя его в объект типа RigidBody, как в справочнике по API:

https://docs.unity3d.com/ScriptReference/Rigidbody.AddForce.html

Второе: Я думаю, что это может быть проблема ссылки. У меня было много проблем с этим, когда я начинал. Убедитесь, что simpleBanana - это объект, который содержит RigidBody. Если ваша ссылка на этот RigidBody не перетаскивает его и не удаляет его, обязательно перейдите к simpleBanana перед применением GetComponent.

Например, если ваш скрипт включен в simplePotato и вы пытаетесь получить доступ к simpleBanana, сделайте что-то вроде этого:

RigidBody simpleBanana = GameObject.Find('simpleBanana').GetComponent<RigidBody>();

или, если simpleBanana является потомком simplePotato:

RigidBody simpleBanana = this.transform.GetChild(index_of_the_child).GetComponent<RigidBody>();

После получения правильной ссылки вы можете добавить любую силу, какую захотите.

Но не забывайте получать компоненты только при void Setup.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...