続きです。
今回は攻撃を実装していきます。
結果的にこうなる
目次
弾を作ろう
攻撃手段はショットだからまず必要なのは弾。
コンテンツブラウザで右クリックしブループリントクラスを選びActorを作成
名前はBP_Bulletにしておこう
BP_Bulletを開いてもまだ何もないため、まずは弾の見た目を付ける。
コンポーネントを追加から球を選ぶとビューポートに白い球が出てくる。
これが今回の弾の見た目となる。
同じようにしてSphereCollisionも追加する。
これが弾の当たり判定となる。
この二つを追加することで、見た目と当たり判定がそろった。
ただ、このままだと弾がでかいのでいい感じに小さくする
Sphereを選択してトランスフォームの拡大縮小を0.2ぐらいにしておくとちょうどいい感じのサイズになってくれる。
また、当たり判定のほうもシェイプのSphereRadiusを16ぐらいにしておくとちょうどよくなる。
→
また、Sphereにはデフォルトで当たり判定が存在し、キャラクターを押し返してしまうので、当たり判定をなくす。
Sphereの子リジョン設定のコリジョンプリセットをNoCollisionに変更。
これでキャラクターがぶつかって押しのけられることはなくなる。
弾を動かそう
さて、見た目は問題なくなったところでワールドに配置してプレイしてみると
動いてないことに気づく。そう、弾なのに進んでないのだ。
それもそのはず、弾が移動する処理を書いていないから。
というわけで弾が前に直進する処理を実装していく。
処理の内容は、正面に向かって進む。これの役割がわかるのは後でだけど、2D3D関わらず正面に進むという実装は大事。
あと、速度を簡単に調整できるように、速度を変数にする
変数の「+」を押して変数を追加して設定を
そしてFloat型にしてちょろっと設定する
そして繋ぐ。
また、このままだと無限に飛んで行ってしまうため一定時間で消えるように設定しておく。
必須というわけではないが、作法のようなものなのでとりあえずマネしておいてね
これで弾が飛ぶようになったので次は実際に発射してみる。
弾を発射しよう
弾を発射するにあたって、まず入力が足りない。
「ショットをするためのボタン」が設定されていないので、それを設定する。
プロジェクト設定を開き…
左のリストからインプットを選択し、バインディングのアクションマッピングを開く。
右の「+」でアクションマッピングを一つ追加し、マウスの左ボタンを設定する。
それが終わったらキャラクターに発射の処理を書く。
開くのはSideScrollCharacterのブループリント。その中のイベントグラフに記述する
どれ?って人は[SideScrollerBP/Blueprints]の中にあるから探してみよう
何もないところで右クリックして「Shot」と入れればさっき追加した入力設定が出てくるはずなので、選択する
そしてこんな感じに処理を書く。
SpawnActorでClassの場所に今回作ったBP_Bulletクラスを設定。
Shotに設定したボタンが押されたら、弾をプレイヤーの位置から、プレイヤーの向きで生成するという処理。
GetActorTransformの中には座標・向き・拡縮率が入っている。
これにより、生成された弾の正面はプレイヤーの向きと同じになるため、弾はキャラクターの向いている方向に向かって飛んでいく。
キャラクターの方向に弾が飛ぶなんて常識じゃん。頭おかしいんか?って思うかもしれないけど、X方向に向かって進む。とか書くとキャラの背中から弾が出てきたりするからね。
良い子はこんな処理書いちゃダメだぞ
ここまで問題なければ、こんな感じに動くはず。
ロックマンみが増してきた
- 次回予告 -
今回はここまで。
プレイヤーが能動的に弾を発射できるようになったので敵を倒せる準備ができた。
しかし
モーションもなく腹から弾が出てくるのはどうなん…?
と思われても仕方ないので、次回はプレイヤーのモーションを設定してちゃんと弾を発射してるっぽい動きにする。