イライラ棒的なゲームを作ろう!(棒じゃないけど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
他にも、いろいろとステージやギミックを増やして面白くするのもいいかもしれない。
それではまた!^^ノシ