第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

對玩家的持續(xù)敵人傷害 - Unity 2019.1 Beta

對玩家的持續(xù)敵人傷害 - Unity 2019.1 Beta

C#
紫衣仙女 2022-06-12 16:31:56
基本上我有一個敵人和一個玩家。當(dāng)敵人或玩家相互碰撞時,會造成傷害并導(dǎo)致玩家受傷導(dǎo)致HP損失。但是,一旦接觸,它只會損壞一次。如何確保在整個碰撞過程中不間斷地對玩家造成傷害?我正在設(shè)置一個布爾變量 isTouching 并在接觸時將其設(shè)置為 true。然后設(shè)置一個while循環(huán),不斷減少玩家的HP。然后使用 OnCollisionExit 將 isTouching 設(shè)置為 false。private bool isTouching; // determines if the player is touchingprivate void OnCollisionEnter2D(Collision2D collision){    isTouching = true;        if (collision.gameObject.tag == "Enemy01")        {        while (isTouching == true)        {            GetComponent<AudioSource>().Play();            HPBAR.PlayHP -= Random.Range(5, 30);            if (HPBAR.PlayHP < 0)// Insures player HP bar doesn't read less             than zero in GUI TXT            {                HPBAR.PlayHP = 0;            }            // Debug.Log("Ouch! " + HPBAR.PlayHP + " Left");            if (HPBAR.PlayHP <= 0 && HPBAR.lives > 0)            {                HPBAR.lives--;                HPBAR.LPfloat--;                p5.transform.position = spawner.transform.position;                HPBAR.PlayHP = Random.Range(100, 150);                // Debug.Log("You're Dead!!! Lives left: " + (HPBAR.lives + 1));            }            else if (HPBAR.PlayHP <= 0 && HPBAR.lives <= 0)            {                SceneManager.LoadScene("DeathScene");            }        }//end of while        } // of player tag check}// end of collision enterprivate void OnCollisionExit2D(Collision2D collision){    isTouching = false;}while 循環(huán)會凍結(jié)我的計算機(jī),因此我不建議您在其中使用 while 循環(huán)運(yùn)行它。無論如何,我需要知道的是如何實(shí)現(xiàn)我想要做的事情。如何讓敵人不斷傷害玩家?例如,如果我跳到敵人的頂部,它會造成一次傷害,然后我可以騎著他。我希望不間斷地造成傷害,以迫使玩家最終離開或死亡。
查看完整描述

1 回答

?
翻閱古今

TA貢獻(xiàn)1780條經(jīng)驗(yàn) 獲得超5個贊

OnCollisionEnter2D旨在僅觸發(fā)發(fā)生相同碰撞的第一幀。


您想使用OnCollisionStay2D(),它會在每一幀發(fā)生碰撞時觸發(fā)。


此外,擺脫while循環(huán)。OnCollisionExit2D在方法終止之前,游戲無法更新(包括調(diào)用)。


private void OnCollisionStay2D(Collision2D collision)

{

    if (collision.gameObject.tag == "Enemy01")

    {

        GetComponent<AudioSource>().Play();


        // To take 5 - 30 damage per second:

        HPBAR.PlayHP -= Random.Range(5f,30f) * Time.deltaTime;


        if (HPBAR.PlayHP < 0)// Insures player HP bar doesn't read less than zero in GUI TXT

        {

            HPBAR.PlayHP = 0;


        }

        // Debug.Log("Ouch! " + HPBAR.PlayHP + " Left");

        if (HPBAR.PlayHP <= 0 && HPBAR.lives > 0)

        {

            HPBAR.lives--;

            HPBAR.LPfloat--;

            p5.transform.position = spawner.transform.position;

            HPBAR.PlayHP = Random.Range(100, 150);

            // Debug.Log("You're Dead!!! Lives left: " + (HPBAR.lives + 1));


        }

        else if (HPBAR.PlayHP <= 0 && HPBAR.lives <= 0)

        {

            SceneManager.LoadScene("DeathScene");

        }


    } // of player tag check


}// end of collision stay


private void OnCollisionExit2D(Collision2D collision)

{

    if (collision.gameObject.tag == "Enemy01")

    {

        // put "i quit touching the hurty thing" stuff here.

    }

}


查看完整回答
反對 回復(fù) 2022-06-12
  • 1 回答
  • 0 關(guān)注
  • 305 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號