にしのクエスト2

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

20221224103753

Unityで学ぶプログラミング (初心者)寸止めゲームを作ろう(5)衝突後の処理

上から落ちてくるブロックを床の上で寸止めして、ギリギリを
狙うゲーム5回目です。

応用すれば、いろんなゲームに使えそうな技術が多くあるので、
是非勉強してみてください。

初心者向きとは書いていますが、ざっくりなところもあります。
ご容赦ください。わからなければ、質問してくださいね。
(TwitterとかでもOKですよ)

今日はGameCのプログラムを改造していきます。

今日は「衝突した後の処理」をさせます。

//落下オブジェクトを格納する変数
GameObject ObjA;

//落下オブジェクトのRigidbodyを格納する変数
Rigidbody ObjARigid;
 
//フラグ
public int missFlag=0;
 
//3DTextを格納する変数
GameObject Mes;

//テキストを格納する変数
TextMesh MesTM;

void Start()
{
//落下オブジェクトを取得
ObjA=GameObject.Find("ObjectA");

//落下オブジェクトのRigidbodyを取得
ObjARigid=ObjA.GetComponent<Rigidbody>();
 
//テキストを取得
Mes=GameObject.Find("Message");

//テキストのテキストメッシュを取得
MesTM=Mes.GetComponent<TextMesh>();
}

void Update()
{
//スペースキーを押すと
if(Input.GetKey(KeyCode.Space))
{
//重力を切る
ObjARigid.useGravity = false;

//加速度をなくす
ObjARigid.velocity = Vector3.zero;

//距離を表示
MesTM.text="地面まで"+(ObjA.transform.position.y-0.5f);
 
//再開の処理2秒後に
Invoke("Mokkai",2.0f);

}

最後から2行目だけ追加してます。

スペースキーを押して、無事止まった場合、
Invokeを利用して、2秒後にもう一度プレイを再開させます。

さらにその後に追加

//ミスフラグが立った場合テキストを更新
if(missFlag==1)
{
//失敗メッセージ
MesTM.text="失敗!";

//重力を切る
ObjARigid.useGravity = false;

//加速度をなくす
ObjARigid.velocity = Vector3.zero;
 
//フラグを戻す
missFlag=0;
 
//再開の処理2秒後に
Invoke("Mokkai",2.0f);
 
}
}
衝突した場合、スコアは表示せずに
再度のプレイに移行させます。
 

void Mokkai(){
 
//メッセージ
MesTM.text="もう一度";

//物体の高さを戻す
ObjA.transform.position=new Vector3(0,5,0);
 
//重力をon
ObjARigid.useGravity = true;
}

これを追加しておきます。

うまく行っても失敗しても、これが実行されて
オブジェクトは再び上へ移動し、落下を再開します。

次回は最終回です。

・最高記録の更新!


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