簡體   English   中英

在libgdx游戲中設置延遲

[英]set a delay in libgdx game

我有一個游戲(如超級跳投,這個游戲是一個跳躍游戲),我們的角色有生命。 與敵人發生碰撞后,他的生命減少了。 我想在1秒后計算碰撞。 我的意思是在這1秒內,如果我的角色與敵人接觸,沒有任何事情發生,他繼續他的方式。 為此,我在我的GameScreen類中定義了一個布爾變量,名為“collision”,另一個在Wolrd類中定義名為“collBirds”。 一次與敵人碰撞接觸后,collBirds變為true。 但我想在1秒后將collistion改為false。 我使用System.currentTimeMillis()和“for loop”之類的東西,但沒有任何反應。 我在java方面不太好。

這是我的條件:

if(World.collBirds == true && collition == false){
        life -= 1;
        lifeString = "Life : " + life;
        World.collBirds = false;
        collition = true;
        for (??? "need to stay here for 1 sec" ???) {
            collition = false;
        }
    }

在某些情況下,您還可以使用com.badlogic.gdx.utils.Timer

用法示例:

float delay = 1; // seconds

Timer.schedule(new Task(){
    @Override
    public void run() {
        // Do your work
    }
}, delay);

發生第一次碰撞時,設置float timeSinceCollision = 0;

然后每個循環,您需要將自上次檢查后的時間添加到變量,並檢查它是否超過一秒。

timeSinceCollision += deltaTime;
if(timeSinceCollision > 1.0f) {
    // do collision stuff
} else {
    // ignore the collision
}

如果你想在同一個線程中執行此操作,可以使用Thread.sleep()。 但在這種情況下,你的當前線程將凍結,如果這是單線程游戲,那么你的整個游戲將會凍結。 如果你不希望你的游戲凍結1秒,那么你應該產生線程並在該線程中調用睡眠並在睡眠后更改標志

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM