试图在击中后墙时摧毁玩家。当玩家从一开始就在场景中时效果很好;球;
但它并没有摧毁一个球的克隆,调试。日志仍然像第一次一样运行,每次它碰到墙时都会被调用,但为什么它没有摧毁这个对象呢?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");
}