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 座標を下げてコルーチンを終了しています。
欲張りなあなたへ・・・
脱衣後に打ち上がられてもいいんじゃよ。
コメント