Unityでスライム系の簡単な動きを再現してみた


こんにちは

今回、Unityを用いて自作ゲームを作成するにあたって、「スライム系」のモンスターオブジェクトを動かすことになりました。

そこで、「スライム系」っぽい動きをするために書いたコードをこの記事に残します。

ここでスライムっぽい動きとは、進んで止まって進んで止まってと、緩急をつけて前進することを指しています。

    float speed; //スライムの現在のスピード値を格納
    float minspeed; //スライムの最遅スピード値を格納
    float maxspeed; //スライムの最速スピード値を格納
    float del; //スピード値の変化量を格納
    string status; //スピードを上昇下降の判断用

    <font color="orange">void Start()
    {
        speed = 1.5f; //初期化
        minspeed = 1.5f;
        maxspeed = 4f;
        del = 0.005f; 
        status = "up"; //はじめはスピードを上昇させる。
    }

    void Update()
    {
        if (status == "up")//現在のstatusの判定
        {
            speed = speed + del; //変化量を毎フレーム加算
            if (maxspeed < speed) //現在のスピード値判定
            {
                status = "down";
            }
        }
        else if (status == "down")
        {
            speed = speed - del;
            if (minspeed > speed)
            {
                status = "up";
            }
        }

        transform.Translate(0,0,speed * Time.deltaTime); //現在のスピード値分オブジェクトを移動
    }

基本的に、変数「del」に大きい値を入れると、スライムが早く動いているように見える。

また、進んで止まる動きを1アクションとすると、「Maxspeed」の値でどれだけ進めるか調整できる。