正在用 TypeScript 做一个塔防类型小游戏 问题是 假如现在本关 有 3 个炮台 炮台有攻击范围 有 10 个怪物 怪物会沿着路线行动 怪物和炮台都在各自的数组中存放 那么如何判断 是哪个怪物进入了哪个炮台的攻击范围呢? (有可能多个怪物进入了多个炮台的攻击范围) 求提供一个思路(⊙o⊙)
![]() | 1 phttc 2016-06-03 09:02:10 +08:00 if (根号 dx2+dy2 < 范围) then 攻击 |
2 am241 2016-06-03 09:07:39 +08:00 via Android 这里比较平方和比开根号速度要快吧 |
![]() | 3 EPr2hh6LADQWqRVH 2016-06-03 09:12:21 +08:00 ![]() 真正有用的只是路线上的区间而已,随你用什么笨办法计算出来,任意炮塔在路径上的攻击区间。 炮塔是很有限的,所以攻击区间也很有限,一串 if 下来也是可以的。 |
![]() | 4 coddmajes 2016-06-03 09:13:42 +08:00 ![]() 每个炮台一次只攻击一个怪物吧 我觉得不需要判断哪个怪物进入哪个炮台的攻击范围,只需要在每个炮台的周围设定一个攻击范围然后进入范围的怪物按照距离来进行攻击。。。这样是不是楼主想要的? |
![]() | 5 dudor 2016-06-03 09:17:06 +08:00 很简单,求怪和炮台之间的距离 ,然后和攻击范围比较下就可以了 |
6 467347544 OP 谢谢大家了 有思路啦~\()/~ |
7 just4test 2016-06-03 09:32:01 +08:00 这点怪物和炮台数量不用做任何优化 |
![]() | 8 467347544 OP 好吧是我没说明白 问题是 假如同时有 2 个怪物同时进入了某个炮台的攻击范围 那炮台应该攻击哪个呢 是否应该把进入某个炮台攻击范围的怪物加到一个数组 离开某个炮台攻击范围就从数组删除 然后炮台只攻击数组里面的第一个怪物 |
9 yxz00 2016-06-03 10:08:52 +08:00 via Android ![]() 这有个游戏设计问题,如果你想炮台一旦开始攻击就打到怪物离开范围或者打死(也是大多数塔防的做法):记录第一个进入范围的怪物,一直作为攻击目标,同时一直检测是否死亡或者离开范围。如果离开搜索下一个最近的可攻击怪物 |
10 xuzicn 2016-06-06 11:08:56 +08:00 ![]() 做游戏最重要的一个技术就是“碰撞检测”,也是一个游戏核心之一。 |
11 xuzicn 2016-06-06 11:10:24 +08:00 搜一搜,会有新的发现 |