Unityでゲーム、アプリ開発

Unityで初めてゲームやアプリを作る人のための支援ブログです。

Unity キャラ移動、フィールド作成から始めてみよう!3Dゲーム作り①

どうもこんばんはゆうきやんでっす!
最近雨ばかりで萎えちゃいますね。

ただ寝る時に限っては雨が降っていると
何故だか心が落ち着いて
ゆっくり寝れるんですよ。

みなさんはどうでしょうか?
雷が降っている時ほど寝れるとか
地震の時に限ってぐっすり寝ている人ばかりではないでしょうか?笑笑

冗談は置いといて本題に入っていきましょう!


キャラ移動、フィールド作成から始めてみよう!

f:id:Phoenix9056:20200229224458j:plain

新しく3Dゲーム作りカテゴリを増やして
実際に出来上がるまでを載せて行こうと思います。

では、Unityを3Dプロジェクトで開いてください。


f:id:Phoenix9056:20200330170136j:plain

エディタ画面の上部からWindow⇨Asset Storeよりアセットストアを開いて
Terrain ToolKit 2017をインポートしてダウンロードしてください。
※アセットストアの使い方が分からない方は下記記事を参考にしてください。
www.unityprogram.info


f:id:Phoenix9056:20200330170648j:plain

まずHIerarchyの①のをクリックして、
3D Object⇨②Terrainを作成してください。

次に、③のInspectorの一番下にあるAdd Componentをクリックして、
スクリプト④のTerrain ToolKitを検索して追加してください。
そしたら、⑤のTerrain modelsをクリックして、自動生成してくれる
フィールドを選択します。

今回僕は、⑥の砂漠のフィールドを作りましたが、
みなさんは好きな物を選択してください。

簡単にフィールドができましたね!


f:id:Phoenix9056:20200330171723j:plain

次にキャラクターの用意をします。
また同じようにアセットストアから、
"Query-Chan" modelをダウンロードしてインポートしてください。


f:id:Phoenix9056:20200330172332j:plain

先程インポートしたアセット①のquery-chan-model▶︎をクリック。
続けて、PQAssets⇨Query-chan⇨②のPrefabsをクリックします。

一番上のおばけと一番したの杖を持ったQuery-chan以外ならなんでもいいです。
と言うのも後程剣を持たせたりしたいからです笑笑
③をドラッグして④のシーン内にドロップしてください。

※Main Cameraの位置は自分の見やすい所まで移動させてください。


f:id:Phoenix9056:20200330173622j:plain

今度は、Hierarchy内にあるQuery-chanをクリックして、
Inspectorの一番下にあるAdd Componentから①のCharacter Controllerを追加して
数値を同じようにしてください。

次にProject内の自分の分かりやすい所でいいので、
右クリック⇨Create⇨C# Scriptと選択してスクリプトを作ります。
名前はMoveにしましょう。

キャラクターが移動とジャンプができるようにします。
次のコードをコピー&ペーストするか下記の記述と同じように入力してください。

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

public class Move : MonoBehaviour
{

    public float speed = 6.0F;          //歩行速度
    public float jumpSpeed = 8.0F;      //ジャンプ力
    public float gravity = 20.0F;       //重力の大きさ
    public float rotateSpeed = 3.0F;    //回転速度

    //CharacterController型を変数controllerで宣言します。
    private CharacterController controller;
    //キャラクターの移動速度情報。
    private Vector3 moveDirection = Vector3.zero;
    //float型を変数hとvを宣言します。
    private float h, v;

    void Start()
    {
        //GetComponentでCharacterControllerを取得して変数controllerで宣言します。
        controller = GetComponent<CharacterController>();
    }

    
    void Update()
    {
        //入力値による移動処理
        h = Input.GetAxis("Horizontal");    //左右矢印キーの値
        v = Input.GetAxis("Vertical");      //上下矢印キーの値

        //もしCharacterContorollerが地面にいたら。
        if (controller.isGrounded)
        {
            //GameObjectの位置や動きを取得
            gameObject.transform.Rotate(new Vector3(0, rotateSpeed * h, 0));
            moveDirection = speed * v * gameObject.transform.forward;
            //もしスペースキーが押されたらInputされている
            //"Jump"を取得してスペースキーでジャンプする。
            if (Input.GetButton("Jump"))
                moveDirection.y = jumpSpeed;
        }
        //重力による加速
        moveDirection.y -= gravity * Time.deltaTime;
        //GameObjectの動き
        controller.Move(moveDirection * Time.deltaTime);

    }

}

スクリプトが完成したらHierarchy内にあるQuery-Chan
ドラッグ&ドロップしてアタッチして②を追加してください。


f:id:Phoenix9056:20200330180200j:plain

次に、Chinemachineと言うアセットをインポートして
キャラクターが動くと、追従していくようにします。
空のGameObjectInspectorにあるChinemachine Virtual Camera
値はこんな感じで設定しました。

※下記記事を参考にしてカメラを作ってください。
www.unityprogram.info


f:id:Phoenix9056:20200330180947j:plain

再生して動くか確かめてみましょう!
もし再生中の赤枠が気になるようでしたら。
Game Window Guidesのチェックを外せば消えます。

※まだアニメーションの設定をしていないので現段階では
キャラクターがただ単に動くと言った感じです。

f:id:Phoenix9056:20200330182253g:plain

今日も成功ですね!!

今日はこんな感じで少しずつ進めていきたいと思います。

ご視聴ありがとうございました!

※Unity学習をしていきたい方は下記記事を参考にしてください。
www.unityprogram.info

※初心者編はいかカテゴリから参考にしてください。
www.unityprogram.info

※オススメアセットなどの紹介は下記カテゴリから。
www.unityprogram.info