Menu
CoddyTech

道路を渡ろう

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

ホッパーが、交通量の多い道路の端で待っています。車は左から3車線に入ってきて、走り抜けていきます。プレイヤーは上矢印と下矢印で一度に1車線ずつ前後に跳び、タイミングを見計らって反対側までたどり着く必要があります。車がホッパーに触れると、開始地点まで戻されます。

ホッパーに付けた1つのスクリプトCrossingに、ゲーム全体を書きましょう。

challenge icon

チャレンジ

難しい

開始位置が z = -4 の、3 車線の道路の下にいる Hopper に Crossing スクリプトを書きます。Inspector で carPrefab(Car プレハブ)、lanes(各車線の z 位置:-2、0、2)、spawnEvery(1)、carSpeed(5)を設定します。

  • 上矢印を押すたびに、Hopper は前方(+z)へ 2 単位進みます。下矢印を押すたびに 2 単位戻りますが、開始位置より後ろには戻りません。
  • spawnEvery 秒ごとに、x = -9、y = 0.5 の位置に、lanes からランダムに選ばれた車線で Car が出現します。車は carSpeed 単位/秒の速度で +x 方向に進み、x が 9 を超えた車は破棄されます。
  • 車と Hopper の x 位置の差が 1.5 未満、かつ z 位置の差が 1 未満のとき、車が Hopper に衝突します。衝突すると Hit! をログに出力し、Hopper を開始位置に戻します。
  • Hopper が道路の向こう側である z = 4 に到達したら、You made it! をログに出力し、スクリプトを無効にします。

Play を押して道路を渡り、それから Check を押します。

自分で試してみよう

using System.Collections.Generic;
using UnityEngine;

public class Crossing : MonoBehaviour
{
    [SerializeField] private GameObject carPrefab;
    [SerializeField] private float[] lanes;
    [SerializeField] private float spawnEvery = 1f;
    [SerializeField] private float carSpeed = 5f;

    void Start()
    {
    }

    void Update()
    {
    }
}
quiz icon腕試し

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

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