ものららい 2022/02/26 11:03

Unityでキャラクターを動かしてみた


こんにちは🍎

前回、前々回セリフ周りを作ったので、今回は実際にRPGみたいにキャラクターを動かすことをやってみました。
(※今回はどっちかと言えば作った機能のレビューみたいな感じなのでおててやわらかに)


今回使用してるScript一覧です。(※一部省略)
Player.cs (プレイヤー操作オブジェクトの管理)
StageCharacter.cs (キャラクター移動管理)
BaseSystem/MeshUvControl_Add_Animation.cs (MeshUvControlにアニメーション機能をつける機能)
BaseSystem/CameraControl.cs (追尾カメラ)


まず、ステージ上を歩き回れるキャラクターとは。

アクションさせたりとか考えると色々設定しなきゃいけない所が多いですが、今回はとりあえず歩かせるだけなのでシンプルにしました。

キャラクターのオブジェクトの構成的には、GameObjectに接触用のコライダーとRigidbodyついたものを歩き回れるキャラクターに必要な最低限の物として、その中に入れ子で「MeshUVs」というGameObjectを用意しています。

「MeshUVs」というのはMeshUvControlでUVの絵柄を設定したQuadを格納しておく場所でフルに使う場合は待機、歩行などの専用の絵柄の設定したQuadを入れておきますが、今回はそこまでは行わないのでプレイヤーキャラクターは歩行、NPCキャラクターは待機のみ入れています。

ちなみに「MeshUVs」に入ってるQuadにはMeshUvControlのほかにMeshUvControl_Add_Animationという指定の時間間隔でUVのコマを変更できる機能が付いていてあらかじめ設定してあるので2コマでアニメします。(※MeshUvControl_Add_AnimationはあくまでMeshUvControlが無いと機能しないので注意)

ちょっと説明が後になってしまいましたがキャラクターの移動には移動に関しての処理を集約させたStageCharacterを使用して移動しています。(今回はPlayer.csがセットする形なのでGameObjectに直接セッティングされていませんが)
減速したり面倒な反転とか壁を突き抜けないで移動したりする移動処理が入っているので、今後プレイヤー問わずキャラクターの移動処理のベースとして使用していきます。


実際動かしてみたのがこちら。


動いた!やったー!って感じですが、奥行の移動になんか若干移動に違和感感じますよね?(ね??)
画角とカメラの角度の影響が大いにあるので、別に何も間違ってはいないのですが、もう少し動きがなじむようにカメラをプレイヤーに追尾させる機能をONにして動作させてみます。


もうすでに追尾する機能は用意してプレイヤーをセットしているので、赤丸の部分のチェックを入れると追尾する機能がONになります。



カメラの追尾ONで動かしたのがこちら。


最低限しかありませんが、とりあえずフィールドを歩くことはできるようになったのでゲームっぽくなってきたと思います。


実際動作するアセットフォルダも置いておきますので、アセットフォルダを空プロジェクトに入れれば確認できます。(Script/Player.csに使用例があります)

2022_02_26_Assets.zip (436.22kB)

ダウンロード

この記事が良かったらチップを贈って支援しましょう!

チップを贈るにはユーザー登録が必要です。チップについてはこちら

最新の記事

記事のタグから探す

月別アーカイブ

記事を検索