にしのクエスト2

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

20221224103753

Unityで学ぶプログラミング (初心者)寸止めゲームを作ろう(2)止める

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

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

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

f:id:koharuwest:20201123171539p:plain

まずは、スクリプトを作っておきます。
GameCと名付けて、Game Directorにアタッチしておきます。

で、プログラムを書いていきます。

今日は「スペースキーを押せば止まる」ところまでいきましょ
うか。

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

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

変数の部分です。
オブジェクトとRigidを格納するもの。
ついでに、フラグも作っておきます。
これは後で、オブジェクトから「床に当たったよ」という
信号をキャッチするものだと考えてください。

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

//落下オブジェクトのRigidbodyを取得
ObjARigid=ObjA.GetComponent<Rigidbody>();
 
}

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

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

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

このオブジェクトから直接、落下するオブジェクト(Object A)
を操作することはできません。

なので、startで
1 オブジェクトを発見して変数に格納
2 さらに、物理を司る部分を取得

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

んで、update(常に反応する部分)でスペースキーが押されたら。
1 落下物の重力を切る
2 落下物の勢いを止める

っていうことになります。

次回も、プログラムを作っていきます。

・テキストの内容を書き換える準備
・箱と地面の距離を表示する。

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

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