レーズンのUnity-3Dアクションゲーム制作記3:キャラクターを動かす調整
前回
https://note.com/reeeznd/n/nefc6da083a45?magazine_key=mc2b4712de66c
操作性がいまいちだったのを修正。
プレステの初代バイオハザードのように、移動で右に行きたい時は、一度右を向いてから前に進むという操作だったので、右にキーを入れたら右に動くようにした。
バイオハザードって今やると操作しづらいし、ぐるぐる回って変な動きに見えるけど、ゾンビが来た時にパッと操作できなくてアワアワさせつつ、固定カメラでも操作できる一石二鳥のデザインなのかも。
話がそれた。
それと、キャラクターの向きと関係なくカメラの向いてる方向を正面として操作したいのでその処理も入れた。
できたのがコレ。これで多少いまふうの操作感にはなった。
具体的にやったこと
ここのブログでの動きの制御の方が、理想に近かったため参考にして実装した。
UNITYで魔物使い♀ゲームを作る/【UnityC#講座】3D人型モデルを三人称視点で動かす【ユニティちゃん】
https://unity-shoshinsha.biz/archives/574
この記事を見ながら左右移動の追加、カメラの向きを正面とする機能の追加をした。ここらへん。
//前移動の時だけ方向転換をさせる
if (z > 0)
{
transform.rotation = Quaternion.Euler(new Vector3(transform.rotation.x,
cam.eulerAngles.y, transform.rotation.z));
}
//xとzの数値に基づいて移動
transform.position += transform.forward * z + transform.right * x;
この記事、アニメーションを制御するBrendTreeの使い方ものっているため、BrendTreeを勉強するのにも良い。
あと、前進中しかジャンプできない作りになっていたのでいつでもジャンプできるように変更。Animatorの中身こんな感じ。
AnyStateからジャンプに移行できるようにすれば解決しそうなんだけど、変な挙動をするので線だらけになった・・・。
これたぶんBrendTreeでキレイに整理できるので、モーションの制御が増えてきたあたりでやる。とりあえず綺麗につくるより最低限の部分をつくっちゃう方が先なのであとでやる。
次回以降やること
・Unityちゃんはイメージが強すぎるのでニュートラルなキャラに変更する。
・アイテムを取ってステータスに保存
・アイテムを取った状態でゴールに行くとクリアする
・死ぬ
これくらいやると最低限の1ループができます。
タイトル➡ゲーム➡クリアor死ぬ➡タイトル
最低限の1ループを最初に作るというのがゲームをつくるコツなのだなあ。
メモ
はじめてのUnity:3Dゲーム(RPG/アクション)の土台を作るまでhttps://qiita.com/2kyym/items/47e0e18bbb1442bf688c
の、↓ここらへんあんまり理解してないかも
// 以下、キャラクターの移動処理
velocity = new Vector3(0, 0, v); // 上下のキー入力からZ軸方向の移動量を取得
// キャラクターのローカル空間での方向に変換
velocity = transform.TransformDirection(velocity);
こういうのを踏んで強くなっていくんですね。
サポートするとレーズンがコーヒーを飲める!