Menu
CoddyTech

道路交通

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

challenge icon

チャレンジ

難しい

車を道路に走らせます。

  1. spawnEvery 秒ごとに、(-9, 0.5, lanes[Random.Range(0, lanes.Length)]) に車を生成してリストに追加します。
  2. 各車を carSpeed で +x 方向に移動させます。x が 9 を超えたら、破棄してリストから削除します。
  3. x 方向の距離が 1.5 未満、かつ z 方向の距離が 1 未満の車があると、Hit! をログに出力し、ホッパーを start に戻します。

「プレイ」を押すと、車が次々に通り過ぎます。その後、「確認」を押します。

自分で試してみよう

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;

    private Vector3 start;

    void Start()
    {
        start = transform.position;
    }

    void Update()
    {
        if (Input.GetKeyDown(KeyCode.UpArrow))
        {
            transform.position += new Vector3(0f, 0f, 2f);
        }
        if (Input.GetKeyDown(KeyCode.DownArrow) && transform.position.z > start.z)
        {
            transform.position -= new Vector3(0f, 0f, 2f);
        }
        if (transform.position.z >= 4f)
        {
            Debug.Log("You made it!");
            enabled = false;
            return;
        }

        // 車については次のレッスンで。
    }
}

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

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