にしのクエスト2

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

20221224103753

Unityで学ぶプログラミング (初心者)寸止めゲームを作ろう(3)テキストへのアクセス

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

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

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

GameC(Game Directorにアタッチしてあるやつ)の続きです。

今日は「地面までの距離がわかる」ところまでいきましょう。

前回と同じですが、プログラムをアタッチしているのはGameDirector
という全体の進行役に決めたオブジェクト。

このオブジェクトから直接、3Dテキストオブジェクト(Message)
を操作することはできません。

なので、前回と同じで
1 オブジェクトを発見して変数に格納
2 さらに、テキストを司る部分を取得

しておく必要があります。

//落下オブジェクトを格納する変数
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)&&missFlag==0)
{
//重力を切る
ObjARigid.useGravity = false;

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

//距離を表示
MesTM.text="地面まで"+(ObjA.transform.position.y-0.5f);
 
}
}


これで、テキストを書き換えることができました。
0.5引いてあるのは、オブジェクトの真ん中が計測のポイントに
なっているので、床までの距離を引いたわけです。

このように、Unityでは各オブジェクトを発見して、その中のプロ
パティを変更しながらプログラムを作っていきます。

次回も、プログラムを作っていきます。
地面に衝突したら、距離もへったくれもないので。

・地面に衝突したことをオブジェクトからゲームティレクターに
 返すプログラム。

これを進めていきましょう。

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