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;

    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

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

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

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

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です