Исходя из того, что вы пытаетесь, я предполагаю, что вы пытаетесь добавить силу к объекту, с которым он столкнулся.
Прежде всего, вы сделали:
if (myCollision.gameObject.name == "Cube")
{
var = GameObject.Find("Cube");
var.AddForce(new Vector3(0.0f, 0.0f, power));
}
Старайтесь избегать GameObject.Find(string)
метода, так как это дорогой вызов.
На самом деле вам даже не нужно этого делать, поскольку у вас уже есть игровой объект, с которым вы уже сталкиваетесь, это то, чтоmyCollision
для.
Вы можете сделать это вместо этого:
if (myCollision.gameObject.name == "Cube")
{
var = myCollision.gameObject; // Aka the gameobject you have collided with.
var.AddForce(new Vector3(0.0f, 0.0f, power));
}
Возвращаясь к вопросу , вы пытались добавить силу ктвердое тело, но, однако, var
имеет тип GameObject
, а не RigidBody
.
Что вам нужно сделать, это получить компонент RigidBody
из GameObject
, например, так:
var.GetComponent<Rigidbody>().AddForce(...
Обратите внимание, что исключение нулевой ссылки возникает, если к GameObject не подключен компонент Rigidbody.
Убедитесь, что куб, с которым вы сталкиваетесь, имеет компонент RigidBody в Инспекторе Unity.
Также вы можете заметить, что повторные вызовы GetComponent()
могут быть дорогими.Вы можете рассмотреть возможность кэширования, если это возможно.