道路を渡ろう
CoddyのUnityジャーニー「Unityスクリプティングの基礎」セクションの一部。レッスン 66/67。
ホッパーが、交通量の多い道路の端で待っています。車は左から3車線に入ってきて、走り抜けていきます。プレイヤーは上矢印と下矢印で一度に1車線ずつ前後に跳び、タイミングを見計らって反対側までたどり着く必要があります。車がホッパーに触れると、開始地点まで戻されます。
ホッパーに付けた1つのスクリプトCrossingに、ゲーム全体を書きましょう。
チャレンジ
難しい開始位置が 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()
{
}
}
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。