UnityとBlenderでRPGを作る #3 – キャラクターを動かす

前回までで床とキャラクターの設置までが終わったので、今回は設置したキャラクターを動かしてみましょう。

カメラ位置修正

デフォルトのままだとちょっと見にくいので、カメラの位置を変えてみます。
メインカメラを選択して、Yを1から4に変更しました。

右下の「Camera Preview」で確認ができます。
見下ろす形になって見やすくなりました。

キャラクターを動かすための準備

コンポーネントとしてRigidbodyとCapsule Colliderを追加します。
キャラクターを選択した状態で、Add ComponentからRigidbodyを追加します。

Rigidbodyを追加する ( Unity )

つぎに、同じ要領でCapsule Colliderを追加します。

はい、追加できました。
では続いて、Capsule Colliderの位置が変なので調整しましょう。
なんか下にめり込んでますよね。

Unity Capsule Colliderの設定

CenterとHeightをキャラクターを包むような大きさに修正します。

今回はCenterのYを0.9, Heightを1.8としました。

キャラクターを動かすためのスクリプトを書く

キャラクターを動かすためにスクリプトを書きます。
まずはスクリプトファイルを作りましょう。
AssetにScriptというフォルダを作ります。これは単にAssetを整理しやすくするためです。

Unity Asset

作成したフォルダを開き、スクリプト用のファイルを作ります。
Assetsの先ほど作成したScriptフォルダをダブルクリックした後、そのウインドウで右クリックし、Create > C# Script を選択し、新規スクリプトファイルを作成します。
ファイル名はCharacterControllerとしましょう。

はい、ファイルが作れましたね。
早速開いてみましょう。
テキストエディタなら何で開いてもよいですが、今回はVisual Studio 2019で開きます。

ここに以下のコードをコピペします。
内容わかんなくても大丈夫です。

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

public class CharacterController : MonoBehaviour
{

    public float speed = 3f;
    public float jumpSpeed = 3f;

    private Rigidbody rb;
    private float h, v;
    private Vector3 moveDirection = Vector3.zero;

    // Start is called before the first frame update
    void Start()
    {
        rb = GetComponent<Rigidbody>();
        rb.constraints = RigidbodyConstraints.FreezeRotation;
    }

    // Update is called once per frame
    void Update()
    {
        h = Input.GetAxis("Horizontal");
        v = Input.GetAxis("Vertical");

        if (h != 0 || v != 0)
        {
            moveDirection = speed * new Vector3(h, 0, v);
            moveDirection = transform.TransformDirection(moveDirection);
            rb.velocity = moveDirection;
        }
    }
}

ソースコードは以下を参考にさせていただきました。
https://qiita.com/tomopiro/items/e691524c3c0eef16c089#%E7%A7%BB%E5%8B%95%E6%96%B9%E6%B3%95%E3%81%9D%E3%81%AE1

続いて、キャラクターオブジェクトに先ほどのスクリプトを追加します。

十字キーで操作すると、キャラクターが動きます。

動くようになりましたが、物体が動いてる感がすごいですね。
次回は動きに合わせて方向を変えたり、アニメーションしたりするようにします。

UnityとBlenderでRPGを作る #2 – ステージを作り、キャラクターを置いてみる

前回プロジェクトを作ったので、今回はステージを作って、プレーヤーも置いてみます。

床を作る

現在は何もない状態なので、まずは地面を作ります。
Hierarchy > Create > 3D Object > Planeを選択し、床を作ります。

Unity 地面を作る

はい、これで床ができました。

プレーヤーキャラクターを配置

続いて、キャラクターを置いてみましょう。
キャラクターの作り方はこちらを参考にしてみてください。
BlenderでエクスポートしたFBXファイルをAssetにドラッグドロップします。
今回使ったFBXファイルはここに置いておきますね。

次に、Animation Typeを設定しておきます。
キャラクターを動かすときに必要です。

Humanoidを選択したら、下のApplyボタンを押して適用します。

続いて、実際にゲーム上に置いてみましょう。
AssetからHierarchyにドラッグアンドドロップします。

なんかめり込んでしまっているので、位置調整しましょうか。
PositionのYを1にします。

これでキャラクターを配置することができました。
本日はここまで。
明日はキャラクターを動かせるようにしてみます。

UnityとBlenderでRPGを作る #1 – Unityのプロジェクトを作る

前回、Blenderでキャラクターを作ったので、今度はそれをUnity上で動かしてみます。

プロジェクト作成

まずはUnityのプロジェクトを作りましょう。
Unityのインストールなどは省きます。バージョンはUnity 2019.2.12f1です。

Unityを開き、新規作成をクリックします。

プロジェクト名はRPGとしましょうか。
今回は3Dのプロジェクトを作りますよ。

作成をクリックすると空のプロジェクトが作成されます。

本日はここまで~。