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

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

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

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

Q&A

解決済

1回答

4622閲覧

frameCountを使った動きについて

hiragana_100

総合スコア1

Processing

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

1グッド

0クリップ

投稿2021/07/05 14:24

前提・実現したいこと

180フレーム(3秒)ごとに半透明の円がランダムな箇所に流れて消えていくアニメーションを制作しています。
実行すると3秒ごとに円は表示されるのですが、流れる動きがつかず一瞬だけの処理になってしまいます。
どのようにすれば泡の動き(if内)が上手く動作するでしょうか?

該当のソースコード

Processing3.5.4を使用しています。

float y =2;//泡の動き
int tmi =100;//泡の透明度
float tki = random(50, 100);//泡の直径

void setup(){
size(1000, 1000, P2D);
frameRate(60);
}

void bg(){
noStroke();
beginShape();
fill(30, 40, 80);
vertex(0, 0);
vertex(1000, 0);
fill(0, 0, 0);
vertex(1000, 1000);
vertex(0, 1000);
endShape();
}

void draw(){
bg();
translate(500, 400);
rotate(radians(20));

ellipse(0,0, 50,50);

if (frameCount % 180 == 0) {

y=y+2;//上昇する動き tmi=tmi-3;//消えていく動き noStroke(); fill(200, 255, 255, 10+tmi);//徐々に消える泡 ellipse(0+random(-400,400) , 0+random(-400,400)+y, tki, tki);

}

}

試したこと

https://note.com/deconbatch/n/nb1b1dc857fe8

frameCountの処理はこちらを参考にさせて頂きました。
frameCountの部分のみなので回答のご参考になるかは分かりませんが、記載させて頂きます。

TN8001👍を押しています

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

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

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

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

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

guest

回答1

0

ベストアンサー

if (frameCount % 180 == 0)ということは、180フレーム中の1フレームしか入りません。
y=y+2;ellipseもその瞬間だけです。

180フレーム(3秒)ごとに半透明の円がランダムな箇所に流れて消えていくアニメーション

ということはy=y+2;ellipseは常に実行し、if内は位置のリセット等の処理が入るべきでしょう。

Processing

1float x = random(-400, 400); // 泡のX座標 2float y = random(-400, 400); // 泡のY座標 3int tmi = 100; 4float tki = random(50, 100); 5 6void setup() { 7 size(1000, 1000, P2D); 8} 9 10void bg() { 11 noStroke(); 12 beginShape(); 13 fill(30, 40, 80); 14 vertex(0, 0); 15 vertex(1000, 0); 16 fill(0, 0, 0); 17 vertex(1000, 1000); 18 vertex(0, 1000); 19 endShape(); 20} 21 22void draw() { 23 bg(); 24 translate(500, 400); 25 rotate(radians(20)); 26 27 circle(0, 0, 50); 28 29 y += 2; 30 tmi -= 3; 31 noStroke(); 32 fill(200, 255, 255, 10 + tmi); 33 circle(x, y, tki); 34 35 if (frameCount % 180 == 0) { 36 x = random(-400, 400); 37 y = random(-400, 400); 38 tmi = 100; 39 tki = random(50, 100); 40 } 41}

投稿2021/07/05 15:50

TN8001

総合スコア9321

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

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

hiragana_100

2021/07/05 16:33

参考に順に組み直してみたところ、解決いたしました。frameへの理解が浅かったようです……確かに元の表記だと描画も1フレームのみになってしまいますね。 不要な部分まで添削して頂き、初学者のため大変勉強になりました。ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問