質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Processing

Processingは、オープンソースプロジェクトによるCGのためのプログラミング言語です。Javaをベースにしており、グラフィック機能に特化しています。イメージの生成やアニメーションなど、視覚的なフィードバックを簡単に得ることが可能です。

Q&A

解決済

1回答

1031閲覧

当たり判定が上手くいかない

likuson

総合スコア34

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Processing

Processingは、オープンソースプロジェクトによるCGのためのプログラミング言語です。Javaをベースにしており、グラフィック機能に特化しています。イメージの生成やアニメーションなど、視覚的なフィードバックを簡単に得ることが可能です。

0グッド

0クリップ

投稿2020/12/19 05:28

前提・実現したいこと

prcessingで簡単なホッケーゲームを作成しています。
barとballの当たり判定をif文で作成したのですが、
当たり判定ができていません

発生している問題・エラーメッセージ

エラーメッセージはありません

該当のソースコード

processing

1float x_speed=5.0 ,y_speed=5.0 ,bar_speed=5.0; 2float Lbar_x=70, Lbar_y=250; 3float Rbar_x=730, Rbar_y=250; 4float ball_x=400, ball_y=250, ball_r=30; 5boolean w,s,up,down; 6 7void setup(){ 8 size(800,500); 9} 10 11void keyPressed() {//キーを押した時 12 if (key == 'w') w = true; 13 if (key == 's') s = true; 14 if (keyCode == UP) up = true; 15 if (keyCode == DOWN) down = true; 16} 17 18void keyReleased() {//キー離した時 19 if (key == 'w') w = false; 20 if (key == 's') s = false; 21 if (keyCode == UP) up = false; 22 if (keyCode == DOWN) down = false; 23} 24 25void draw(){ 26 background(112); 27 Lbar(); 28 Rbar(); 29 ball(); 30} 31 32void Lbar(){ 33 fill(255,0,0); 34 rectMode(CENTER); 35 if (w) {//上に移動 36 Lbar_y -= bar_speed; 37 } 38 if (s) {//下に移動 39 Lbar_y += bar_speed; 40 } 41 if(Lbar_y<40){//上部barのstop 42 Lbar_y=40; 43 } 44 if(Lbar_y>460){//下部barのstop 45 Lbar_y=460; 46 } 47 rect(Lbar_x,Lbar_y,20,80); 48} 49 50void Rbar(){ 51 fill(0,0,255); 52 rectMode(CENTER); 53 if (up) {//上に移動 54 Rbar_y -= bar_speed; 55 } 56 if (down) {//下に移動 57 Rbar_y += bar_speed; 58 } 59 if(Rbar_y<40){//上部barのstop 60 Rbar_y=40; 61 } 62 if(Rbar_y>460){//下部barのstop 63 Rbar_y=460; 64 } 65 rect(Rbar_x,Rbar_y,20,80); 66} 67 68void ball(){ 69 fill(255); 70 ellipse(ball_x,ball_y,ball_r,ball_r); 71 ball_x+=x_speed; 72 ball_y+=y_speed; 73 if(ball_x>width-ball_r/2||ball_x<ball_r/2){//壁の跳ね返り 74 x_speed=-x_speed; 75 } 76 if(ball_y>height-ball_r/2||ball_y<ball_r/2){ 77 y_speed=-y_speed; 78 } 79 //barとの当たり判定 80 if(ball_x/2==730){ 81 if(Rbar_y<=ball_y){ 82 if(ball_y<=Rbar_y+80){ 83 x_speed=-x_speed; 84 y_speed=-y_speed; 85 } 86 } 87 } 88}

試したこと

//barとの当たり判定という所が該当箇所です。
条件式を見直しましたが、間違えていないと思います。

補足情報(FW/ツールのバージョンなど)

windows10 processing3.5.4

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

if(ball_x/2==730)の部分が間違えていました
正しくはif(ball_x+1/2==730)でした。
お騒がせしました。

投稿2020/12/19 05:34

likuson

総合スコア34

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

fumu7

2020/12/19 05:54

if(ball_x+ball_r/2==730) ではないのですか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問