预制敌人全部走同一条随机路径

时间:2019-05-07 15:51:24

标签: unity3d random instantiation

我对一个随机走在一个正方形内的敌人有一个剧本。我从那个方块中得到一个随机点,并将敌人移向该随机生成的点。 问题在于,当实例化多个敌人时,它们都在同一脚本上运行并使用相同的随机生成点,因此它们最终都朝相同的方向行走。

我认为统一只会实例化预制件的副本,而不会实例化脚本,因此所有预制件都使用相同的脚本。

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

public class WanderSquare : MonoBehaviour
{
    public Renderer square;
    Vector3 size;
    public int directionChangeInterval;
    static Vector3 direction;
    public float speed;

    void Start()
    {
        size = square.bounds.size;

        StartCoroutine(NewHeading());
    }


    Vector3 NewHeadingRoutine()
    {
        Vector3 position = new Vector3(Random.Range(-size.x/2, size.x/2), 0.3f, Random.Range(-size.z/2, size.z/2));

        return position;
    }
    IEnumerator NewHeading()
    {
        while (true)
        {
            direction=NewHeadingRoutine();
            yield return new WaitForSeconds(directionChangeInterval);
        }
    }
    private void Update()
    {
        transform.position = Vector3.MoveTowards(transform.position,direction,speed/100);


    }
}

1 个答案:

答案 0 :(得分:1)

您的direction是一个静态变量,因此脚本的每个实例都使用相同的方向。每当计算新值direction时,脚本的每个实例都会开始使用该方向。

static中删除direction,它应该可以工作。