一旦新对象碰到边界,我就会在破坏旧对象后实例化它。该对象在正确的位置实例化并具有正确的行为,但是即使我已将其写入脚本,一个脚本也不会更新对新对象的引用。
碰撞事件:
void OnTriggerExit2D(Collider2D other)
{
if (other.GetComponent<Rigidbody2D>() == projectile)
{
Respawn();
Ammo -= 1;
SetAmmoCount();
Destroy(GO);
UpdateReferences();
}
}
UpdateReferences方法:
void UpdateReferences()
{
projectile = GameObject.FindGameObjectWithTag("Damager").GetComponent<Rigidbody2D>();
tran = GameObject.FindGameObjectWithTag("Damager").GetComponent<Transform>();
GO = GameObject.FindGameObjectWithTag("Damager");
}
每次我运行游戏时,它似乎都无法找到新对象。但是,我已经使用这种方法在同一对象的其他脚本中更新对象引用,并且它工作正常。不确定我做错了什么。
Respawn Method:
void Respawn()
{
GameObject.Instantiate(player, Vector3.zero, Quaternion.identity);
projectile.isKinematic = true;
isSpawned = true;
}
它编译我使用了一些坏名称来引用对象和事物。是的,我实例化的对象是预制件。
答案 0 :(得分:0)
将Respawn函数替换为:
void Respawn()
{
GameObject obj = GameObject.Instantiate(player, Vector3.zero, Quaternion.identity) as GameObject;
obj.tag = "Damager";
projectile.isKinematic = true;
isSpawned = true;
}