Как наносить урон игроку после каждой секунды, если он на шипах? - PullRequest
1 голос
/ 10 июля 2019

Я получил Спайков и булла onSpikes, который говорит, включен ли игрок в Спайкс или нет. В настоящее время здоровье постоянно ухудшается, если игрок на Spikes.

if(onSpikes)
    {
        health -= 0.01f;            
    }

Но я думаю, что это не очень хорошее решение, потому что я нахожусь в void Update (), и я в любом случае хотел, чтобы здоровье падало большими кусками (как -0.2f каждую секунду).

Я уже пытался создать Метод и использовать Invoke, но так мой игрок вообще не потерял здоровье. Код:

    private void Update(){
        Debug.Log("Player on Spikes: "+SpikeDMG.onSpikes);
        bar.localScale = new Vector3(health,1f);

        if(SpikeDMG.onSpikes)
        {
            Invoke("doDmg",1);

        }


        //Wenn leben unter 0 fällt ==> starte szene neu
        if(health <=0){
             int scene = SceneManager.GetActiveScene().buildIndex;
            SceneManager.LoadScene(scene, LoadSceneMode.Single);
            Time.timeScale = 1;
            SpikeDMG.onSpikes = false;
        }
    }

    void doDmg(){
        health -= 10/100;
    }

}

Спасибо всем, кто может помочь!

1 Ответ

2 голосов
/ 10 июля 2019

То, что вы хотите сделать, это использовать временную метку, когда должно быть выполнено ваше следующее действие. Это также описано здесь и здесь .

private float spikeDamageAt= 0.0f;

void update() {    
    if(onSpikes && Time.time >= spikeDamageAt) {
        health -= 0.01f;
        spikeDamageAt= Time.time + 1.0f; // for 1 seconds
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...