見出し画像

初心者ゲームつくる:自らボールを跳ね返せ!バーを動かす仕組み【考察編】

さて、前回までで基礎となるボールの動きと、壁にあたったら跳ね返るとことはできたので、プレイヤーが動かすバーを考えて行きます。※バーでよいよね。

アクタはつくり、レベルに配置するのは簡単だが、
そのアクタをプレイヤーとして動かすのってどうやってつくるのかな?
カメラ視点はどうするか・?

今回は、プレイヤーは動くが、視点は固定ということで考えてみる。
いくつも手段があるので話をややこしくする。

色々な設定の概要

プレイヤーを動かそうと思った際に、まずツールががあるかというと、次のようなものがある。
ゲームモード、コントローラー、Player Start、キャラクターとPawn
まずは、基礎であるこれらの特徴をざっくりでも理解するとこから始める。

■ゲームルールを設定しトラック:Game ModeとGameStateとPlayerState

ゲームのルール セットを定義します。このルールには、プレイヤーがどのようにゲームに参加するか、ゲームの一時停止、レベルの移行、および勝利条件などのゲーム固有の動作が含まれます。ゲーム モードは、各レベルに対して設定され、複数レベルで再利用できます。

UE4.14からGame Mode Baseという新しいクラスが追加されていますので、こちらを使用する。理由はこちら。
UE4 Game ModeとGame Mode Baseの違いについて

GameModeの特徴とは?

「ゲーム」のコンセプトは 2 つのクラスに分割されます。Game Mode と Game State は、ゲーム ルールや勝敗条件など含めたゲームの定義です。サーバー上にのみ存在します。通常はプレイ中に変更されるデータがあまりあってはならず、クライアントが知る必要のある一時的なデータは絶対にあってはいけません

GameStateの特徴は?

ゲームのステートを含みます。接続されたプレイヤーのリスト、スコア、チェス ゲームの駒の位置、オープンなワールドゲームで完了したミッションのリストなどが含まれます。GameState はサーバーとすべてのクライアント上に存在し、自由にレプリケートして全てのマシンを最新の状態に保つことができます。

PlayerStateとは?

PlayerState は、人プレーヤーやプレイヤーをシミュレートしているボットなどの、ゲームの参加者のステートです。ゲームの一部として存在する非プレイヤーの AI は PlayerState を持ちません。PlayerState として適切なデータの例には、プレイヤー名、スコア、MOBA などの場合のインマッチ レベル、CTF ゲームでプレイヤーが今フラグを持っているかどうか、などがあります。すべてのマシン上ですべてのプレイヤーに対して PlayerStates が存在し (PlayerControllers とは異なります) 、自由にレプリケートして同期することができます

上記のようにみていくと、多くはオンラインによる複数のプレイヤーなどを意識しなければならないときに使用するように思える。

■プレイヤーコントロール:PlayerController と AIController

ポーンと、ポーンを操作する人プレーヤー間のインターフェースです。PlayerController は、基本的に人プレイヤーの意思を表します

Player ControllerはPawnを所持するといような作りになっており、Pawnの所持を破棄するとPawnに対する操作は行えなくなります。

■キャラクター:CharacterとPawn

UE4ではプレーヤーが操作するオブジェクトをPawn(駒)と考え、それをコントロールするものとしてPlayer Controllerというものが存在します。

人間の形をしているか?していないかの違い。
あとは、プレイヤーが操作して制御するか?AIなどで動かすか?
前回作ったボールのように動く仕組みをつくるか。

全体がどのような関係図になっているかは、下記の図がわかりやすい。

画像5



大事な点は?

Pawnを操作するということであれば、Player Controllerを介さずに、
レベルや、アクタのブループリントに直接記述することで、
Pawnを操作することはできます。なんとw?

この点については、Player Controllerを介してアクタを
動かすことにどんなメリットがあるか?を理解する必要があります。
また、動かく対象がPawnかCharacterによっても
実装の仕方が異なります。

今回は、実装ではなく考察編なので、調べた際にわかった大事な点は、

【疑問1】どこにノードを記述するのか?
【疑問2】動かすノードは何を使うか?
【疑問3】対象とするアクアをどう指定するか?
【大事】オリジナルの名前がつけれるのは?どれ?変数名は?

次回はこれらを1つ1つ考えていきましょう!




この記事が気に入ったらサポートをしてみませんか?