Menu
CoddyTech

キャッチャー

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

この章では、Catch the Star という小さなゲームを作ります。レッスンごとに機能を1つずつ追加します。星が落ち、キャッチャーをその下で左右に動かし、星をキャッチするたびに得点が入り、次の星はより速く落ちてきます。星を3回取り逃すとゲーム終了です。すべての処理は、キャッチャーに設定する1つのスクリプト、Catcher にまとめます。最初の機能は移動です。キャッチャーは矢印キーで動き、床からはみ出しません。

数値を範囲内に収めるには、Mathf.Clamp(value, min, max) を使います。値が min より小さい場合は min を、max より大きい場合は max を返し、それ以外の場合は値そのものを返します。このカメラはプレイヤーを追って塔を上りますが、高さは2から12の間に保たれます。

[SerializeField] private Transform player;

void Update()
{
    float y = Mathf.Clamp(player.position.y, 2f, 12f);
    transform.position = new Vector3(transform.position.x, y, transform.position.z);
}

Clamp は新しい数値を返すだけで、それ自体で何かを変更することはないため、結果を代入してください。そのフレーム内の変更をすべて行った後、位置を書き戻す前に Clamp を適用すれば、オブジェクトが範囲を超えた状態で表示されるフレームはありません。

challenge icon

チャレンジ

中級

キャッチャー(青いバー)を動かしましょう。右矢印キーを押している間は右(+x 方向)へ、左矢印キーを押している間は左へスライドします。どちらも毎秒 speed 単位です。y と z は変化しません。

床は x = -5 から x = 5 まであり、キャッチャーの幅は 2 単位です。キャッチャー全体が常に床の上に収まるよう、x を制限しましょう。

Play を押し、ゲームをクリックして矢印キーを試してから、Check を押してください。

自分で試してみよう

using UnityEngine;

public class Catcher : MonoBehaviour
{
    [SerializeField] private float speed = 6f;

    void Update()
    {
        // 矢印キー: x 軸に沿って、毎秒 speed 単位で移動する。
        // キャッチャー全体が床の上に収まるようにする(x は -5 から 5 まで、キャッチャーの幅は 2)。
    }
}
quiz icon腕試し

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

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