現在、UnityでクイズRPGを制作しています。
今日は「正解・不正解の処理」をコルーチンへまとめながら、戦闘演出を追加しました。
正解・不正解処理をコルーチンへ移行
今まではボタンを押した瞬間に
- ダメージ
- 次の問題表示
まで一気に処理していました。
そのため、
Correct!
↓
次の問題
と切り替わってしまい、演出を見る時間がありませんでした。
そこで、
public void OnChoiceButton(int choiceIndex)
{
StartCoroutine(AnswerFlow(choiceIndex));
}
コルーチンで演出の流れを制御
現在は次のような流れになっています。
回答
↓
Correct / Wrong表示
↓
敵の攻撃・ダメージ演出
↓
1秒待機
↓
次の問題
yield return new WaitForSeconds(1f);
を使うことで、プレイヤーが演出を確認できるようになりました。
敵のダメージ演出を追加
敵にダメージを与えたとき、
- スラッシュエフェクト
- 敵画像の点滅
を追加しました。
enemyAnimationController.slashEffect.Play();
enemyAnimationController.Flash();
以前よりも攻撃している感覚が出てきました。
EnemyAnimationControllerを追加
敵の見た目の制御をまとめるために
EnemyAnimationController
を作成しました。
現在担当している処理は
- Attack
- Flash
- HideEnemy
- Slash Effect
です。
今後は
- 待機モーション
- ダメージモーション
- 死亡モーション
もここへまとめる予定です。
コルーチンの理解が深まった
今回一番勉強になったのは
yield return StartCoroutine(GameClear());
最初は
StartCoroutine(GameClear());
との違いが分かりませんでした。
理解した内容は次の通りです。
StartCoroutine
ゲームクリア処理を開始するだけ。
今の処理はそのまま続く。
yield return StartCoroutine
ゲームクリア処理が終わるまで待機する。
今日の学び
今日学んだことをまとめると、
IEnumeratorはコルーチンとして実行できる関数StartCoroutine()はコルーチンを開始するyield returnは処理を一時停止し、あとで続きを実行するyield breakはコルーチンを終了する
最初は難しかったですが、実際にゲームを作りながら使うことで少しずつ理解できるようになってきました。


コメント