本日のテーマは『スイカゲーム』風の落ちものパズルを作ろう です
URSuika UnrealEngine製のスイカゲーム風3D落ちものパズルゲーム – BOOTH
無料です(Windowsのみ)遊んでみてください。
本記事は、自機が玉を落とす(スポーン)機能の実装をします。レベル上にあらかじめ置いてないアクタを登場させる方法を学びましょう。
スペースキーで玉をスポーン
これまでステージ上にあらかじめ置いてあるものと、もとから勝手におかれるプレイヤーキャラだけしかありませんでした
次はいよいよ玉をスポーンさせる処理です
浮いているので必要なくなったジャンプボタンを改造してスペースキーを押したら玉をスポーンさせる処理をつくりましょう
BP_ThirdPersonCharacter > イベントグラフ
ジャンプ処理を消すと端子が隠れて、開くとたくさんあって、どれがどれかわかりにくいですが
Started 開始 と Completed 完了 です
どちらでも構いませんが、ボタンを離したときに落とす仕様にしてみます
端子からドラッグで線を引っ張ってブループリントのアクタをスポーンさせる処理は「Spawn Actor from Class」です
途中まで書くと検索結果が絞り込まれていきます
クラスを選択というところでBPフルーツを探します
これでジャンプボタンを押したら玉が出る処理です
ただしこのままでは玉がどこに出るのかが定まっていないので、それを指定するのがスポーントランスフォームの端子です
トランスフォームは位置と回転とスケール(拡大率)の情報の束で端子のところで右クリックして構造体ピンを分割とすると、
このように束になっていた情報を分解することができます
それと同時に分解した9個の入力欄にそれぞれ0や1の情報がセットされているので、これでスポーンさせる位置や大きさが決まり、ゲーム中にスポーンさせられるようになりました
ですがゲームを開始してスペースキーを押しても出てきませんね
実際は、ここに出ています
これはこのゲームの世界の原点000がこの位置だからです
あとは先ほどのLocation 位置の情報に、プレイヤーキャラ自身の位置情報を入力してあげるとプレイヤーのいる場所から玉が落ちるという処理にできそうですね
そういうときは、こちらの入力したいロケーションの端子から線を引っ張りだしてあげると、あらかじめ位置情報を出力することができるノードに絞り込まれるので、ここからさらに Get Actor Location を探します
アクターはゲームに登場する役者のことでしたね
セルフというのは自分自身のことです
なのでこのキャラクターの本体であるカプセルの中心の座標が出力されます
BPフルーツがスポーンされる処理がノード2個つないだらできましたね
わーいできました
動いてもその位置に出てますね
ただしよく見ると少し違和感があります。異変が発生しているようなので引き返しましょう
自機とぶつかる問題
ちょっとズレているのは位置が間違っているのではなく、スポーンされた玉とプレイヤーがぶつかっているせいです
ぶつからないようにずらした位置に出すか、もしくはプレイヤーとはぶつからないようにする作戦が考えられます
現実ではずらすしか選択肢ありませんが、ゲームなのですり抜ける超能力を簡単に付けられます
コリジョンというぶつかり判定の設定で、ブロックというのがぶつかる設定です
ノーコリジョンにすると全部無視という設定に変わります
相手にもこの設定がありブロック同士はぶつかり、オーバーラップは重なったことに気付けて、どっちか無視ならお互い無反応です
ブロックとオーバーラップだとオーバーラップ側しか気づけないといった罠も自分で試してみないと意味が分かりにくいのでいろいろやってみてください
プレイヤーがすべてを無視する幽霊状態になったので、玉にもぶつからなくなったでしょうか
まだズレていますね
これはさっきノーコリジョンにしたのがプレイヤー本体ではなくてコーンだったからです
コリジョンの設定はメッシュにもありますが一番大事なのは本体であるこのカプセルの設定です
カプセルにぶつかってズレていました
今度こそいけるんじゃないでしょうか
三角帽子の真下に落ちるようになりましたね
カメラ寄りすぎ問題
ですがカメラが変な動きをするようになりました
スポーンする瞬間超接写になっていますね
これはカメラとプレイヤーの間に障害物が挟まったらそれを避けてとにかくプレイヤーをカメラに映そうと頑張る機能がついているからです
今回のゲームではプレイヤー本体より玉を映してほしいので「CameraBoom」の「Do Collision Test」 からチェックを外しましょう
わーいできましたプレイヤーの移動の慣性は働かずにスポーンした瞬間のプレイヤーの位置から真下に落ちているだけですが、それはそういう仕様ということにしましょう
だいぶスイカゲームっぽくなってきましたね
コメント