その6:開始時ミニサイズ化

※本サイトはアフィリエイト広告を利用しています。

連載第6回目は、ミニキャラ化です。

見た目であるメッシュのサイズ(スケーリング)とキャラクターの実体ともいえるカプセルのサイズを調整します。

環境はUnrealEngine5.3.2です。

もとのスケールでTポーズの玉ねぎちゃんとミニサイズ化したあとの玉ねぎちゃんが並んでいる様子
本記事の内容を動画にしました

カプセルサイズ調整

まず、元のノーマル状態でもカプセルが大きすぎるので調整します。

プレイヤーキャラクターのBP「BP_ThirdPersonCharacter」でコンポーネントのCapsule Component(カプセル)を選んだ状態で、詳細から「Capsule Half Height」カプセルの半分の高さを調整します。

カプセルが上に大きすぎる玉ねぎちゃん
カプセルのサイズを玉ねぎちゃんの身長にあうように調整したが、位置がずれてしまっている状態

玉ねぎちゃんの場合は70くらいがちょうどいいサイズ感に感じたのでそう変えました。が、カプセルは原点が中心で、一方玉ねぎちゃんのメッシュは足元で位置合わせしているため、メッシュの位置も調整します。

ミニサイズ化

やることは3つです。

  1. メッシュのスケール変更
  2. カプセルのサイズ変更
  3. メッシュ位置のズレ補正

どれからやってもいいですが、2と3はさきほどもやりました。

メッシュのスケールを小さくします。

全体的に同じく半分(0.5倍)にするのではなく、ちょっとつぶれた感じになるようZ軸の立幅以外は0.75倍としてみました。

あとは、カプセルを小さくするとともに、位置がずれるので揃えます。

小さい玉ねぎちゃんと小さくなったカプセルの黄色い線がずれて後ろのカメラが見えている様子
横からのアングルでカプセルと玉ねぎちゃんのメッシュの位置とスケール調整が終わった状態

ここでの注意点としては、カプセルの高さは半径のサイズより小さくすることはできません。

これは、半球二つの間の円柱の長さをゼロまでは縮められるけどマイナスにはできないということですね。もっと小さくしたい場合は半径サイズを小さくするなどの別の対策が必要になります。

この状態で保存すれば、開始時ミニで始まる条件まで完成です。

ここで終わってもいいのですが、
続けて、イベントで状態変化まで作ってしまいましょう。

イベントで状態変化 ノーマル←→ミニ

さきほどの3つの作業(とその逆の操作)をブループリントでゲーム中にやれるようにするだけです。

「Set Capsule Half Height」「Set Relative Scale 3D」「Set Relative Location」を使ってプレイヤーキャラクターのサイズ変更を自動化するブループリント

「Capsle Component」を左からドラッグでもってきて、引っ張った線から「Set Capsule Half Height」で値を設定します。

同じように「Mesh」を持ってきて「Set Relative Scale 3D」「Set Relative Location」で本体からの相対位置でメッシュのスケールと位置を調整します。

また、メッシュの設定はまとめてやれるノードもあります。「Set Relative Transform」です。これはNew Transformの構造体ピンを右クリックから分解して設定しましょう。

Set Relational Transformで「Set Relative Scale 3D」「Set Relative Location」でやっていた設定をまとめて1つのノードでやる方法を示すブループリント

この場合は、「Rotation」も設定しないとキャラが横を向いてしまう場合があります。
(インポート時の設定等で回避できる場合もあると思いますので、もともとの設定欄と同じに合わせましょう。)

UキーとIキーで大小サイズ変更をデバッグできるようにしておきました。

カスタムイベント化

「敵にぶつかって小さくなる」「キノコ食べて大きくなる」などのイベント化は別記事としますが、デバッグ用のキー入力だけではなく、色々なきっかけで変化できるようにイベントを作りましょう。

キー入力イベントからの線をちぎって「add custom event」で「To Mini」「To Big」などの名称のイベントにしましょう。

キー入力イベントからは今作ったノードの名称で、これを呼び出すノードを設置しつなぎます。

デバッグ用のキー入力で動くイベントとしていたところをカスタムイベントを仲介してコールする処理に書き換えたブループリント

これで、Uキーを押すと「To Miniイベント」が発生して、さきほどの処理が動きます。

今時点メリットがわかりませんが、あとあと便利です。
たとえば、ぶつかった相手のブループリントからこのイベントを呼び出して、ぶつかったら小さくなるとか、炎にぶつかって小さくなるとかを「To Mini」ノード1つで呼び出せるなど。

つづく

次回は、簡単に静止状態の簡易的な敵キャラを作ってノーマルからミニへのダメージ処理を作ります。

コメント

タイトルとURLをコピーしました