【发布时间】:2017-09-11 21:48:06
【问题描述】:
所以我正在尝试使用 C# 代码统一制作游戏,现在...我有一个可以在塔上跳跃的立方体...这是一个无限奔跑游戏。
问题是我想根据立方体行进的距离生成塔...
假设立方体已经行进了 12 米,我想在幼崽每次行进那个距离时产生一个新的 pilon,所以它行进了 12 米,产生了一个新的 pylon,它又行进了 12 米,产生了一个新的 pylon等等……
我想让幼崽移动得越来越快,这样我就需要知道塔需要生成的距离。
我尝试使用函数Instantiate(),并使用if语句寻找立方体的transform.position.z..
真正的问题是,每次立方体行进 12 米并且是时候实例化一个新的 pylon 时,它会生成 20 个 pylon,因为我在 update 函数中使用了它,它会将位置视为浮动,实例化全数,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);
}
【问题讨论】:
-
你如何利用时间来生成塔,并让玩家存活的时间越长越快。我认为这样做会简单得多。
-
发布生成 20 多个对象的代码,这里有人可以帮助您找出问题所在。
-
感谢您的回复。
-
我对使用时间来生成塔架有点怀疑,我担心如果速度会增加像生成塔架这样的故障,或者其他类似的事情会出现。 ..我还没有尝试过...我宁愿以其他可能的方式来做。如果我没有其他方法,我想我将不得不尝试,但正如我所说,我真的不喜欢这个想法。
标签: c# unity3d infinite spawning runner