V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐关注
Meteor
JSLint - a JavaScript code quality tool
jsFiddle
D3.js
WebStorm
推荐书目
JavaScript 权威指南第 5 版
Closure: The Definitive Guide
467347544
V2EX  ›  JavaScript

小游戏开发问题

  •  
  •   467347544 · 2016-06-03 08:58:10 +08:00 · 2973 次点击
    这是一个创建于 3128 天前的主题,其中的信息可能已经有所发展或是发生改变。

    正在用 TypeScript 做一个塔防类型小游戏 问题是 假如现在本关 有 3 个炮台 炮台有攻击范围 有 10 个怪物 怪物会沿着路线行动 怪物和炮台都在各自的数组中存放 那么如何判断 是哪个怪物进入了哪个炮台的攻击范围呢? (有可能多个怪物进入了多个炮台的攻击范围) 求提供一个思路(⊙o⊙)

    11 条回复    2016-06-06 11:10:24 +08:00
    phttc
        1
    phttc  
       2016-06-03 09:02:10 +08:00
    if (根号 dx2+dy2 < 范围)
    then 攻击
    am241
        2
    am241  
       2016-06-03 09:07:39 +08:00 via Android
    这里比较平方和比开根号速度要快吧
    EPr2hh6LADQWqRVH
        3
    EPr2hh6LADQWqRVH  
       2016-06-03 09:12:21 +08:00   ❤️ 1
    真正有用的只是路线上的区间而已,随你用什么笨办法计算出来,任意炮塔在路径上的攻击区间。
    炮塔是很有限的,所以攻击区间也很有限,一串 if 下来也是可以的。
    coddmajes
        4
    coddmajes  
       2016-06-03 09:13:42 +08:00   ❤️ 1
    每个炮台一次只攻击一个怪物吧 我觉得不需要判断哪个怪物进入哪个炮台的攻击范围,只需要在每个炮台的周围设定一个攻击范围然后进入范围的怪物按照距离来进行攻击。。。这样是不是楼主想要的?
    dudor
        5
    dudor  
       2016-06-03 09:17:06 +08:00
    很简单,求怪和炮台之间的距离 ,然后和攻击范围比较下就可以了
    467347544
        6
    467347544  
    OP
       2016-06-03 09:21:04 +08:00
    谢谢大家了 有思路啦~\(≧▽≦)/~
    just4test
        7
    just4test  
       2016-06-03 09:32:01 +08:00
    这点怪物和炮台数量不用做任何优化
    467347544
        8
    467347544  
    OP
       2016-06-03 09:40:10 +08:00
    好吧是我没说明白 问题是 假如同时有 2 个怪物同时进入了某个炮台的攻击范围 那炮台应该攻击哪个呢 是否应该把进入某个炮台攻击范围的怪物加到一个数组 离开某个炮台攻击范围就从数组删除 然后炮台只攻击数组里面的第一个怪物
    yxz00
        9
    yxz00  
       2016-06-03 10:08:52 +08:00 via Android   ❤️ 1
    这有个游戏设计问题,如果你想炮台一旦开始攻击就打到怪物离开范围或者打死(也是大多数塔防的做法):记录第一个进入范围的怪物,一直作为攻击目标,同时一直检测是否死亡或者离开范围。如果离开搜索下一个最近的可攻击怪物
    xuzicn
        10
    xuzicn  
       2016-06-06 11:08:56 +08:00   ❤️ 1
    做游戏最重要的一个技术就是“碰撞检测”,也是一个游戏核心之一。
    xuzicn
        11
    xuzicn  
       2016-06-06 11:10:24 +08:00
    搜一搜,会有新的发现
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1038 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 22:30 · PVG 06:30 · LAX 14:30 · JFK 17:30
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.