Я пытаюсь реализовать "Стрелять" MonoBehaviour.Я хочу, чтобы он сделал что-то очень простое, он должен принять Prefab как «Input» (пока он хранится в публичной переменной «снаряд»), а затем просто создать его и добавить силу Forward к его RigidBody (относительнообъект, к которому он прикреплен, например, к танку).
Однако я не хочу, чтобы моя игра вылетала, если я случайно вставил префаб без RigidBody.(На самом деле было бы здорово, если бы он даже не позволял мне добавлять префабы без RigidBodies в качестве метательных снарядов).
Я пытался использовать атрибут «RequireComponent», но похоже, что он работает только дляклассы.Есть ли способ сделать это, не проверяя, есть ли у снаряда RigidBody каждый раз, когда я хочу его выстрелить?
Я попробовал код, приведенный ниже, но он выдает ошибку, говорящую, что я не могу установитьRigidBody как GameObject.Это понятно, но у меня заканчиваются идеи.
public class Shoot : MonoBehaviour
{
public Rigidbody projectile;
public float firePower = 5f;
public void Fire()
{
GameObject projectileInstance = Instantiate(projectile) as GameObject;
//maybe add some particles/smoke effect
projectile.GetComponent<Rigidbody>().AddForce(firePower * transform.forward);
}
}