前回までで床とキャラクターの設置までが終わったので、今回は設置したキャラクターを動かしてみましょう。
カメラ位置修正
デフォルトのままだとちょっと見にくいので、カメラの位置を変えてみます。
メインカメラを選択して、Yを1から4に変更しました。
右下の「Camera Preview」で確認ができます。
見下ろす形になって見やすくなりました。
キャラクターを動かすための準備
コンポーネントとしてRigidbodyとCapsule Colliderを追加します。
キャラクターを選択した状態で、Add ComponentからRigidbodyを追加します。
つぎに、同じ要領でCapsule Colliderを追加します。
はい、追加できました。
では続いて、Capsule Colliderの位置が変なので調整しましょう。
なんか下にめり込んでますよね。
CenterとHeightをキャラクターを包むような大きさに修正します。
今回はCenterのYを0.9, Heightを1.8としました。
キャラクターを動かすためのスクリプトを書く
キャラクターを動かすためにスクリプトを書きます。
まずはスクリプトファイルを作りましょう。
AssetにScriptというフォルダを作ります。これは単に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
続いて、キャラクターオブジェクトに先ほどのスクリプトを追加します。
十字キーで操作すると、キャラクターが動きます。
動くようになりましたが、物体が動いてる感がすごいですね。
次回は動きに合わせて方向を変えたり、アニメーションしたりするようにします。