unity3d - 预制敌人都走在相同的随机路径
问题描述
我有一个关于在广场内随机行走的敌人的脚本。我从那个方格中得到一个随机点,然后将敌人移向那个随机生成的点。问题是,当实例化多个敌人时,它们都在同一个脚本上运行并使用相同的随机生成点,因此它们最终都会朝着同一个方向行走。
我认为统一只实例化预制件的副本而不是脚本,因此所有预制件都使用相同的脚本。
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);
}
}
解决方案
你direction
是一个静态变量,所以脚本的每个实例都使用相同的方向。每当计算出新值时direction
,脚本的每个实例都将开始使用该方向。
删除static
from direction
,它应该可以工作。
推荐阅读
- python - 熊猫。选择特定列
- python - Hadoop 得到了预期的 JSON。是否启用了 WebHDFS?得到 ''
- java - 如何在eclipse中配置构建路径条目
- google-chrome - 运行 Flutter Web 应用程序时创建服务器套接字失败
- ansible - Ansible Tower 我们可以将主机名作为变量传递给作业模板吗
- php - 尝试填写 PDF 得到“不支持对象流”
- java - 如何转换地图
> 进入 JsonObject - pandas - Matplotlib Line vs. Bar plot DateTime 轴格式
- c++ - 如何使用任何退出代码退出 C++ 程序?
- openedx - OpenEdX,IRONWOOD - 重定向问题