我的想法是一个2D游戏,玩家在中心有一个基地,敌人在10个产卵点中的一个产卵,然后向中间移动。我写了这个代码,但有一个错误。有人能帮忙吗?
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class EnemySpawn : MonoBehaviour
{
private float spawnRate = 2f;
private float timer = 0f;
public GameObject enemy;
public int spawnerNumber;
public GameObject[] spawner;
void Update()
{
timer += Time.deltaTime;
if(timer > spawnRate)
{
timer = 0f;
Spawn();
if(spawnRate > 0.1f)
{
spawnRate -= 0.01f;
}
}
}
void Spawn()
{
spawnerNumber = Random.Range(0, 10);
Instantiate(enemy, new Vector3(spawner[spawnerNumber].transform.position), Quaternion.identity);
}
}
它给我的错误是:vector 3
不包含接受1个参数的构造函数
1条答案
按热度按时间iqjalb3h1#
错误是告诉你不能执行
new Vector3(spawner[spawnerNumber].transform.position)
。new Vector3()
是一个构造函数。它可以为空,默认为[0,0,0],也可以接受3个参数来表示x,y和z分量,例如new Vector3(1, 5, 3)
。没有只接受一个参数的构造函数版本。您试图将Vector3作为单个对象传递给它,这是不允许的。spawner[spawnerNumber].transform.position是Vector3。
解决方案:严格地说,你根本不应该在这里创建一个新的Vector3。你的行应该是:
无论如何,Monobehavior对象上的transform.position总是Vector3。
如果你绝对需要创建一个新的向量,其中x,y和z有不同的组成部分,你需要做一些更像这样的事情:
但不要在你的情况下这样做。