实例化碰撞输入时未被销毁的克隆



试图在击中后墙时摧毁玩家。当玩家从一开始就在场景中时效果很好;球;

但它并没有摧毁一个球的克隆,调试。日志仍然像第一次一样运行,每次它碰到墙时都会被调用,但为什么它没有摧毁这个对象呢?ballClone是一个预制件。

有什么建议吗?

public class BackWall : MonoBehaviour
{
public GameObject ball;

public static bool playerDestroyed = false;

public GameObject ballClone;

public void Spawn()
{
GameObject playerclone = Instantiate(ballClone, new Vector3(-1.5f, 1.1f, -8f), 
Quaternion.identity);
playerDestroyed = false;
Destroy(ballClone, 10);

StartCoroutine(waittoDestroy(7));
}
IEnumerator waittoDestroy(float time)
{
yield return new WaitForSeconds(time);
playerDestroyed = true;
}

public void OnCollisionEnter (Collision other)
{

if (other.gameObject.tag == "Player")
{
Destroy(ball);
Destroy(ballClone);


playerDestroyed = true;
Debug.Log("Ball should be destroyed");
}

}
}

正如您所描述的,听起来您正试图摧毁预设资产ballClone

您更希望销毁的是创建的此预制件的实例playerclone

您可能应该存储此实例引用并使用例如

GameObject playerclone;
public void Spawn()
{
playerclone = Instantiate(ballClone, new Vector3(-1.5f, 1.1f, -8f), Quaternion.identity);
playerDestroyed = false;
Destroy(playerclone, 10);  
StartCoroutine(waittoDestroy(7));
}
IEnumerator waittoDestroy(float time)
{
yield return new WaitForSeconds(time);
playerDestroyed = true;
}  
public void OnCollisionEnter (Collision other)
{
if (!other.gameObject.CompareTag ("Player")) return;

Destroy(ball);
Destroy(playerclone);       

playerDestroyed = true;
Debug.Log("Ball should be destroyed");
}

最新更新