processingのjavaを使用して、シューティングゲームを制作しています。
自機の操作、敵の出現、弾の発射まではできた状態です。
ここから、自分が発射した弾に敵が当たった時に敵と弾が消滅するような処理を加えたいです。
色々調べてみたり、試行錯誤はしてみたのですが、どこに入れればよいのか、また具体的にどのような処理を行えば良いのかがわからず、苦戦しています。よろしくお願い致します。
ENEMY enemy[]; HIKOU hikou; HAIKEI haikei[]; ArrayList<SHOT> shotList = new ArrayList<SHOT>(); PImage png; int N = 100; int n = 5; void setup() { size(300, 600); frameRate(30); rectMode(CENTER); noCursor(); png = loadImage("hikou.png"); png = loadImage("enemy.png"); hikou = new HIKOU(); haikei = new HAIKEI[N]; for (int i = 0; i < N; i++) { haikei[i] = new HAIKEI(); } enemy = new ENEMY[n]; for (int i = 0; i < n; i++) { enemy[i] = new ENEMY(); } } void draw() { background(0); for (int i = 0; i < N; i++) { haikei[i].draw(); } for (int i = 0; i < n; i++) { enemy[i].draw(); } for (int i=shotList.size ()-1; i>=0; i--) { SHOT t = shotList.get(i); if (t.isAlive()) { t.move(); t.display(); } else { shotList.remove(i); } } hikou.move(mouseX, mouseY); hikou.display(); PImage hikoupng = loadImage("hikou.png"); image(hikoupng, mouseX - 15, mouseY - 32); } void mousePressed() { shotList.add(new SHOT(hikou.x, hikou.y)); } class HIKOU { float x, y; float size; HIKOU() { size = 10; } void move(float _x, float _y) { x = _x; y = _y; } void display() { } } class SHOT { float x; float y; float size; float speed; SHOT(float _x, float _y) { x = _x; y = _y; size = 6; speed = 15; } void move() { y -= speed; } void display() { stroke(0); fill(255, 0, 0); rect(x, y, size, size); } boolean isAlive() { if (x+size/2<0 || width<x-size/2 || y+size/2<0 || height<y-size/2) { return false; } return true; } } class HAIKEI { float y; float x; float vy = 10; float len; HAIKEI() { init(); y = random(-height, height); } void init() { y = random(-2*height, -1); x = random(0, width); vy = random(10, 18); len = random(15, 25); } void draw() { stroke(200);//color line(x, y, x, y+len); update(); } void update() { y += vy; if (height < y+len) { init(); } } } class ENEMY { float y; float x; float vy = 5; float len; ENEMY() { init(); y = random(-2 * height, -height); } void init() { y = random(-20); x = random(20, width - 20); len = random(20, 35); } void draw() { PImage enemypng = loadImage("enemy.png"); image(enemypng, x, y); update(); } void update() { y += vy; if (height + 40 < y+len) { init(); } } }
「色々調べてみたり、試行錯誤はしてみた」の結果を質問文に反映した方がいいでしょう。まずは調べた結果を元にしてコードを少しでも組み込んでみてはどうでしょう(正しく動かなくてもよく、やろうとしてることを示すのが大事)。オブジェクトの衝突判定に関する情報はネット上にいっぱいあると思います。現状だと作業依頼に近い感じで、アドバイスするにしてもとっかかりがない感じです。
あと、ソースコードのインデントが効いてないので、現状だと回答者の方がソースコードを読む気にならないと思います。こちらも合わせて修正された方が良いと思います。
ご意見ありがとうございます。
おっしゃる通りです。もう一度一から調べ直して、自己解決できるよう努力してみます。
自己解決までしなくても、まずは回答者がアドバイスできるところまででいいと思いますよ。調べた内容、そしてそれをソースコード内に組み込む方法を自分なりに考えて、それを質問文内で表現すれば何かしらの回答は来ると思います。
ご返信ありがとうございます。
了解です。もう少し考えて、質問し直したいと思います。
ご迷惑おかけしました。
質問のテンプレートに「試したこと」とあるのは、決して「ボク頑張りました」のアピールのためではなく、
「こういうことを試したら」「こういう結果が得られた」
という情報が解決に役立つことがあるからです。
「調べた」「試行錯誤した」だけではなく、
何を調べたのか、それについてどう考えたのか
何を試行錯誤したのか、その時なにが起こったか
を書いてください。
ご返信ありがとうございます。
了解です。考えがまとまりましたら、修正したいと思います。
回答1件
あなたの回答
tips
プレビュー

