ifとelse
CoddyのUnityジャーニー「Unityスクリプトの基礎」セクションの一部。レッスン 6/85。
bool は2つの値のうちどちらかを保持します。true または false です。ドアは開いているでしょうか?プレイヤーは地面にいるでしょうか?ゲームは終了しているでしょうか?
bool gameOver = false;if は条件が真の場合にのみその行を実行し、else は条件が真でない場合にその行を実行します。波括弧 { } は、それぞれの部分に属する行を囲みます。
if (gameOver)
{
transform.position = new Vector3(0, -2, 0);
}
else
{
transform.position = new Vector3(0, 2, 0);
}これにより、ゲームが終了するとオブジェクトは視界の外へ沈み、ゲームが続いている間は上にとどまります。このようなコードは、Update() などのメソッドの中に記述します。クラスの最後の } の後には決して記述しません。
Unity も bool で質問に答えます。Input.GetKey(KeyCode.Space) は、プレイヤーがスペースバーを押している間は true になり、それ以外の時間は false になるため、Update() で毎フレーム確認できます。
チャレンジ
簡単Spaceキーを押し続けると、ゲートが上がるはずです。
Update()内の2つのコメントの下に、波括弧の中にtransform.position = new Vector3(0, 3, 0);を入れてif (open)を書きます。- その後に、波括弧の中に
transform.position = new Vector3(0, 1, 0);を入れてelseを書きます。
「プレイ」を押して、ゲームをクリックし、Spaceキーを押し続けます。ゲートが上がり、キーを離すと下がります。その後、「確認」を押します。
自分で試してみよう
using UnityEngine;
public class Gate : MonoBehaviour
{
void Update()
{
bool open = Input.GetKey(KeyCode.Space);
// open が true の場合、ゲートを (0, 3, 0) に移動する。
// それ以外の場合は、ゲートを (0, 1, 0) に移動する。
}
}
Unityスクリプトの基礎のすべてのレッスン
自分で練習してみよう: Unityプレイグラウンド