Menu
CoddyTech

ランナー

CoddyのUnityジャーニー「Unityスクリプトの基礎」セクションの一部。レッスン 75/85。

この章では、「Dodge the Blocks」という小さなゲームを作ります。ブロックが空から落ちてくる中、レーンに沿って走るランナーを操作します。ブロックに一度触れるとゲーム終了です。ゲーム全体は1つのスクリプト、Runnerで構成され、各レッスンで機能を追加していきます。操作、ブロックの落下、ブロックの削除、衝突、そしてスコアです。

最初に追加する機能は、レーンから外れない操作です。「Catch the Star」で使ったMathf.Clamp(value, min, max)を使います。この関数は、valueが範囲より小さい場合はminを、範囲より大きい場合はmaxを返し、それ以外の場合はvalue自体を返します。Clampを適用するタイミングが重要です。このチャージメーターは、Spaceキーを押している間は増加し、押していない間は減少し、常に0から10の範囲内に収まります。

[SerializeField] private float charge = 0f;

void Update()
{
    if (Input.GetKey(KeyCode.Space))
    {
        charge += 4f * Time.deltaTime;
    }
    else
    {
        charge -= 2f * Time.deltaTime;
    }
    charge = Mathf.Clamp(charge, 0f, 10f);
    transform.localScale = new Vector3(0.5f, charge, 0.5f);
}

Clampは値を変更した後に適用します。先にClampを適用すると、値が上限を少し超えたままフレームが終わり、その値でバーが描画される可能性があります。また、Mathf.Clampは渡した変数を変更するのではなく、新しい数値を返すため、結果を変数に再代入してください。

challenge icon

チャレンジ

中級

「Dodge the Blocks」を始めて、レーンに沿ってランナーを操縦しましょう。

  1. Update()内で、transform.positionをVector3 pにコピーし、Input.GetAxisRaw("Horizontal") * speed * Time.deltaTimeをp.xに加算します。生の軸入力では、すぐに最大速度で移動します。
  2. p.x = Mathf.Clamp(p.x, -laneEdge, laneEdge);を設定し、次にtransform.position = p;を設定します。

「プレイ」を押し、ゲーム画面をクリックして両端まで走らせましょう。ランナーは端で止まります。その後、「確認」を押します。

自分で試してみよう

using UnityEngine;

public class Runner : MonoBehaviour
{
    [SerializeField] private float speed = 6f;
    [SerializeField] private float laneEdge = 4f;

    void Update()
    {
        // 矢印キーでx方向に移動し、その後xをレーン内に収める
    }
}

Unityスクリプトの基礎のすべてのレッスン

自分で練習してみよう: Unityプレイグラウンド