Menu
CoddyTech

ランナー

CoddyのUnityジャーニー「Unityスクリプティングの基礎」セクションの一部。レッスン 60/67。

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

最初の機能は、レーンから外れない操作です。Catch the Starで学んだMathf.Clamp(value, min, max)を使います。値が範囲より小さい場合はminを、範囲より大きい場合はmaxを返し、それ以外の場合は値そのものを返します。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

チャレンジ

中級

ランナーを使って「ブロックをかわそう」を始めます。Inspector で Runner スクリプトに speed (6) と laneEdge (4) を設定します。

  • 左右の矢印キーで、ランナーが x 軸上を毎秒 speed 単位の速さで移動します。
  • x は -laneEdge より小さくも laneEdge より大きくもならないため、レーンから外れません。

Play を押し、ゲームをクリックしてレーンの両端まで走り、Check を押します。

自分で試してみよう

using UnityEngine;

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

    void Update()
    {
        // 矢印キーでx方向に移動し、その後xがレーン内に収まるようにする
    }
}
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

Unityスクリプティングの基礎のすべてのレッスン