[英]Figuring Out a Java Method in a Simple Pong Game
我指的是以下開源Android Pong游戲: https : //github.com/Grarak/Pong-Android/tree/master/app/src/main/java/com/grarak/pong
通過調試代碼並查看根據屏幕上發生的情況觸發的方法和條件,我可以了解所有方法及其工作方式。 但是,在整個項目中有一種方法我無法弄清其目的,盡管每當球碰到屏幕邊緣時都會大量使用它。 我只是不知道為什么要這樣計算,其算法的邏輯是什么。
有問題的方法名為“ getVelocityY”,它在頁面底部: https : //github.com/Grarak/Pong-Android/blob/master/app/src/main/java/com/grarak/pong/ Ball.java
將不勝感激,您可以在解決這一問題上提供任何幫助。 我很樂意回答您可能遇到的任何問題,如果您希望我用簡單的英語記錄該項目的其他方法,以防您需要。
這是該方法的細目分類,即使對於SO而言這並不是真正合適的問題。
private double getVelocityY(Paddle paddle, float radius) {
設置5個擊打框以確定球在哪個區域擊中槳
Float[][] hitboxes = new Float[5][2];
for (int i = 0; i < hitboxes.length; i++) {
計算此命中框的最小和最大位置
hitboxes[i][0] = (paddle.getLength() / hitboxes.length) * i + paddle.getHeight();
hitboxes[i][1] = (paddle.getLength() / hitboxes.length) * (i + 1) + paddle.getHeight();
擴展邊緣的擊打框,以確保球的edgeo(具有給定的半徑)仍會擊中球拍。 注意:此代碼可能已移出迭代。
if (i == 0) hitboxes[i][0] -= radius;
else if (i == hitboxes.length - 1) hitboxes[i][1] += radius;
}
根據球擊中槳葉的位置確定速度變化。 如果到達中心,則速度不變。
for (int i = 0; i < hitboxes.length; i++) {
if (position.y > hitboxes[i][0] && position.y < hitboxes[i][1])
switch (i) {
case 0:
return -4;
case 4:
return 4;
case 1:
return -2;
case 3:
return 2;
}
}
return 0;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.