基督山 发表于 2022-3-11 02:06

Unity3D制作游戏生成敌人的一个问题

敌人生成的位置用Random.Range()来随机获取,但有时会在箱子的坐标内出现,然后敌人就会卡在里面,有什么解决办法吗?

// 生成敌人
            Transform obj = (Transform)Instantiate(m_enemy, new Vector3(Random.Range(-3.05f, 44.5f), -15.85f, Random.Range(-11.29f, 31.64f)), Quaternion.identity);
       // 获取敌人的角本
            EnemyWarriors enemyWarriors = obj.GetComponent<EnemyWarriors>();
            // 初始化敌人
            enemyWarriors.Init(this);

李杨 发表于 2022-3-11 07:49

不懂 请下一位大佬回答{:17_1068:}

bhbhxy 发表于 2022-3-11 07:55

用一个while循环,对随机生成的坐标进行判断,如果和箱子有重叠,那么持续while循环直到生成位置不重叠为止。

明月相照 发表于 2022-3-11 08:37

楼上的对,另外补充下,也可在生成的范围上重新选择小些,不重的部分。

基督山 发表于 2022-3-11 08:44

bhbhxy 发表于 2022-3-11 07:55
用一个while循环,对随机生成的坐标进行判断,如果和箱子有重叠,那么持续while循环直到生成位置不重叠为止 ...

我也是这么想的,就是有点麻烦。而且怎么获取箱子的坐标方便一点呢

明月相照 发表于 2022-3-11 08:50

基督山 发表于 2022-3-11 08:44
我也是这么想的,就是有点麻烦。而且怎么获取箱子的坐标方便一点呢

箱子的Transform不是固定的吗?

基督山 发表于 2022-3-11 09:03

明月相照 发表于 2022-3-11 08:50
箱子的Transform不是固定的吗?

我想要在箱子那个正方形区域里不让他生成,得获取箱子的顶点位置和它们之间的距离

基督山 发表于 2022-3-11 09:07

明月相照 发表于 2022-3-11 08:50
箱子的Transform不是固定的吗?

只能手动拉个cube来测一下了{:1_890:}

Dream_Peng 发表于 2022-3-11 09:07

我有一个想法,不需要用while循环,就是在 生成的时候, 判断是否在其他物体内,如果在,则往旁边偏移所在物体的大小坐标,这样所有的敌人都会在物体外 而不是物体内,还有记住别出自己的地图了

基督山 发表于 2022-3-11 09:16

Dream_Peng 发表于 2022-3-11 09:07
我有一个想法,不需要用while循环,就是在 生成的时候, 判断是否在其他物体内,如果在,则往旁边偏移所 ...

物体的大小坐标怎么获取呢
页: [1] 2 3
查看完整版本: Unity3D制作游戏生成敌人的一个问题