41.Characterとは? 人型のプレイヤーを作成してみよう
Character(キャラクター)とは?
https://scrapbox.io/files/65c2a3bb4589980024f0a275.jpg
Characterは主に人間などの歩行可能なプレイヤーのブループリントクラスを作成する時に選択します。Pawnの子クラスなので基本的には同じようにプレイヤーとして使用できるという点は変わりませんが、Characterは走るやジャンプといった人間っぽい動きができるようになっています。
①Characterを作ってみよう
プロジェクトはサードパーソンを使用します。(新規でも前回のままでも構いません)
ブループリントクラスからキャラクターを作成 > 名前をMyCharacterにします。
https://scrapbox.io/files/65c3139775facf00253afb9e.jpg
ブループリントクラスを開きます。Characterのブループリントクラスは以下のコンポーネントがデフォルトで用意されています。
https://scrapbox.io/files/65c313a966e2fb0024ae12ed.jpg
Characterのデフォルトのコンポーネントを解説
Characterはキャラクターを構成するためのコンポーネントが用意されています。上から順に解説していきます。
・CapsuleComponentはキャラの衝突判定を検知するためのコリジョンです。コリジョンも別の章で解説しますが、要するにキャラクターの衝突判定の部分になります。https://scrapbox.io/files/65c314308dff72002507403a.jpg
・ArrowComponentはブループリントクラスの正面を示しているもので、この矢印に合わせてキャラクターの向きを調整する必要があります。
https://scrapbox.io/files/65c314467ccd2e0026130296.jpg
・Mesh(SkeltalMesh)はスケルタルメッシュ(人型のアニメーション可能なメッシュ)を表示します。
・CharacterMovementはキャラクターを動かすための機能を持ったコンポーネントです。このCharacterMovementによってキャラの歩行やジャンプなどにあたる重力やスピードを変更できます。。https://scrapbox.io/files/65c314695baedb0024c13b6b.jpg
Meshコンポーネントを選択した状態で、SkeltalMeshをSKM_Mannyにします。
https://scrapbox.io/files/65c314a0a863c5002598b533.jpg
メッシュの位置がずれているのでMeshコンポーネントを選択した状態でキャラの位置をカプセルコリジョンの底に合わせます。
https://scrapbox.io/files/65c314c4684b900025911a13.jpg
大体で構いませんが、視点を左にして位置のスナップ(網みたいなアイコンのボタン)をクリックしてオフにしておくと底を合わせやすいです。
https://scrapbox.io/files/65c314f05d9c390024c7c9b4.jpg
キャラクターの正面方向がずれているので、Meshコンポーネントを選択した状態で薄水色の矢印に合わせてEキーで回転させ、Z軸を-90になるようにします。
https://scrapbox.io/files/65c3152860b2ae002372ec69.jpg
次にカメラを追加します。Meshコンポーネントを選択した状態で、SpringArmコンポーネントを追加します。
https://scrapbox.io/files/65c3156374c9ea0024813902.jpg
ゲーム画面を映すCameraコンポーネントを追加します。カメラはSpringArmの子として設置します。
https://scrapbox.io/files/65c322045c9a4e0025ff06bb.jpg
SpringArmコンポーネントとは?
SpringArmコンポーネントは自撮り棒的な役割となるコンポーネントで、カメラの位置を決定するのに使用します。コンポーネントはドラッグする事で親子の関係を作る事ができ、子は親のトランスフォームに基づいて決定されます。https://scrapbox.io/files/65c32294c92ff90024b5e803.gif
SpringArmを選択して適当に40度ほど回転させます。
https://scrapbox.io/files/65c322a64f9ed800245f8507.jpg
SpringArmを選択した状態でTargetArmLength(長さ)を500にします。
https://scrapbox.io/files/65c322567f79de00257c6f09.jpg
コンパイルします。
レベルエディタに戻ってエディタ右上の設定 > ワールドセッティングを開きます。
https://scrapbox.io/files/65c322c08b02290025b40a1c.png
DefaultPawnClass(操作するキャラの設定項目)にMyCharacterをセットします。
https://scrapbox.io/files/65c322d605e41f0027d5c431.png
プレイすると作成したキャラクターがプレイヤーとしてスポーンしました。
https://scrapbox.io/files/65c322e873bc3a002563b544.gif
②キャラにジャンプを実装する
このままではキャラクターは動かないので、まずはジャンプ機能を実装しましょう。
MyCharacterのイベントグラフを開きます。
https://scrapbox.io/files/65c3231908262c00255ff7d1.jpg
スペースバーノードとJumpノードを作成します。 スペースバーは「space bar」と検索すれば出てきます。
https://scrapbox.io/files/65c3233288ccaa0025efd01c.png
Jumpノードとは?
JumpノードはCharacterのブループリントクラスをジャンプさせるノードです。ターゲットがself(自身)になっているのでMyCharacterをジャンプさせます。シンプルにキャラクターをジャンプさせるノードです。
コンパイルしてプレイしてみましょう。MyCharacterのブループリントクラスがジャンプするようになりました。
https://scrapbox.io/files/65c323711a89430024bb0235.gif
Characterのブループリントクラスはこういったジャンプや移動などキャラクターとしての操作が簡単に実装できます。
③CharacterMovementの設定でジャンプ力を変更する
キャラクターのジャンプ力とか移動スピードなどはCharacterMovemntコンポーネントで変更する事ができます。やってみましょう。
MyCharacterを開いてCharacter Movementコンポーネントの設定を確認します。ここでは移動スピードや重力やジャンプの設定ができます。
https://scrapbox.io/files/65c32fc3a7109d002df954fd.jpg
キャラクタームーブメント:跳躍降下からジャンプの高さとなるJumpZvelocityの値を1000にします。
https://scrapbox.io/files/65c330264df1e600248cf7a8.png
プレイすると先ほどより高くジャンプするようになりました。
https://scrapbox.io/files/65c330392eca10002488bb86.gif
CharacterMovementにある主な設定について紹介
ではCharacterMovementの主な設定を紹介していきます。ここは一旦ざっくり紹介していきます。
①キャラクタームーブメント基本セッティング (General Setting)
キャラクターの挙動に関する基本設定があります。
table:基本
Gravity Scale 重力の大きさです。値を大きくするとより速く落ちていきます。
Max Acceleration キャラの走ったり泳いだりする時の最大加速度です。
Braking friction factor 摩擦ブレーキです。キャラが移動して止まるまでの
実際の摩擦力になります。
Braking friction ブレーキ時(加速度が0の時または、
最大加速力を越した場合)に適用される摩擦係数です。
使用するためにはUse Separate Braking frictionにチェックを入れる必要があります。
Crouched half Weight しゃがんでいる時のコリジョンの高さです。
Use Separate Braking friction チェックをしない場合、全ての摩擦(地面や風)に対して
実際の摩擦係数が使用されます。もしチェックをした場合、
他の全ての摩擦力は無視されて2つ上の項目の
Breaking frictionの数値が適用されます。
Mass キャラの質量です。質量とは物質の動きにくさの度合い、
つまり慣性の大きさのことになります。
値が大きければ大きいほど動きにくくなります。
②キャラクタームーブメント:歩行 (Walking)
キャラクターの歩行に関する設定があります。
table:歩行
Max Step Height 段差を乗り越えられる高さです。
大きいほど高い段差を超える事ができます。
Walkable Floor Angle キャラが進行できる角度です。
値が大きいほど高い角度でも進行できるようになります。
Ground Friction 地面の摩擦力です。
Can Walk Off Ledges オブジェクトの端から歩いて降りる事ができます。
チェックを外すと降りれなくなります。
Can Walk Off Ledges When Crouncing オブジェクトの端からしゃがんで歩いて降りる事ができます。
チェックを外すと降りれなくなります。
③キャラクタームーブメント:跳躍/落下 (Jumping / Falling)
キャラクターのジャンプに関する設定があります。
table:跳躍と落下
Air Control 空中にいる時に移動をどれくらい待機しているか
Characterクラスの親子関係について
CharacterのブループリントクラスはPawnの子クラスにあたります。
GameModeのDefaultPawnClass(ゲームで操作するキャラ設定)にはPawnまたはPawnを継承したブループリントクラスをセットする事ができます。
なのでCharacterもPawnを継承して作成されており、今回作成したMyCharacterというブループリントクラスもCharacterを継承(選択)して作成されているのでプレイヤーとして利用可能となっています。
https://scrapbox.io/files/65c3c13c64a5e300264a9683.jpg
😺つまりPawnを継承したブループリントクラスであればプレイヤーとしてゲームモードにセットして使用できるという事になります。もっと簡単に言うと"親クラスを選択"画面でPawnまたはCharacterを選択すればプレイヤーとして使用できるという事になります。
PawnとCharacterの違いは?
CharacterのブループリントクラスはCapsule,Mesh,CharacterMovementコンポーネントがあり、主に人型キャラクターの作成に向いています。一方PawnではCharacterMovementコンポーネントなどはありませんし今回実装したJumpノードも使えません。なのでPawnは特殊なムーブをするプレイヤーなど作成する時に向いています。
https://scrapbox.io/files/65c3c1cf64a5e300264a9c19.jpg
例えばですが左画面のゴルフボールがプレイヤー自身となるゲームではPawnを選択して、右側のアクションゲームで使用する人型のキャラクターはCharacterのブループリントクラスを選択して作成していくといった感じになります。他にも戦車や車はPawn,人間のようにジャンプしたりする動物とかはCharacterとかでも良いと思いますがそれは状況に応じてといった所かと思います。