我正在创建一个基本游戏,需要在drawObstacle 和drawRocketShip 方法之间实现碰撞检测。我需要检查一种方法是否创建与另一种方法重叠的图像。由于我使用了一些随机化和位置相似性检查,为了简洁起见,这些检查没有被分成不同的类。如果需要,我可以进一步详细说明,但我认为一开始就不一定需要。
public class SideScrollGame extends PApplet {
// Variables determining motion, window size, etc.
public float rock1;
public float rock2;
public float rock3;
public float rock4;
public float rock5;
public void setup(){
size(width,height);
//rock1 to rock5 are randomized values determining height.
}
public void draw(){
moveShip();
moveRock();
drawObstacle(rock1, 3);
drawObstacle(rock2, 3);
drawObstacle(rock3, 3);
drawObstacle(rock4, 3);
drawObstacle(rock5, 3);
translate(x,y);
// Code behind motion omitted for sake of brevity. It just moves the
// ship up and down across the Processing applet
drawRocketShip();
// drawObstacle and drawRocketShip create composite images using the
// ellipse(), rect(), and triangle() functions.
}
}
最佳答案
您也许可以使用 get()
函数来做到这一点。您可以在the reference中找到更多信息,但基本上它允许您获取特定像素的颜色。您可以基于此执行一些逻辑。
但说实话,这不是你应该考虑的方式。您不应将碰撞检测基于实际绘制的内容,而应将碰撞检测基于存储在内存中的一组形状。对于大多数情况,简单的圆形或矩形就可以了。
如果您使用 translate()
函数绘制所有内容,这会变得更加复杂,但您可以使用 screenX()
将坐标转换为屏幕坐标,并且screenY()
函数。同样,更多信息可以在 the reference 中找到。 .
无耻的 self 推销:我在Processing中写了一篇关于碰撞检测的教程here ,但互联网上有大量资源。
如果您仍然遇到问题,请将问题范围缩小到 MCVE我们将从那里开始。祝你好运。
关于java - 有没有办法使用 Java 处理检查一个方法是否覆盖另一种方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44834930/