UnrealEngineでキャラクターから弾を発射させるブループリントプログラムについて書いていきたいと思います。
※今回の#BPTipsの前提として、弾のBlueprintは作成しているものとします。(アクターを移動させるBlueprint)アクターを移動させるBlueprintは以下の記事で作成しています。
スケルトンにソケットを追加する(ペルソナエディターでの作業)
UnrealEngineのThirdPersonプロジェクトをえらんでいる場合はManeequin(マネキン)フォルダーにキャラクターのスケルトンがあるはずです。それを開くとペルソナエディターというものがたちあがります。ここで弾発射用のソケットというものを追加します
- MannequinのSkeletonを選択して開く。するとペルソナエディターというものがたちあがる
- rootで右クリックして AddSocketを選択。追加したSocketの名前を好きなものに変更する
- ソケットの位置合わせを行う。
ソケットはキャラクターが弾を発射する位置になります。
ThirdPersonCharacterのブループリントを改良する
キャラクターのブループリントはThirdPersonCharacterというブループリントがあるはずなので、それを選択してブループリントエディターを開きます。そして、以下のようにノードをつなぎます。
各ノードの役割は以下のようになります。
- キーボードのbボタン → bボタンをおしたときになにをするか
- GetSocketTransform → ソケットのトランスフォームを取得
- Spawnactorfromclass → 指定されたトランスフォームで新しいActorを生成する。ここでSphere_Blueprintを指定します。(弾のブループリントになります。)
- PlaySound2d → 音をならすためのものなので今回の内容にはあまり関係ありません。
このブループリントノードは要約するとBボタンをおすと指定したソケットから新しいActorを生成するというものになります。GetSocketTransformで名前をBulletにしていますが、これは自分が名前をつけたソケットと同じ名前にするようにします。ここの名前を指定しなかった場合はプログラムは動きますが、キャラクターの中心にアクターが生成されおかしなことになります。(ゲームはおかしなことになったほうが面白い場合もありますが。)
上記にも書いていますが、SpawnactorfromclassのノードでSphere_Blueprintを指定するのをわすれないようにします。これをわすれるとbボタンをおしても弾は生成されません。
弾のブループリントを改良する
ここまでの作業の状態だとキャラクターが向いた方向には弾はとんでいきません。それと弾の速度も調節することはできません。以下のように弾のブループリントを改良します。(前回の記事で作成したSphere_Blueprintを改良します。)ブループリントノードの完成図は以下のとおりです。
少し読者の方に残念な思いをさせるかもしれないですが、このノードを解説する知識がわたしにはありません。UnrealEngineのマニュアル – Pawnを読んでみましたが、よく理解できませんでした。しかし、画像の通りにブループリントノードを構築すればうまく弾は発射できるようになります。
ブループリントノードを構築したらコンパイルします。そのあとspeed変数の値の設定を自由に変更して、弾の発射スピードを好きな速度にかえることができます。
ゲームをプレイしてみると以下のようになります。
#UnrealEngine#UE4#Blueprint#ThirdPersonCharacter pic.twitter.com/2dhd9iztZe
— 初心者のプログラミング (@psbeginer) March 3, 2019
まとめ
今回はキャラクターから弾を発射させる方法を見てきましたが、どこでどのブループリントノードを構築するかがわかりにくいかもしれません。最初はキャラクターのスケルトンを開きソケットを追加しました。次にキャラクターのブループリントと弾のブループリント(Sphere_Blueprint)に改良を加えています。
ブループリントノードを見てなにをやっているかわからないこともあるのですが、とりあえず画像の通りつなげば動くこともあるので、疑問をもたずにどんどんやっていきたいところです。
コメント