[英]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.