[英]Java objects escaping window frame
所以我做了一個游戲,我希望敵人以隨機的 x 和 y 速度擊中時從牆上反彈。 然而,不知怎的,這些小家伙們仍然逃出了窗外。 大多數情況下它都有效,但每隔 10 次它就會偷偷溜出邊界,我不知道怎么做。
@Override
public void tick()
{
x += speedX;
y += speedY;
Random r = new Random();
//BUGS
if(y <= 0 || y >= Game.HEIGHT - 48) //This is correct size of the window edges
{
if(speedY <= 0)
speedY = (r.nextInt(8) + 1);
else
speedY = -(r.nextInt(8) + 1);
}
if(x <= 0 || x >= Game.WIDTH - 32) //This is correct size of the window edges
{
if(speedX <= 0)
speedX = (r.nextInt(8) + 1);
else
speedX = -(r.nextInt(8) + 1);
}
問題:
y >= Game.HEIGHT - 48
,做y >= Game.HEIGHT - WINDOW_EDGES
(或類似的東西)y <= 0
或y >= Game.HEIGHT -SOME_CONSTANT
,並根據此發現調整結果以避免陷入速度“陷阱”。 這實際上是你的主要問題。例如,
if (y <= 0) {
speedY = r.nextInt(8) + 1; // change 8 to a constant
} else if (y >= Game.HEIGHT - SOME_CONSTANT) {
speedY = -(r.nextInt(8) + 1);
}
x 和 speedX 相同
關於:
2)我想這樣做,但由於我有多個對象大小,我必須改變邊緣。
然后每個對象都應該有一個方法來返回它的邊緣大小(或任何需要的屬性),你應該再次使用這個,而不是幻數
3)我嘗試交換,他們只是從屏幕上開槍。
我不知道您的意思是什么,或者您可能進行了哪些特定的代碼更改。
如果仍然卡住,請考慮創建並發布有效的最小可重現示例
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.