こんにちは、PORTABLE SHELL ぽたぼぅ です。
私たちが作っているゲームの、今作・前作のシナリオは「いさ」が担当してくれたのですが、
私も将来ゲームのシナリオくらいかけるようになりたくて、最近「小説」の書き方を猛勉強中です。
まだ稚拙な文章ですが、現在執筆中の作品がある程度完成したらこのブログにアップしたいと思います。
それでは、タップゲームのPart3、やっていきます。
EXPテキストを更新する
今回の目標は「モンスターをタップで倒す」システムの実装ですが、
先に、モンスターをタップで倒した時に魔王に経験値が入るようにシステムに書き加えます。
GameManagerのスクリプトに記述を追加します。
オブジェクト参照に、「textScore」、メンバ変数に「score」と「nextScore」を追加します。
記述が終わったら「GameManager」オブジェクトのインスペクターに「TextScore」を追加しましょう。
次に「GetMob」メソッドを追加します。
public void GetMob(){
score += 1;
RefreshScoreText ();
}
中身は、スコアを1ポイント追加し、「RefreshScoreText」を呼び出すという簡単な記述です。
前回も同じような順番でメソッドを作りましたが、
これでは、ゲームを開始した時点で「RefreshScoreText ();」がありません。
という内容でエラーが起きてしまうので、「RefreshScoreText ();」をさっさと作ります。
void RefreshScoreText(){
textScore.GetComponent ().text =
“EXP” + score + ” / ” + nextScore;
}
中身は、テキストを上書きするという記述ですが、
2行目が上書きしろという命令で、3行目が上書きする内容の記述です。
モンスターを1匹もタップしていない状態だと、メンバ変数として、
「score」は「0」、「nextScore」は「10」と設定しているので、「EXP0/10」と表示されるはずです。
今のままでは、「RefreshScoreText ();」を呼び出すのはモンスターをタップした時だけです。
ゲームスタート時に、「EXP0/10」と表示させたいので、
「Start」関数の中にも「RefreshScoreText ();」と記述してあげましょう。
イベントトリガーでタッチ判定
次にスライムにタッチの判定を追加します。
まず最初に、「Prefab化」した時に与えてあげた、
「MonsterController」に「TouchMob」メソッドを追加します。
次に、「ImageMons001」Prefabのコンポーネントに、
イベントトリガーコンポーネントを追加し、「Add New Event Type」で
「PointerEnter」を選択してタッチを検出させます。
「PointerEnter」の「BaseEventData」の中身を設定します。
「MonsterController」内の「TouchMob」を設定すると、タッチ時に「TouchMob」を呼び出します。
モンスターを倒す記述を追加
「MonsterController」の中身を記述して行きましょう。
オブジェクト参照に、「gameManager」を追加し、「Start」関数内で、GameManagerを探しておきます。
タッチ時に「TouchMob」を呼び出すように設定したので、「TouchMob」の中身を記述していきます。
public void TouchMob(){
if(Input.GetMouseButton (0) == false){
return;
}
gameManager.GetComponent ().GetMob ();
Destroy (this.gameObject);
}
簡単な説明をすると、
gameManager内のGetMob();を呼び出し、Destroy (this.gameObject);で自身(スライム)を消去します。
これで一通りの記述と設定が終わりました。
ゲームを起動するとタッチしたモンスターが消え、EXPが追加されるようになります。
マウスの場合はモンスターをドラッグするよう操作すると綺麗に消えてくれます。
Part3は以上です。
これで成長する魔王が出来上がりました。
今はゲームスタート時にモンスターを最大5匹生成しています。
タッチしてモンスターを倒しきってしまうと、ゲームが進まないので、
次回の目標は「モンスターが減ったら自動で追加生成する」ようにします。
記述が複雑なのでさらにいくつかに分けてあげるかもしれません。
この記事が参考になれば幸いです、それではまた。