我正在制作一个特朗诺游戏并拥有除了碰撞之外的所有东西。目前正在通过MVC(因为它是一个AP Compsci项目),我遇到了路径和自行车之间的碰撞问题。我的想法是在与它碰撞的赛车上有一个观点(前点)。使用点列表绘制光迹,第一个点是起点,并且在赛车转弯时添加每个点。最后一点是自行车的当前位置。它在paintComponent中的每个点之间绘制一条线,并且还使用Line类中的方法(包含点的arraylist)来检查碰撞。到目前为止,我已经尝试查看前点是否在任何轴上(即,如果x或y值等于线上任何相应的x或y p值),然后检查相反的坐标并检查如果x或y位于该轴上两点的x或y之间,则返回true或false。这就是我的意思:
public boolean checkPoint(Point p)
{
for(int k = points.size() - 1; k > 0;k -= 2)
{
//if the x's are the same ( vertical ), check if within y's
if(p.getX() == points.get(k).getX() && p.getX() == points.get(k - 1).getX())
{
if(points.get(k).getY() > points.get(k - 1).getY()){
if(p.getY() < points.get(k).getY() && p.getY() > points.get(k-1).getY())
return true;
}
if(points.get(k).getY() < points.get(k - 1).getY()){
if(p.getY() > points.get(k).getY() && p.getY() < points.get(k-1).getY())
return true;
}
}
// if the y's are the same (horizontal), check if within x's
if(p.getY() == points.get(k).getY() && p.getY() == points.get(k - 1).getY())
{
if(points.get(k).getX() > points.get(k - 1).getX()){
if(p.getX() < points.get(k).getX() && p.getX() > points.get(k-1).getX())
return true;
}
if(points.get(k).getX() < points.get(k - 1).getX()){
if(p.getX() > points.get(k).getX() && p.getX() < points.get(k-1).getX())
return true;
}
}
}
}
游戏要么在几秒钟之后运行得非常慢并且有效,要么根本不起作用。我是朝着正确的方向前进的,我该怎么办呢?