ハイスコア処理の方法!(下準備)
今回やる事は、
ステージ制のゲームでのハイスコア処理
だ。
ゲーム内容としては、
スタート地点からゴール地点まで、何秒でたどり着けるか
というもの。
そして、クリアーした時間が「スコア」となる。速くゴールすればその時の時間が「ハイスコア」となる。
ステージ数は3つ。という体で行く。
処理全体。最終的にこうなる。
あまり1つの記事に長々と書きたくないので(めんどくせぇし)、小分けにして記事を出していく。
今回は、下準備だ。
用意するもの
・ActorクラスのBP(記事内では「BP_Goal」という名前で出てくる)
・GameInstance(記事内では「MyGameInstance」という名前で出てくる)
・GameModeBase(記事内では「MyGameMode」という名前で出てくる)
・3つのマップ(レベル)
・レベルBP
・SaveGame(記事内では「SaveScore」という名前で出てくる)
「BP_Goal」の作成
前述の通り、ActorクラスのBPだ。
この「BP_Goal」は、ゴール地点としての役割を担う存在だ。
Box・・・オーバーラップコリジョン。プレイヤーがオーバーラップしたらゴール!という判定をする為のもの。
ParticleSystem・・・ゴールだという事を分かりやすくするための目印のようなもの。
自分はこんな感じにした。派手な炎エフェクトで分かりやすいだろう。
変数
「StageID」という名のInteger型の変数だ。
これは、今何ステージ目をプレイしてるのかを示すための変数だ。
今回の処理でとても重要だ。
デフォルト値は「0」のままでいい。
「MyGameInstance」の作成
これはタイマー、つまり時間の「分」と「秒」を格納する為のもの。
今回ハイスコア処理をするうえで重要な存在となる。
変数
MinuteInstance・・・「分」を格納する為の変数
SecondInstance・・・「秒」を格納する為の変数
「MyGameMode」の作成
これは主にタイマー処理を行う為のもの。
処理は以下の通り。
「秒」の処理。
「秒」と「分」を、ゲームインスタンスに格納
「Minute」は「MinuteInstance」に。
「Second」は「SecondInstance」に。
「分」を更新する処理
「秒(Second)」が「60」に達した時、つまり「60秒」に達した時
Trueに処理が流れ、
「分(Minute)」に「1」を足す。つまり、「1分」経ったという事になる。
この時、「秒(Second)」が「60」以上行ったらおかしいから、「秒(Second)」を「0」にセット。
そしてまた「秒(Second)」が1秒おきに更新されていく・・・といった感じだ。
3つのマップ(レベル)の作成
3つレベルを作成する。
ステージ名はそれぞれ分かりやすく「Stage1」「Stage2」「Stage3」にしといた。
それぞれのレベルにゴール地点の役割を担う「BP_Goal」を配置しよう。
Stage1
Stage2
Stage3
もちろん自分の好きな位置に置いてくれて構わない。
レベルBPの作成
それぞれのレベルのレベルBPに以下のような処理を組む。
Stage1のレベルBP
Stage2のレベルBP
Stage3のレベルBP
「BP_Goal」から「StageID」変数を参照。
各レベルごとに数値をセットしている。
これは今回の処理でとても重要だ。
「SaveScore」の作成
SaveGameクラスのBP。
SaveMinute・・・タイマーの「分」を格納し、セーブする為の変数
SaveSecond・・・タイマーの「秒」を格納し、セーブする為の変数
HighScoreMinute・・・ハイスコアの「分」を格納し、セーブする為の変数
HighScoreSecond・・・ハイスコアの「秒」を格納し、セーブする為の変数
今回はここまで。
次回は、実際にどのようにハイスコア処理をしていくのかを紹介する。
それではまた!^^ノシ