【发布时间】:2019-03-27 20:34:48
【问题描述】:
我正在尝试实现“Shoot”MonoBehaviour。 我希望它做一些非常简单的事情,它应该将 Prefab 作为“输入”(暂时将其存储在“projectile”公共变量中),然后简单地实例化它并为其 RigidBody 添加一个 Forward 力(相对于它附加到的对象,例如坦克)。
但是,如果我不小心插入了没有 RigidBody 的 Prefab,我不希望我的游戏崩溃。 (事实上,如果它甚至不允许我添加没有 RigidBody 的 Prefab 作为射弹,那就太好了。
我尝试过使用“RequireComponent”属性,但它看起来只适用于类。有什么方法可以做到这一点,而不必在每次我想射击时检查 Projectile 是否有刚体?
我尝试了下面的代码,但它给了我一个错误,说我不能将刚体实例化为游戏对象。这是可以理解的,但我的想法已经用完了。
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);
}
}
【问题讨论】:
标签: unity3d components instantiation gameobject