技术征集:用cocos做RTS游戏 (有个疑惑,求解答!!!)

各位大佬,小弟 现在需要实现一个 类似lol防御塔的攻击机制 给定一个半径 随机选定攻击范围的一个敌人,现在自己 有一个思路是 获取到攻击范围内的所有敌人节点 然后随机选定一个,但是现在卡在 获取这一步 怎样可以快捷优雅的在给定的一个范围内 获取这个范围内所有的节点呢 望各位大佬 指点迷津

敌人的位置到防御塔的距离小于防御塔的半径
敌人就在防御塔攻击范围内了吧。。。

就是这个问题 我要怎么知道 有哪些敌人进来了,我要获取到他们

遍历所有敌人
判断敌人的位置到防御塔的距离是否小于防御塔的半径
如果是,就把这个怪物保存到数组里

给防御塔加一个碰撞盒,这个碰撞盒大小就是攻击范围的大小,有敌人碰到碰撞盒就是进入攻击范围了。

如果是1对多还好,但如果是多对多呢,比如像星际或者红警,100个机枪兵打100个机枪兵的情况,这种方式就会出现大量的遍历了

敌人非常多 而且地图比较大 有些敌人离得很远的

将地图分成网格,动态障碍物的位置可以存入地图,效率很高,防御塔只需要查找范围内的网格就能找到目标

两种方式,一,遍历所有的敌人子节点,然后算出距离,进行攻击。二,利用碰撞器,自己把碰撞器范围调成和半径一致。

搜一下 AOI算法

之前用u3d做过lol嚎哭深渊的demo,用的碰撞器,接触存数组,离开移除,小兵有优先级,优先分辨近战远程英雄炮车。然后循环判定数组取对应的优先级进行攻击。。没优先级的话就用已存的数组中的节点判定距离。肯定不能随机啊,就算随机也要有自己的随即规则。。或者就是划分区域,每隔一段时间重新处理区域内的数据,然后取对应的区域内数据做处理

整个地图 大量的用碰撞器应该会差一些的吧,我小兵也是要有这样功能的,就是小兵会自动检测范围内有没有敌人,有的话就攻击

那你就划分区域啊,只对指定区域做遍历处理

我想找人做个网页互动rts游戏,没有半成品或者成品进行二开的。