TakeOff プラグインの処理アナザー
TakeOff プラグインは選択されたメイドを TakeOff するプラグインとして機能を記述します。
TakeOff が脱衣というのは許せない、メイドを飛ばさないとダメだ!!という方はこちらです。
// [ 実行 ]ボタン if (GUILayout.Button("実行", this.uiStyleButton) && this.maid != null) { // TODO : 実行ボタン押下時の処理を記述(ひな形ではログを出力するだけ) ConsoleLog.Information("実行されたメイドさんは{0}。", maid.status.fullNameJpStyle); }
この部分を
if (GUILayout.Button("実行", this.uiStyleButton) && this.maid != null) { // 飛び上がらせるコルーチンを定義する IEnumerator takeOff(Maid targetMaid) { // 飛び上がった量 var height = 0f; // 飛び上がる速度 var speed = 0f; // 加速度 var acceleration = 0.01f; do { // 速度を加速度分加速 speed += acceleration; // 今回飛び上がる分を加算 height += speed; // 現在のメイド位置を取得 var newPosition = targetMaid.transform.position; // 今回飛び上がる分をY座標に加算 newPosition.y += speed; // 今回飛び上がらせた位置を反映 targetMaid.transform.position = newPosition; // 1/60秒待つ yield return new WaitForSeconds(1f/60f); // 計200上昇するまで繰り返す } while (height < 200f); // 現在のメイド位置を取得 var orgPosition = targetMaid.transform.position; // 飛び上がった分をY座標に減算することで元の位置に orgPosition.y -= height; // 戻した位置を反映 targetMaid.transform.position = orgPosition; } // 飛び上がらせるコルーチンを起動する、その際選択中のメイドを渡す。 this.StartCoroutine(takeOff(this.maid)); }
に変更します。
処理を解説していきます。
// 飛び上がらせるコルーチンを定義する IEnumerator takeOff(Maid targetMaid)
関数内ローカル関数でコルーチンを定義します。
渡されたメイドに対して 1/60 秒ごとに、上方向に座標を変更するコルーチンを定義します。
// 飛び上がらせるコルーチンを起動する、その際選択中のメイドを渡す。 this.StartCoroutine(takeOff(this.maid));
定義したコルーチンに選択中のメイドを渡し実行します。
IEnumerator takeOff(Maid targetMaid) { // 飛び上がった量 var height = 0f; // 飛び上がる速度 var speed = 0f; // 加速度 var acceleration = 0.01f; do { // 速度を加速度分加速 speed += acceleration; // 今回飛び上がる分を加算 height += speed; // 現在のメイド位置を取得 var newPosition = targetMaid.transform.position; // 今回飛び上がる分をY座標に加算 newPosition.y += speed; // 今回飛び上がらせた位置を反映 targetMaid.transform.position = newPosition; // 1/60秒待つ yield return new WaitForSeconds(1f/60f); // 計200上昇するまで繰り返す } while (height < 200f); // 現在のメイド位置を取得 var orgPosition = targetMaid.transform.position; // 飛び上がった分をY座標に減算することで元の位置に orgPosition.y -= height; // 戻した位置を反映 targetMaid.transform.position = orgPosition; }
コルーチンは連続した処理を一定間隔やフレーム毎に実行させる処理を定義できる関数です。
acceleration ずつ speed をあげて、その speed 分メイドの Y 座標を上に変更します。
変更した量は height に記録しておいて、200 以上上昇するまで 1/60 秒待ってループしています。
200 以上上昇後は、 height に記録してある上昇量分メイドの Y 座標を下げてコルーチンを終了しています。
欲張りなあなたへ・・・
脱衣後に打ち上がられてもいいんじゃよ。
コメント