首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何确保在彼此之上不产生对象(随机产卵位置)

如何确保在彼此之上不产生对象(随机产卵位置)
EN

Stack Overflow用户
提问于 2016-05-17 12:04:56
回答 1查看 613关注 0票数 1

我正在创造一个无止境的跳跃游戏。我创造了很多障碍随机产卵的时间和空间,但现在我想让障碍不一样的地方产卵,因为他们是产卵,但有时他们可以产卵在另一个顶部,或接近其他人,甚至在他们内部,所以请帮帮我!代码:

代码语言:javascript
复制
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;
    }

}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-05-17 16:37:27

我认为你想要的是围绕每一个障碍的某种包围盒,它代表着你想要的那个障碍周围的“填充物”,在那里没有其他的东西可以放置。为此,您可以使用原始对撞机。

当你在一个随机位置创建一个新的障碍物时,你可以检查它的“填充”是否与另一个障碍物的“填充”碰撞,如果是的话,重新计算随机位置。

如果您有一个非常拥挤的空间,那么在找到有效的位置之前,可能需要多次重新检查,这是我预见的问题。您可能需要限制它可以进行的检查的数量,如果它找不到有效的点,那么在20次左右的尝试之后,它就不会生成对象。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37275661

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档