Почему частицы не отображаются, когда игрок умирает, он прекрасно работает сам по себе, но не когда он поражает поврежденный объект?(Я работаю над 2D игрой) - PullRequest
0 голосов
/ 27 февраля 2019

Я пытаюсь добавить эффект частицы к своему игроку, когда он умирает и поражает поврежденный объект.Я проверил эффект частиц самостоятельно и он работает нормально.Когда игрок ударяет по поврежденному объекту, эффект частиц не отображается, но я вижу, что он поражает его, глядя на боковую панель, на которой написано deathSplosion (Clone) (см. Прикрепленное изображение) менеджер уровней deathSposion .Я создал эффект частиц в качестве префаба и добавил его в levelManager (см. Прикрепленное изображение). Появляются смертельные случаи на боковой панели

Кто-нибудь знает, почему эффект частиц не появляется, когдаигрок попадает в поврежденный объект?Спасибо!

 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();
        }
    }
}

1 Ответ

0 голосов
/ 27 февраля 2019

Вы устанавливаете объект в неактивное состояние до того, как появится система частиц, поэтому этого не происходит.Вместо того, чтобы сначала устанавливать неактивное, просто сначала отключите рендеринг для объекта.

В случае 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;
}

Вы можете изменить этот код в соответствии со своими потребностями!Надеюсь, это поможет.

...