0
這是一個12年級的面向對象編程項目。需要關於突破遊戲球速度的幫助
我有一個叫Ball的類來構造我的球對象。
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.*;
public class Ball{
private double xPos;
private double yPos;
private int direction;
public Ball(int ixPos, int iyPos, int idirection){
xPos = ixPos;
yPos = iyPos;
direction = idirection;
}
public int returnX(){
return (int)xPos;
}
public int returnY(){
return (int)yPos;
}
public int returnDirection(){
return direction;
}
public void move(){
xPos += 1*Math.cos(Math.toRadians(direction));
yPos -= 1*Math.sin(Math.toRadians(direction));
}
public void collide(int collideWith){
if(collideWith==1){//collide with left wall
if(90<direction && direction<180){
direction = 180-direction;
}
if(180<direction && direction<270){
direction = 540-direction;
}
}
if(collideWith==2){//collide with right wall
if(0<direction && direction<90){
direction = 180-direction;
}
if(270<direction && direction<360){
direction = 540-direction;
}
}
if(collideWith==3){//collide with up wall
if(0<direction && direction<90){
direction = 360-direction;
}
if(90<direction && direction<180){
direction = 360-direction;
}
}
if(collideWith==4){//collide with down wall
direction = 360-direction;
}
}
public void collidePaddle(int collidePos){
if(collidePos!=50 && collidePos!=0){
direction = (50-collidePos)*180/50;
}
}
}
正如您在「移動」功能中看到的那樣,現在球速度非常低。但我需要球更快。如果我將1改爲5,那麼會出現問題。在我的主類中,它檢查球是否撞牆或阻擋塊以改變方向,如果球每次可以移動的像素數量大於1,則球將進入牆或塊。
對我來說,似乎沒有辦法解決這個問題,不知道從哪裏開始思考,有沒有更好的方法來檢查碰撞或什麼?
謝謝。
感謝您的回答。 – 2013-02-14 02:17:41
我不知道我是否提出了足夠好的問題,但對我而言,我沒有詢問有關槳的任何事情......你能告訴我你問我的問題....因爲我尋求幫助將球固定在牆上,當速度過高時阻擋,而不是撞擊槳後的方向。 – 2013-02-14 02:19:49
是的,看來你正在檢查一個絕對的位置,而不是允許流浪者。隨着速度的增加,你不能依靠球的邊緣與任何物體的邊緣完全相遇的事實。相反,你需要看看它的任何部分是否已經擊中了世界上任何可能的部分(包括重疊)。 – MadProgrammer 2013-02-14 02:26:03