(第七回)Unityでゲーム開発 作成編④

(第七回)Unityでゲーム開発 作成編④

目次

はじめに
水の表現
玉を操作可能にする
次回予告

はじめに

前回は階段を作成したり、床を動かしてみたりとステージのギミックを作成していきました。
今回もその続きで、水面をステージに取り入れてみるのと、玉を今までは操作していなかったですが、今回は操作可能にしてみます。
前回記事が気になる方は下記リンクを参照してください。

水面の表現

それではまず水面の表現を作成していきたいと思います。水面を表現する方法に関して、自分で作成することも出来るのですが、波の表現などなかなか複雑な作成になるので、今回はAsset Storeにあるものを使いたいと思います。

Asset Storeに入って、Stanadard Assetsで検索すると一番最初に出てくるUnity TechnologiesのStandard Assetsに今回使うものが入っています。

該当ページに入って、ダウンロード→インポートの手順を踏むと、下記の画像のようにインポートするものを選択出来るので、特にこだわりがなければすべてインポートしておきましょう(容量は大きいですが)。

インポートが終わると、下記の画像のようにインポートしたものがフォルダで配置されて入ると思うので、こちらを使っていきます。


今回使用するアセットは、Standard Assets → Enviroment → Water → Prefabsの中にあるWaterProDayTimeです。
このAssetは、光の反射などをリアルに再現しており、かなりクオリティの高いものが無料で使用できます。
上記のAssetをSceneビューにドラッグアンドドロップすれば水面が表示されます。

円形状の水面を表示することができました。
地形にくぼみを作ることで、くぼみの中にだけ水面を表示することが出来るようですが、今回自作の囲いではうまく作用しなかったので、この辺り最終的に見栄えを整える際に直していきたいと思います。
実際水面がどんな風になっているのか試してみました。

光が当たると徐々に見えてくる感じがとてもリアルに表現されています。

玉を操作可能にする

作成を進める中で、オブジェクトの位置を微妙に調整したりすると、落下地点が変わったりすることで、最後までうまくたどり着かないということが何度かありました。
今は坂の勢いに任せて、調整なしで動作させているので、微妙なズレで結果が変わってしまいます。

上記の点を防ぐために、プレイヤーである玉をこちらのキー操作で位置調整できるようにします。こちらはスクリプトでコードを書いて制御します。
玉のオブジェクトを選び、Add ComponentからNew Scriptを選び、コードを書いていきます。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class BallControll : MonoBehaviour
{
    //玉の速度を決める変数 
    public float speed;

    private Rigidbody rb;

   void Start()
    {
        //Rigidbodyを取得
        rb = GetComponent<Rigidbody>();
    }
 
    void Update()
    {
        //カーソルキーの入力情報を取得
        float moveHorizontal = Input.GetAxis("Horizontal");
        float moveVertical = Input.GetAxis("Vertical");

        //入力情報に応じて移動方向を設定
        Vector3 movement = new Vector3(moveHorizontal, 0.0f, moveVertical);

        //Rigidbodyに力を与える
        rb.AddForce(movement * speed);
    }
}

上記のコードで、矢印キーで玉を操作できるようになります。

コードの説明としては、下記になります。

  • Rigidbodyの要素をGetComponentで取得
  • キーの入力情報は”Horizontal”が水平方向、”Vertical”が垂直方向のキーの入力を判定
  • Vector3で移動方向を設定
  • AddForceで玉の速さを決定

上記の流れとなります。
“Horizontal”と”Vertical”はUnityの初期設定で決められているキー情報なので、初期設定をいじってなければ、
このコードで動作すると思います。
またspeedの変数を設定することで、Unityの画面でspeedの値を変更することができます。

尚、この値を変更することで坂を下る速度が速くなるわけではありません。あくまでもキー入力した際の速度になりますので、その辺りはご注意ください。

実際に動作させているものが下記になります。

特にコースを外れることもなかったので、途中で制御は必要なかったですが、最後に玉を一周させてみました。
特に動く床の辺りで、左に寄った場合などに操作が必要になるかもしれません。

次回予告

今回は水面の表現と玉の操作の部分をご紹介しました。
玉を操作できるようになったので、次回はアイテムを取得してゴールのような仕掛けを作りたいと思います。