###前提・実現したいこと
https://www.youtube.com/watch?v=5mGuCdlCcNM&t=24105s
上記動画のようなものを作りたいと考えていて、ロゴが四隅に当たった時(上下の衝突判定が同時に行われた際)にロゴを画面中央に新たに1つ描画したい。
PImage img; // 画像 画像サイズはwidth262,height120 float x_pos,y_pos; // 画像の初期位置 float x_speed = 5; // 画像の移動速度(横) float y_speed = 5; // 画像の移動速度(縦) float r,g,b; // 反射時の色変更 int n = 1; // ロゴの数 float x_direction = random(-1,1); // 右か左か float y_direction = random(-1,1); // 上か下か void setup(){ size(1280,720); frameRate(60); img = loadImage("DVD_logo2.png"); x_pos = width / 2; y_pos = height / 2; } void draw(){ /* 角に当たった時にロゴを一個増やし現在のロゴ数を+1する仕様にする */ background(0); //背景の初期化 DVD_image(); //DVD_image関数呼び出し int s = millis() / 1000; //経過時間(仮) x_pos = x_pos + ( x_speed * x_direction ); y_pos = y_pos + ( y_speed * y_direction ); //壁にぶつかっていたら-1をdirectionに入れる。 if (x_pos > width-(img.width / 2) || x_pos < (img.width / 2)) { x_direction *= -1; tint(r,g,b); } if (y_pos > height-(img.height / 2) || y_pos < (img.height / 2)) { y_direction *= -1; tint(r,g,b); } //角に当たった時の処理 if (x_pos < (img.width / 2) && y_pos < (img.height / 2) ) { //左上 n += 1; DVD_image(); } if (x_pos < (img.width / 2) && y_pos > height - (img.height / 2) ){ //左下 n += 1; DVD_image(); } if (x_pos > width - (img.width / 2) && y_pos < (img.height / 2) ){ //右上 n += 1; DVD_image(); } if (x_pos > width - (img.width / 2) && y_pos > height - (img.height / 2) ){ //右下 n += 1; DVD_image(); } //ロゴのカウント textAlign(CENTER); textSize(24); fill(255,255,255,150); text("now DVDlogos : " + n + "", width/2, 25); //タイマー text("now time : " + s + "", width/2, 50); } void DVD_image(){ //画像の描画及び画像のRGB値 imageMode(CENTER); image(img, x_pos, y_pos); r = random(80,255); g = random(80,255); b = random(80,255); }
//角に当たった時の処理 のif文に関数を呼び出す処理を足せばよいものだと思っていたのですが、どうやら違ったようなのでお教えいただけないでしょうか。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。