所以我正在尝试使用 C# 代码统一制作游戏,现在...我有一个可以在塔上跳跃的立方体...这是一个无限的跑步游戏。
问题是我想根据立方体行进的距离生成塔...
假设立方体已经行进了 12 米,我想在幼崽每次行进那个距离时产生一个新的 pilon,所以它行进了 12 米,产生了一个新的 pylon,它又行了 12 米,产生了一个新的 pylon 等等...
我想让幼崽移动得越来越快,这样我就需要知道塔需要产卵的距离。
我尝试使用函数Instantiate()
,并使用 if 语句查找transform.position.z
多维数据集..
真正的问题是,每次立方体行进 12 米并且是时候实例化一个新的 pylon 时,它会像 20 个 pylons 一样生成,因为我在更新函数中使用了它,它会将位置视为浮点数,实例化完整的数字, 12,1; 12,2; 12,3; 13,4 ...直到;12,99 ...我想知道我怎样才能只生成一次塔。
另外...如果您有更好的生成塔的解决方案,请告诉我。
This is the code that I used to spawn the pylons ,respectively the functions that I used.
Some of this are the variables that I used.
public float cameraSpeed = 1;
public float horizontalSpeed;
private int spawnIndex;
public float spawnDistance;
private int[] prevPoints;
public GameObject[] pilon;
public GameObject spawnMainPoint;
public Transform[] spawnPoints;
public Transform[] coinsSpawnPoint;
public float enamySpeed;
private int currentPoint;
public Transform[] pointPosition;
void FixedUpdate () {
int currPosition = (int)transform.position.z;
if (currPosition % spawnDistance == 0f) {
SpawnCoinPylon ();
SpawnNormalPylon ();
}
void SpawnNormalPylon ()
{
spawnIndex = Random.Range (0, spawnPoints.Length);
Instantiate (pilon[0], spawnPoints [spawnIndex].position,spawnPoints [spawnIndex] .rotation);
}
void SpawnCoinPylon(){
Instantiate (pilon[1], coinsSpawnPoint [0].position,spawnPoints [spawnIndex] .rotation);
}
谢谢!
更新 :
我设法把它拉出来,这是正确工作的代码:
private int currPosition ;
void Start () {
currPosition = (int) transform.position.z;
}
void FixedUpdate () {
bool hasSpawnedPylon = false;
if (currPosition != (int)transform.position.z) {
if ((int)transform.position.z % spawnDistance == 1) {
if (!hasSpawnedPylon) {
SpawnCoinPylon ();
SpawnNormalPylon ();
currPosition = (int)transform.position.z;
}
}
}
else
{
hasSpawnedPylon = false;
}
}
void SpawnNormalPylon ()
{
spawnIndex = Random.Range (0, spawnPoints.Length);
Instantiate (pilon[0], spawnPoints [spawnIndex].position,spawnPoints [spawnIndex] .rotation);
}
void SpawnCoinPylon(){
Instantiate (pilon[1], coinsSpawnPoint [0].position,spawnPoints [spawnIndex] .rotation);
}