(注意)
この連載は、ある程度ゲームを作ったことある人の
ためのものです。「アタッチ」とか「C#スクリプト
の作成」とか「カメラアングルの変更」とか、その
レベルの話は省略しています。よろしくお願いしま
す。
前回の続きです。
・得点が表示されること。
・ゲームオーバー(床にブロックが崩れる)のときに、
最高得点を記録し、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やらコメントをお願いします。
それではよきプログラミングライフを!
またね。