问题描述
我正在尝试在加电时增加玩家火球的伤害。我收到一个对象引用错误,我很确定这是由于代码被链接到玩家的碰撞中,并且火球有自己的脚本,详细说明了它们的速度,损坏等。 本质上,我需要一种方法来引用我的火球预制件(称为子弹头),以便代码可以访问“损坏”状态并在一段时间内增加它。 开机代码为:-
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,Quaternion.identity);
}
void Update()
{
liveTime -= Time.deltaTime;
if (liveTime <= 0)
{
Destroy(this.gameObject);
Instantiate(FireEmbers,Quaternion.identity);
}
}
}
解决方法
我实际上是通过使用可编写脚本的对象而不是将事物硬编码到预制件中来解决此问题的。