C# 为什么我的障碍物产卵不遵循相同的产卵模式?
我正在做一个游戏,你有3个街区要移动,其中两个街区有障碍物,这是一张图片。我遇到的问题是,障碍物有时需要休息3秒钟,然后再次繁殖,然后等待一段时间,然后再次开始繁殖。这种模式不是连续的。我希望它们总是像中间的第二个一样产卵C# 为什么我的障碍物产卵不遵循相同的产卵模式?,c#,unity3d,2d,spawn,C#,Unity3d,2d,Spawn,我正在做一个游戏,你有3个街区要移动,其中两个街区有障碍物,这是一张图片。我遇到的问题是,障碍物有时需要休息3秒钟,然后再次繁殖,然后等待一段时间,然后再次开始繁殖。这种模式不是连续的。我希望它们总是像中间的第二个一样产卵 using System.Collections; using System.Collections.Generic; using UnityEngine; public class merHinder : MonoBehaviour { pub
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class merHinder : MonoBehaviour
{
public Rigidbody2D orginal;
private Vector3[] spawnPos = new Vector3[3];
// Start is called before the first frame update
void Start()
{
//InvokeRepeating("timer", 0f, 1f);
StartCoroutine(SpawnAtIntervals(1f));
}
// Update is called once per frame
void Update()
{
spawnPos[0] = new Vector3(3, 3.86f, -5);
spawnPos[1] = new Vector3(-3, 3.86f, -5);
spawnPos[2] = new Vector3(0, 3.86f, -5);
}
private void FixedUpdate()
{
}
void Spawn()
{
int randomNumber = Random.Range(0, spawnPos.Length);
int randomNumber1 = Random.Range(0, spawnPos.Length);
if (randomNumber != randomNumber1)
{
Rigidbody2D clone1 = Instantiate(orginal, spawnPos[randomNumber], Quaternion.identity);
Rigidbody2D clone2 = Instantiate(orginal, spawnPos[randomNumber1], Quaternion.identity);
}
//Destroy(orginal);
}
bool keepSpawning = true;
IEnumerator SpawnAtIntervals(float secondsBetweenSpawns)
{
// Repeat until keepSpawning == false or this GameObject is disabled/destroyed.
while (keepSpawning)
{
// Put this coroutine to sleep until the next spawn time.
yield return new WaitForSeconds(secondsBetweenSpawns);
// Now it's time to spawn again.
Spawn();
}
}
}
只有当随机数不同时,它们才会繁殖。但有时随机产生的结果是相同的
int randomNumber = Random.Range(0, spawnPos.Length);
int randomNumber1 = Random.Range(0, spawnPos.Length);
if (randomNumber != randomNumber1) // <- No spawn if both random numbers are the same
{
Rigidbody2D clone1 = Instantiate(orginal, spawnPos[randomNumber], Quaternion.identity);
Rigidbody2D clone2 = Instantiate(orginal, spawnPos[randomNumber1], Quaternion.identity);
}
嗯,那是真的,你知道怎么解决这个问题吗?我需要的数字不是相同的原因,否则他们可以在同一个位置产卵,然后它将在某些时候只有一个障碍。
void Spawn()
{
int randomNumber = Random.Range(0, spawnPos.Length);
int randomNumber1 = Random.Range(0, spawnPos.Length);
while (randomNumber == randomNumber1)
{
// try again until numbers are different
randomNumber1 = Random.Range(0, spawnPos.Length);
}
Rigidbody2D clone1 = Instantiate(orginal, spawnPos[randomNumber], Quaternion.identity);
Rigidbody2D clone2 = Instantiate(orginal, spawnPos[randomNumber1], Quaternion.identity);
}