にしのクエスト2

情報処理技術者試験と資格学校講師の日常

20221224103753

Unityで学ぶプログラミング 箱を積み上げるゲーム(8)得点の表示とハイスコア

(注意)
この連載は、ある程度ゲームを作ったことある人の
ためのものです。「アタッチ」とか「C#スクリプト
の作成」とか「カメラアングルの変更」とか、その
レベルの話は
省略しています。よろしくお願いしま
す。
  

 

www.nsnq.tech

 


前回の続きです。

・得点が表示されること。
・ゲームオーバー(床にブロックが崩れる)のときに、
 最高得点を記録し、Geneの表示位置やカメラ位置を
 リセットすること。

これらをやってみましょう。

今回はソースの改変部分だけをご紹介します。

(Block Cの改変)
一回ゲームオーバーの場合はフラグを9にしときます。


//消す
Destroy(blk);
//Flag9に
GC.flag = 9;

(GameCの改変)

public class GameC : MonoBehaviour
{
//インスタンス用
public GameObject blk;

//スコア
public int Score = 0;

//フラグ
public int flag = 0;

//スタート位置
Vector3 stPos;

//メインカメラ本体
private GameObject MCamera;

//スコア収納用
GameObject txt1;

//最高得点
int ScoreMax=0;


// Start is called before the first frame update
void Start()
{
//スタート位置を取得
stPos = transform.position;

//カメラを発見する
MCamera = GameObject.Find("Main Camera");

//テキストを発見する
txt1 = GameObject.Find("Main Camera/Score");

}

void Update()
{
if (Input.GetKey(KeyCode.Space)&&flag==0)
{

//オブジェクトを生成する
Instantiate(blk, new Vector3(transform.position.x, transform.position.y - 1, transform.position.z), Quaternion.identity);

//フラグを立てて
flag = 1;

//スコアを加算する
Score += 1;

//高さを加算する
stPos.y += 1;
}

//射出の左右の動き
transform.position = new Vector3(Mathf.Sin(Time.time) * 4.0f + stPos.x, stPos.y, stPos.z);

//メインカメラの位置の更新
MCamera.transform.position = new Vector3(0, stPos.y+5, -12);


//得点の表示と更新
txt1.GetComponent<TextMesh>().text = "高さ:"+Score.ToString ()+"\n"+"最高:"+ScoreMax.ToString ();

//ゲームオーバーリセット
if(flag==9){

//最高得点が更新されるか
if(Score>ScoreMax){
ScoreMax=Score;
}
//位置やスコアのリセット
stPos.y=7;
Score=0;
flag=0;
}
}

 


次回は音を出せたりします。それで終わりかもしれません。

そりゃ、面白さを追求すれば終わりはない・・・かもしれま
せんが(ふっ

次回完成。こうご期待!

質問があればDMやらコメントをお願いします。

それではよきプログラミングライフを!
またね。