私は読んで、エラー自体の意味と一般的な解決方法を理解していますが、 2つの異なるクラスからインスタンスの2つの異なるセットを作成しています(2つの長方形が衝突している場合と比較して)。静的コンテキストからの非静的メソッド[クラスインスタンスの2つのセットの比較]
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'内にオブジェクトを作成するかどうかをあなた次第です。 – 4castle