本日のテーマは『スイカゲーム』風の落ちものパズルを作ろう です
本記事は、自機が一旦玉を保持した状態で位置決めしてから落とせるようにします
URSuika UnrealEngine製のスイカゲーム風3D落ちものパズルゲーム – BOOTH
無料です(Windowsのみ)遊んでみてください。
最初は物理シミュレーションオフ
本家はあらかじめ雲がフルーツを持っていて位置調整して落とす仕様ですね
合わせるかはお好みですが一旦持てるようにしましょう
持たせる方法を実現する技はたくさん選択肢があるのですが、物理シミュレーションを止めて落下しないようにしておいて、ボタンを押したらスイッチオンで物理シミュレーションを有効にするという作戦を試してみましょう
空中に浮かぶようになりましたね
でも自機の動きについてこないと持っているようにはみえませんね
一緒に動く
いっしょに動くようにする方法は、主に下記2つ作戦があります
- 玉の位置情報にプレイヤーの位置情報を上書きして強制的に動かす
- プレイヤーと親子関係にすることで親にくっついて動くようにする方法があります
今回は後者の方法にしてみます
BP_ThirdPersonCharacter > イベントグラフ / IA_Jumpイベント
SpawnActorの出力ピンからスポーンされたフルーツを見ることができるので、これをAttach Actor to Component ノードで親を設定します
Actor to ActorでもいのですがActor to Component だともっと細かく、親アクターを構成するコンポーネント要素の子にできる、つまり、手に持つとか頭にかぶるといった指定ができます
親にすべきコンポーネントは今回の場合本体のカプセルなので、コンポーネントタブからドラッグでもっていって端子のところで離すとつながります
今回はカプセルの原点(中心)とアクター自身の原点が同じなので、アクターで十分ですが、せっかくなのでコンポーネントにしておきます
おっと動きましたが、すごく変な位置にでましたね
これはこのステージ上の原点からの相対位置を、プレイヤーからの同じ相対位置キープで原点を変更した状態です
相対位置キープという設定がこの場合はよろしくないので親の位置に一致するようにリセットしてあげましょう
ここにその設定があります
今回の場合はスポーンした時いた場所をキープするという設定と親にスナップするという設定で同じ位置なのでどちらでも構いません
スケールという拡大率はいまのところいじってないのでどの設定でも変わりません
わーいできましたね
キー操作で落下させる
ではあとはスポーンさせた後離したら落下させたいです
まずさきに、スペースバーを離したタイミングでスポーンしているのを、スペースバー押したらすぐスポーンするようにして、さっきのスペースを離したときのイベントで、玉を離す処理を作りましょう
おさらいですが、ここにチェックを付けるというのがやりたいことです
プレイヤーの処理で直接変更することもできるのですが、玉自体に電源ボタン的な機能を持たせてプレイヤーにそのボタンを押してもらうイメージにしましょう
フルーツ自身が起動するボタン(イベント)作成
BP_Fruit > イベントグラフ
アッドカスタムイベントという自作のイベントを作れるノードを出しましょう
このノードは今後何度も繰り返し使います
起動なのでActivate アクティベートという名前を付けてみました
起動命令を受け取ったらここから玉を持ってきて玉のシミュレートフィジックスにチェックを付けます
名前はPowerOn 電源オンとかでもかまいません
設定を変えるのはセットなんちゃらです
逆に現在の設定を知るのはゲットなんちゃらです
※微妙に設定名とノード名が違うものがあります
Simulate ピンにチェックを付けるとゲーム実行時Activateイベントが呼ばれた際に「Simulate Physics」にチェックが付きます
自機から持ってるフツールを起動(し落下させる)
ではさきほどのサードパーソンキャラクターに戻って、いまつくったイベントを呼び出しましょう
その前に、ゲーム内にはたくさんのフルーツがいて起動させたいフルーツを特定する必要があるのでスポーンさせた直後に目印をつけておく必要があります
BP_ThirdPersonCharacter > イベントグラフ
変数に昇格という右クリックメニューでそれができます
変数とは変化する数字、まぁ中身を入れ替えられる箱みたいなものです
その箱にスポーンされた直後の出来立てのフルーツが入っています
New Var は(New Variable)新しい変数って意味で、それだとあとから見て何が入っているのかわからないので、Current Fruit いまできたフルーツって感じの名前を付けましょう
ここの表示や変数リストのところの表示も変わりました
では箱に入っているフルーツの起動ボタンをポチっと押しましょう
変数のところからドラッグで引っぱり出してゲットとセットが選べるのでゲットで情報を取り出します
さきほど作ったアクティベートイベントを呼び出します
これが起動ボタンポチるというプログラミングになります
これでボタンを押し始めたら作られる玉が、ボタンを離したら起動してシミュレートフィジックスが有効になり落下する という一連の流れができました
動作確認しましょう
スペース押すとできて離すと落下できますね
また、改造前は真下に落ちていたのが、斜めに落ちるようになったのにも気づいたでしょうか
これは親子関係にしたことで、プレイヤーの速度も引き継いで慣性の法則です強制的に同じ位置に合わせる作戦だとこうはなりません
どちらが正解というわけではないのでどういう動きをさせたいかで作ってみて、実際そうなったか確認 という仮説・検証を小さく繰り返しましょう
コメント