我尝试在不同x轴上的两个向量之间生成一个对象,但它不起作用。下面是脚本:
using System.Collections;
using System.Collections.Generic;
using Unity.VisualScripting;
using UnityEngine;
public class OrbSpawner : MonoBehaviour
{
public GameObject orb;
private Vector3 minimum;
private Vector3 maximum;
private Transform trans;
public float timeofspawning;
public float spawnrate;
private void Awake()
{
InvokeRepeating("Spawner", timeofspawning, spawnrate);
minimum = new Vector3(-2, 6, 0);
maximum = new Vector3(2, 6, 0);
}
void Update()
{
float x = Random.Range(minimum.x, maximum.x);
float y = Random.Range(minimum.y, maximum.y);
float z = Random.Range(minimum.z, maximum.z);
trans.position = new Vector3(x, y, z);
}
public void Spawner()
{
Instantiate(this.orb, trans.position, Quaternion.identity);
}
}
这个对象就是不产卵。我把产卵时间和产卵率都改成了0 f,但是还是没有。这个问题可能是trans.position
的问题,但是我不知道怎么解决。如果有人能帮忙,提前谢谢你!
2条答案
按热度按时间3pmvbmvn1#
如果您创建
trans
对象就是为了这个目的,那么就没有必要在更新中更改它。在派生之前确定位置就足够了,这样可以降低代码的复杂性并提高处理速度。另外,如果您希望随机位置是这两个向量之间的一条线,请使用Vector3.Lerp
。否则,您的公式是正确的。wztqucjr2#
确保“orb”是一个预制件,随机位置工作正常(虽然未优化)。**要制作预制件,请将对象从层次结构拖到资产。您还需要计算每帧的产卵位置,这比必要时计算它的成本更高。 我不确定是什么原因导致它无法产卵(我认为这是资产问题,而不是代码问题)。
以下是我制作的flappy bird原型产卵管理器脚本的一些代码:
你有没有在场景中查看它是否在屏幕外产卵?
以下是Unity的示例化文档:https://docs.unity3d.com/ScriptReference/Object.Instantiate.html