C# 增加弹丸属性的电源

C# 增加弹丸属性的电源,c#,unity3d,game-development,C#,Unity3d,Game Development,我试图增加玩家的火球伤害,当一个电源被拿起。我得到一个对象引用错误,我很确定这是由于代码被链接到玩家的碰撞和火球有自己的脚本详细说明他们的速度,伤害等。 本质上,我需要一种方法来引用我的火球预置(称为Bullet),这样代码就可以访问“伤害”属性并在一段时间内增加它。 通电代码为:- private void OnTriggerEnter2D(Collider2D other) { if (other.CompareTag("Player"))

我试图增加玩家的火球伤害,当一个电源被拿起。我得到一个对象引用错误,我很确定这是由于代码被链接到玩家的碰撞和火球有自己的脚本详细说明他们的速度,伤害等。 本质上,我需要一种方法来引用我的火球预置(称为Bullet),这样代码就可以访问“伤害”属性并在一段时间内增加它。 通电代码为:-

    private void OnTriggerEnter2D(Collider2D other)
    {
        if (other.CompareTag("Player"))
        {
            Pickup(other);
        }
    }


    void Pickup(Collider2D player)
    {
        Instantiate(pickupEffect, transform.position, transform.rotation);


        
        Fire stats = GetComponent<Fire>();
        stats.damage *= 2; 

        Destroy(gameObject);
    }
}

**The code for the fireball prefabs (known as Fire) is:-**

    

public class Fire : MonoBehaviour
{
    public Animator animator;
    public float speed = 20f;
    public int damage = 30;
    public Rigidbody2D rb;
    public GameObject FireEmbers;
    public float liveTime = 1f;
    // Start is called before the first frame update
    void Start()
    
        {
       
        rb.velocity = transform.right * speed;
        }

   
    
    void OnTriggerEnter2D(Collider2D hitInfo)
        
        {
        Enemy enemy = hitInfo.GetComponent<Enemy>();
        if (enemy != null)
        {
            enemy.TakeDamage(damage);
        }
        
        Destroy(gameObject);
        Instantiate(FireEmbers, transform.position, Quaternion.identity);

    }

    void Update()
    {
        liveTime -= Time.deltaTime;
        if (liveTime <= 0)
        {
            Destroy(this.gameObject);
            Instantiate(FireEmbers, transform.position, Quaternion.identity);
        }
    }

}
私有无效OnTriggerInter2d(冲突r2d其他)
{
如果(其他比较标记(“玩家”))
{
皮卡(其他);
}
}
无效拾取(碰撞R2D播放器)
{
实例化(pickupEffect、transform.position、transform.rotation);
Fire stats=GetComponent();
统计伤害*=2;
摧毁(游戏对象);
}
}
**火球预制件(称为Fire)的代码为:-**
公共级火灾:单一行为
{
公共动画师;
公共浮子速度=20f;
公共int损害=30;
公共刚体2d rb;
公共游戏对象火炭;
公共浮动时间=1f;
//在第一帧更新之前调用Start
void Start()
{
rb.velocity=transform.right*速度;
}
无效OnTiggerEnter2D(碰撞R2D hitInfo)
{
敌方=hitInfo.GetComponent();
如果(敌人!=null)
{
敌人。遭受伤害(损害);
}
摧毁(游戏对象);
实例化(FireEmbers、transform.position、Quaternion.identity);
}
无效更新()
{
liveTime-=Time.deltaTime;

如果(liveTime我实际上通过使用可编写脚本的对象而不是将内容硬编码到预置中解决了这个问题。

错误发生在哪里?(哪一行)我假设您试图获取的组件不是游戏对象的一部分。
实例化
返回创建的对象。尝试使用该组件访问附加到预置的
激发
脚本。