【发布时间】:2017-03-26 01:59:29
【问题描述】:
我已经阅读并了解错误本身的含义以及通常如何解决它,但是我不确定在我从两个不同的类创建两组不同的实例的情况下如何解决(比较如果两个矩形碰撞),如果它们发生碰撞 - 将一个从另一个移开。
public class NPCManager {
public NPCManager(int amountNPC, int NPCGap) {
//
populateNPCS();
}
public void update() {
for(RectNPC NPC : monsters)
if(ObstacleManager.NPCCollide(NPC.getRectangle())) { //NPCCollide is the error
//
}
}
(上)这是创建NPC实例的类,它应该使用如下所示的方法检查每个NPC。
public class ObstacleManager {
public ObstacleManager(int playerGap, int obstacleGap, int obstacleHeight, int color, int doorcolor) {
populateObstacles();
}
public boolean NPCCollide(RectNPC NPC) {
for(Obstacle ob : obstacles) {
if(ob.NPCCollide(NPC))
return true;
}
return false;
}
(上)这是创建障碍物实例的类,它应该使用下面的方法检查NPC是否碰撞。
public class Obstacle implements GameObject {
public Obstacle(int rectHeight, int color, int doorColor, int startX, int startY, int playerGap) {
//
}
public boolean NPCCollide(RectNPC NPC) {
/* Checks if the NPC inputted collides with the rectangles */;
}
(上)用于自己创建障碍的类。
使用了管理器,因此当游戏重新启动时,它可以按预期重新启动。
【问题讨论】:
-
您需要在
ObstacleManager的实例上调用NPCCollide。这取决于您是否意味着 (1)update将该对象作为参数,(2) 将其保留为实例字段,或者 (3) 在update中创建对象。
标签: java static-methods non-static