当玩家死亡时,为什么没有显示粒子,它可以在它自己的情况下正常工作,但是当它击中一个受伤的物体时却没有? (我正在制作2D游戏)

问题描述 投票:0回答:1

我试图在我的播放器死亡并击中受伤物体时为其添加粒子效果。我已经测试了粒子效果本身及其工作正常。当玩家击中受伤物体时,粒子效果没有显示,但是我可以看到它正在通过侧边栏看到它死亡爆炸(克隆)(见附图)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();
        }
    }
}
unity3d particles
1个回答
0
投票

您在粒子系统生成之前将对象设置为非活动状态,因此不会发生这种情况。首先关闭对象的渲染器,而不是先设置非活动状态。

在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;
}

您可以修改此代码以满足您的需求!希望这可以帮助。

© www.soinside.com 2019 - 2024. All rights reserved.