我试图在我的播放器死亡并击中受伤物体时为其添加粒子效果。我已经测试了粒子效果本身及其工作正常。当玩家击中受伤物体时,粒子效果没有显示,但是我可以看到它正在通过侧边栏看到它死亡爆炸(克隆)(见附图)deathSposion level manager。我已经将粒子效果创建为预制件并将其添加到levelManager(参见附图).Side bar death sposions appearing
有没有人知道为什么当玩家遇到伤害物体时粒子效果不会出现?谢谢!
public class LevelManager : MonoBehaviour {
public float waitToRespawn;
public PlayerController thePlayer;
public GameObject deathSplosion;
// Use this for initialization
void Start () {
thePlayer = FindObjectOfType<PlayerController>();
}
// Update is called once per frame
void Update () {
}
public void Respawn()
{
StartCoroutine("RespawnCo");
}
public IEnumerator RespawnCo()
{
thePlayer.gameObject.SetActive(false);
Instantiate(deathSplosion, thePlayer.transform.position,
thePlayer.transform.rotation);
yield return new WaitForSeconds(waitToRespawn);
thePlayer.transform.position = thePlayer.respawnPosition;
thePlayer.gameObject.SetActive(true);
}
这是我的代码也适用于玩家重生的时候。
public class hurtPlayer : MonoBehaviour {
private LevelManager theLevelManager;
// Use this for initialization
void Start () {
theLevelManager = FindObjectOfType<LevelManager>();
}
// Update is called once per frame
void Update () {
}
void OnTriggerEnter2D(Collider2D other)
{
if(other.tag == "Player")
{
theLevelManager.Respawn();
}
}
}
您在粒子系统生成之前将对象设置为非活动状态,因此不会发生这种情况。首先关闭对象的渲染器,而不是先设置非活动状态。
在2D游戏的情况下:
public IEnumerator RespawnCo()
{
thePlayer.gameObject.GetComponent<SpriteRenderer>.enabled = false;
Instantiate(deathSplosion, thePlayer.transform.position,
thePlayer.transform.rotation);
yield return new WaitForSeconds(waitToRespawn);
thePlayer.transform.position = thePlayer.respawnPosition;
thePlayer.gameObject.GetComponent<SpriteRenderer>.enabled = true;
}
您可以修改此代码以满足您的需求!希望这可以帮助。