(Unity)チェックポイントを全て回るBotの作り方

(1) スクリプトの作成

  • 新規にC#スクリプトを作成
  • 名前を「BotController」に変更
  • 下記のコードを書いてチェック

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class BotController : MonoBehaviour
{
    private int checkCount = 0;
    public GameObject gameClearLabel;

    public AudioClip clearSound;

    // ★配列でターゲット管理
    public GameObject[] targets;
    private int targetNum = 0;

    void Update()
    {
        // ★前進
        transform.Translate(Vector3.forward * Time.deltaTime * 3);

        // ★方向転換(ターゲットの方向に向く)
        transform.LookAt(targets[targetNum].transform);
    }

    private void OnTriggerEnter(Collider other)
    {
        if(other.CompareTag("Check"))
        {
            other.GetComponent<MeshRenderer>().material.color = Color.red;
            other.gameObject.tag = "OK";
            checkCount += 1;

            // ★ターゲットを切り替える
            targetNum += 1;
        }

        if(other.CompareTag("Goal") && checkCount == 7)
        {
            gameClearLabel.SetActive(true);
            AudioSource.PlayClipAtPoint(clearSound, Camera.main.transform.position);
            Time.timeScale = 0f;
        }
    }
}

(2)設定

  • ターゲットに「チェックポイント」を設定
  • この順番にBotが回ります。

 

(3)再生&確認

  • 設定が完了したらゲーム再生
  • Botがチェックポイントを順番に全て回れば成功です。