イライラ棒的なゲームを作ろう!(棒じゃないけどw)
イライラ棒、いやイライラ「球」を作ろう!
仕様としては・・・
・マウスのドラッグ操作で球を動かす
・弾が何かにヒットしたらゲームオーバー
・ゴールに到達したらクリアー
~カメラの設置~
上から全体を見下ろせる位置にカメラを設置。


~プレイヤーコントローラー・ゲームモード作成~
「IraIra_Con」という名のPlayerControllerを作成。
クラスのデフォルトの詳細パネル「MouseInterface」欄の赤枠で囲った部分にチェック。

これでクリックイベントが有効になり、ゲーム開始時常にマウスカーソルが表示されるようになった。
「IraIraGameMode」という名のゲームモードを作成。
クラスのデフォルト詳細パネルの「Classes」欄の赤枠で囲った部分を変更する。
先程作成したプレイヤーコントローラー「IraIra_Con」を割り当てよう。
デフォルトポーンは、「None」で。

ワールドセッティングのGameModeに、作成したゲームモード「IraIraGameMode」を割り当てる。


~球の作成~
「IraIra」という名のアクタークラスのBPを作成。
コンポーネントを以下の通り。

ドラッグ操作するための処理

このアクターがクリックされたときに呼ばれるイベント「OnClicked」と、
このアクターがクリックし終わった時に呼ばれるイベント「OnReleased」を追加。
「OnClicked」は、GateノードのOpenに。
「OnReleased」は、Closeに繋げる。

GetHitResultUnderCursorByChannel
TraceChannel・・・カーソルのトレースチャンネル(コリジョン)
HitResult・・・カーソルのヒット情報
ResultValue・・・カーソルがヒットしたかどうか
このノードは、「GetPlayerController」からじゃないと出てこない。
マウスカーソル位置に球を追従させたいので、HitResultを分解(BreakHitResult)し、Locationを分解(BreakVector)する。
XとYのみ自由に移動させるようにする。Zは「80」で。
理由は後程。

移動させる処理として、SetActorLocationを使用。
Sweepにチェックを入れるのを忘れずに。

さて、先ほどの
XとYのみ自由に移動させるようにする。Zは「80」
の理由だが、
例えば、Zを「0」にしたらどうなるか。

埋まる。
理由は、床の位置とちょうど被るから。
これは床を球とぶつからないように下げるか、球のZを「80」にすればいい。
今度は、以下のようにしたらどうなるだろう。

カメラのほうに向かって勢いよく向かってくる。
なぜなら、
カメラはワールド内のZの位置に設置している。
という事は、実際球を動かす時XとYを自由に動かせるようにしないといけない。
Zにまで移動可能にすると、Zの位置に設置してあるカメラのほうに向かってきてしまうから。

だから、Zにまで動かす必要が無いのだ。

何かとぶつかった時の処理
シンプル。
何かとヒットした時に、爆発エフェクトを出して、球を破壊してるだけだ。

ここで、適当にステージを組もう。

~UMGの作成~
クリアーしたときのUMG
「Clear」という名のUMGを作成。

「CLEAR!」というテキストを追加。
真ん中に設置。

ゲームオーバーした時のUMG
「GameOver」という名のUMGを作成。

先程とほとんど同じ。

ゴール位置の表示
「Goal」という名のUMGを作成。

先程と同じ。

~ゲームオーバー処理~
「IraIra」のイベントグラフに以下の処理を追加。
DestroyActorの後に、GameOverUMGを表示。

~クリアー処理~
まず、ゴールを設置。
ボックストリガーを置こう。

設置したボックストリガーに、コンポーネントを追加しよう。

Widgetの詳細にある「UserInterface」欄は以下のように設定。
Space・・・Screen
WidgetClass・・・作成したUMG「Goal」を設定。

「IraIra」のイベントグラフに以下の処理を追加。
ブランチを追加し、Conditionには「Clear?」という名のBool値を繋いだ。
デフォルト値はFalseに。

レベルBPに以下の処理を。
レベル内に設置したボックストリガーを選択状態にしたまま、レベルBPのイベントグラフを右クリックし、
OnActorBeginOverLapを追加。

設置したゴール(ボックストリガー)に、「IraIra」がオーバーラップしたら、「Clear」UMGを表示し、「IraIra」BPにある「Clear」Bool値をTrueにセット。
こうすることで、ドラッグ操作による球の移動が不可能になる。

これでプレイしてみよう!
プレイ映像(死亡ラッシュ)
クリアー時
非常にシンプルだが、とりあえずゲームっぽいものはできた。
何回も死ぬ羽目になるので、リセット機能は必須かもしれないw
他にも、いろいろとステージやギミックを増やして面白くするのもいいかもしれない。
それではまた!^^ノシ