我正在创造一个无尽的跳跃游戏。我已经为时间和空间随机产生了很多障碍,但是现在我想让障碍产生的不是与前一个相同的地方,因为它们产卵但有时它们会产生在另一个的顶部。或靠近其他人甚至在他们内部,所以请帮助我! 代码:
using UnityEngine;
using System.Collections;
public class SpawnObstacles : MonoBehaviour {
public GameObject[] Obstacle;
public float MINTObstacle;
public float MAXTObstacle;
public bool spawning = false;
public Transform pos;
void Update()
{
if (!spawning)
{
StartCoroutine("SpawnObstacle");
}
}
IEnumerator SpawnObstacle()
{
spawning = true;
yield return new WaitForSeconds(Random.Range(MINTObstacle, MAXTObstacle));
Vector2 finalposition = new Vector2(Random.Range(3,7), Random.Range(pos.position.y - 6f, pos.position.y - 6f));
Instantiate(Obstacle[Random.Range(0, Obstacle.Length)], finalposition, Quaternion.identity);
spawning = false;
}
}
答案 0 :(得分:0)
我认为你想要的是每个障碍物周围的某种边界框,代表你想要围绕那个障碍物的“填充物”,其中没有其他障碍物可以放置。您可以为此目的使用原始对撞机。
当您在随机位置创建新障碍物时,您可以检查其“填充”是否与另一个障碍物的“填充”发生碰撞,如果是,则重新计算随机位置。
我预见的一个问题是,如果你的空间非常拥挤,那么在找到有效位置之前,可能需要多次重复检查。您可能希望限制它可以执行的检查次数,如果它没有找到有效的点,它就不会在20次左右后产生该对象。