変数でライフやスコアを作ろう(後編)

こんにちは、インターン生の鶴田です。
GameMaker Studio(以下GMS)について紹介していく記事、最終回となる第10回のテーマは変数でライフとスコアを作ろう(後編)」です。

前回はライフの変数を作って敵キャラに耐久力を持たせてみましたが、
今回は前回の最後に作ったオブジェクトを使って、
・スコア用の変数を作る
・作った変数をスコアとして表示する
・敵キャラを倒した時にスコアが増えるプログラムを作る
の3段階に分けて説明していきます。
細かいところまで説明すると本当に複雑なので、「とりあえず説明を読んで同じ事をすれば実行はできる!」という最低限の説明に留めました。

・スコアの変数を作る-グローバル変数の定義-
ではスコアの変数を作ります。前回でライフの変数を作ったし、今回も同じように…ではありません。
さっき作ったライフはキャラがそれぞれ持つ変数ですが、スコアは1個あればいいし、何より敵を倒した時にスコアが増えるようにしたいですよね。
そういう「他のオブジェクトの動きと連動させたい変数(今回のスコアもこれ)」や「ゲーム全体の動きにかかわる変数(制限時間などです)には、グローバル変数を使いましょう。
グローバル変数は簡単に言うと「プログラム全体のどこからでも中身を出し入れできる変数」です。他にも色々意味はあるんですが難しいので省略します。

ではやっていきます。前回の最後に作ったtokutenオブジェクトのCreateイベントにCommonカテゴリの「Set Global Variable」ブロックを置きます。

Nameをtensuに、Valueを0にします。この辺はライフの変数を作った時と同じです。
これでスコア用の変数ができました。

・スコアを表示する -Drawイベント-
次にDrawイベントに移ってスコアを表示する処理を作りましょう。
ブロック一覧のDrawingカテゴリにある「Draw Value」ブロックを置いてみましょう。

ブロックを置いたら、上から
Caption欄に「”score:”」
Value欄に「grobal.tensu」
XとYには100を入れてRelativeのチェックは外します。

これでスコアの変数を画面に表示する処理ができました。一度Runしてみて画面に「score:0」という文字列が出るか確認してみてください。
これで、グローバル変数tensuの中身をスコアとして表示するプログラムができました!

・フォントを設定する
「スコアが出たはいいけど文字が小さい!」とか「文字のフォントを変えたい!」という声もあると思います。
そこで、GMS上で使うテキストのフォント設定の方法を紹介します。
画面右のリソースツリーの中に「Fonts」という項目があります。ここにフォントの設定データを作ることができます。

オブジェクトやスプライトを作るときと同じように、Fontsを右クリック→Create Fontを選択。

フォントデータの設定画面が出てきます。

とりあえず今使うのはSizeです。わかりやすく大きくしたいので25にします。

これで大きい文字の設定ができました。実際に使うには、描画をする処理の前にフォントを指定してあげないといけません。
tokutenオブジェクトのDrawイベントに戻ります。Drawingカテゴリの「Set font」ブロックを『Draw Valueブロックの上に』出しましょう。

これがフォントを設定する処理です。Font欄の右にあるボタンを押すとフォントの一覧が出るのでさっき作ったフォントデータを指定します。

フォントの設定ができていたらもう一度Runしてみましょう。「score:0」の文字列が大きくなっていれば成功です!

・スコアを変化させる
最後に、敵キャラを倒した時に得点が増えるプログラムを作ります。
敵キャラに関するイベントなので…そう。enemyオブジェクトですね。
敵キャラが消える時にスコアが増えればちょうどいいタイミングになりそうです。
なので、shotオブジェクトとの衝突イベント内、Destroy Instanceブロックの直前にスコアが増える処理を入れてみます。
Set Global Variableブロックを画像のような並びになるようにドラッグします。Destroy Instanceブロックの真上に持っていくとうまくいくはず。

Name欄にtensu,
Value欄に100と入れ、Relativeにチェックを入れます。
これで、敵キャラが倒される際にグローバル変数tensuが100増えるようになりました。
Runしてみましょう。敵が倒された時にスコア表示が100増えていれば成功です!

さっきtokutenオブジェクトでtensuの中身をscoreとして表示するようにしたので、他のイベントでtensuの数値が変わると表示にダイレクトに反映されます。
このように、グローバル変数は複数のオブジェクトをまたにかけて処理する時に使うと便利です。

・まとめ
スコアの出し方もわかっていよいよこれから!…というところなのですが、この記事はここで終わります。
この記事で説明するのはあくまで基本操作。ここから先は自分が作りたいゲームのアイデアを元に、色々と試行錯誤をしてみるのが一番です。
この記事を読んでGMSを使ってみた人の中には「もっとこういう機能があればアイデアを実現できるのに!」と思う人もいるかもしれません。
もしそうなったら、ドラッグ&ドロップではなくGMLを使った本格的なゲーム作りに挑戦してみましょう。GMLを使うとドラッグ&ドロップよりも自由度の高いプログラミングができ、様々なゲームを作りやすくなります。
自分がこのインターンの中で作ったゲームもGMLを使って作られています。制作中にに参考にしたサイトをこの記事の最後に載せているので、そちらも見てみる事をおすすめします。

・記事を振り返って
「GMSなら簡単にゲームを作れる!」とか「プログラミング未経験でも大丈夫!」などと言っておきながら半ば投げっぱなしの形で終わってしまいすみません。
自分の記事を振り返って良かったなと思う所は、どういう操作をするか強調して、作業画面の遷移をなるべく図説できるようにまとめた所。
反省点は終盤の内容を詰め込みすぎた所です。

拙い記事でしたが、最後まで読んでいただきありがとうございました。
GameMakerStudioがもっと日本で流行って、Unityに負けないくらい関連書籍やリファレンスが充実しますように。

2018年 鶴田 義直

・参考にしたサイト(敬称略)
チャレンジ!GMS/GameMakerStudio 1.4 Blog
http://prester.org/gms/?page_id=57

Game Maker まとめWiki
https://www.wikihouse.com/GameMaker/

※記事中の画像はすべてGameMaker Studio 2のスクリーンショットを加工したものです。

興味を持たれた方はお気軽にお問い合わせください。

インターンシップへの申し込み・お問い合わせ先

インターンシップへの申し込み・お問い合わせ先
メールでのお問い合わせは、下記フォームに入力して送信してください。
ご氏名 (例)山田 太郎
メールアドレス 半角英数字:ご入力間違いのないようにご注意ください
メールアドレス(確認用) 半角英数字:ご入力間違いのないようにご注意ください
電話番号 (例)0354339211 ※ハイフン抜きで入力してください
題名
お問合わせ内容

アーカイブ

カテゴリー