Menu
CoddyTech

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() で毎フレーム確認できます。

challenge icon

チャレンジ

簡単

Spaceキーを押し続けると、ゲートが上がるはずです。

  1. Update()内の2つのコメントの下に、波括弧の中にtransform.position = new Vector3(0, 3, 0);を入れてif (open)を書きます。
  2. その後に、波括弧の中に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プレイグラウンド