回答編集履歴

1

Ani

2025/01/02 04:03

投稿

TN8001
TN8001

スコア9903

test CHANGED
@@ -140,3 +140,58 @@
140
140
  y--;
141
141
  }
142
142
  ```
143
+
144
+ ---
145
+
146
+ もっと複雑な動きや直感的な記述をしたい場合は、ライブラリの使用も検討してください(使い方を調べる等別の難しさはありますが^^;
147
+
148
+ 1. メニューの「スケッチ」ー「ライブラリをインポート...」ー「Manage Libraries…」を選択
149
+ 2. Contribution Managerで「Ani | A lightweight library」を選択
150
+ 3. Installボタンを押す
151
+ ![Contribution Manager](https://ddjkaamml8q8x.cloudfront.net/questions/2025-01-02/ed95e538-cba8-4d8d-8a89-3eac5fce8c2a.png)
152
+ [Ani - An animation library for Processing](https://dev.benedikt-gross.de/libraries/Ani/)
153
+
154
+ ```Processing
155
+ import de.looksgood.ani.*; // Aniライブラリを使う
156
+
157
+ int x, y;
158
+ AniSequence seq; // 一連のアニメーション
159
+
160
+ void setup() {
161
+ size(500, 500);
162
+
163
+ Ani.init(this); // Aniライブラリの初期化
164
+ Ani.setDefaultEasing(Ani.LINEAR); // 等速運動
165
+ Ani.setDefaultTimeMode(Ani.FRAMES); // 基準をフレーム単位に
166
+
167
+ seq = new AniSequence(this); // 一連のアニメーション作成
168
+
169
+ seq.beginSequence(); // 一連のアニメーション設定開始
170
+ seq.add(Ani.to(this, 488, "x", 488)); // 488フレームかけてxを488に近づける
171
+ seq.add(Ani.to(this, 460, "y", 460)); // ↑が終わったら次の動作
172
+ seq.add(Ani.to(this, 488, "x", 0));
173
+ seq.add(Ani.to(this, 460, "y", 0));
174
+
175
+ // 斜めに動かしたいようなときはこう書いてもok
176
+ //seq.add(Ani.to(this, 488, "x:488,y:0"));
177
+ //seq.add(Ani.to(this, 460, "x:488,y:460"));
178
+ //seq.add(Ani.to(this, 488, "x:0,y:460"));
179
+ //seq.add(Ani.to(this, 460, "x:0,y:0"));
180
+ seq.endSequence(); // 一連のアニメーション設定終了
181
+
182
+ seq.start(); // 一連のアニメーション動作開始
183
+ }
184
+
185
+ void draw() {
186
+ if (seq.isEnded()) // 一連のアニメーションが動作終了していたら...
187
+ seq.start(); // 再スタート
188
+
189
+ background(255);
190
+ translate(x, y);
191
+ rect(1, 1, 10, 8);
192
+ rect(3, 9, 5, 5);
193
+ rect(1, 14, 10, 15);
194
+ rect(1, 29, 3, 10);
195
+ rect(8, 29, 3, 10);
196
+ }
197
+ ```