我正在构建一个游戏并遇到问题。我试图按下“跳转”按钮时实例化一个对象,并试图给实例化的对象在指定位置之间的随机位置。然而,我的Instantiate函数只接受一个“Transform”变量,因为它是第二个参数,并没有像任何位置一样接受任何Vector3值。Unity C# - '实例化'只接受“变换”,而不是'实例化对象位置'的'Vector3'
有人可以告诉我为什么,这个问题的解决方案是什么?这是代码:请注意Update函数中的Instantiate函数,这是我遇到问题的地方。我想使用Vector3的garbagePosition作为第二个参数。谢谢。
public Transform ground;
public GameObject garbage;
public float loadTime;
public int numberOfObjects;
private Queue<Transform> groundQueue;
public Vector3 startPosition;
public Vector3 nextPosition;
// Use this for initialization
void Start() {
nextPosition = startPosition;
groundQueue = new Queue<Transform>(numberOfObjects);
for(int i = 0; i<numberOfObjects; i++)
{
groundQueue.Enqueue((Transform)Instantiate(ground));
}
for(int j = 0; j<numberOfObjects; j++)
{
Recycle();
}
}
// Update is called once per frame
void Update() {
if (groundQueue.Peek().localPosition.z + 10 < PlayerScript.playerDistance)
{
Recycle();
}
if (Input.GetButtonDown("Jump"))
{
Vector3 garbagePosition = new Vector3(Random.Range(-4, 4),
0.5f,
PlayerScript.playerDistance + Random.Range(10, 20));
Instantiate(garbage, garbagePosition);
loadTime += Time.time;
}
}
private void Recycle()
{
Transform item = groundQueue.Dequeue();
item.localPosition = nextPosition;
nextPosition.z += item.localScale.z;
groundQueue.Enqueue(item);
}
}
啊!我发现了一个使用GameObject garb = Instantiate(垃圾)的解决方案,然后手动设置garb.transform.position = garbagePosition。你的方法也适用,并且是正确的。 – user3324792
“我找到了一个解决方案,使用”这是什么意思? – Programmer
刚刚看到你的编辑。是的,这是另一种方式来做到这一点。我的回答是解决你的问题,为什么你有它。 – Programmer