游戏开发论坛

 找回密码
 立即注册
搜索
查看: 3273|回复: 4

一群怪,扇形排列围攻玩家,有什么思路来实现?

[复制链接]

2

主题

6

帖子

34

积分

注册会员

Rank: 2

积分
34
发表于 2013-11-8 00:15:48 | 显示全部楼层 |阅读模式
一群怪,扇形排列围攻玩家,有什么思路来实现呢?
怪之间没有碰撞,现在怪都重叠在一块攻击玩家,实在不好看,不知道怎么做成扇形排列围攻玩家-。-,有没大神来指点一下,多谢了~

0

主题

39

帖子

142

积分

注册会员

Rank: 2

积分
142
发表于 2013-11-9 13:39:16 | 显示全部楼层
扇形攻击是碰撞、射程判断、寻路的综合结果。不是以前的游戏有意识要实现的吧?
无碰撞游戏为了好看,最简单的就是取距离目标最近的那个单位,将其前移到合适位置后,其他单位以它为核心展开几种固定模式的攻击阵型。
如果你想要阵型是根据情况计算出来的,那最后结果还是要弄一套并不简单的算法,说不定算法里面还是要融合碰撞、射程判断、寻路。那还不如就做成有碰撞判断的游戏呢。因为你做无碰撞要避免的计算量最后都会来了,你自己实现的算法稳定性又未必比被人验证过那一套强。
当然,天才从来都不在我的讨论范围之内,我只是凡人里面比较搓的那一类……

98

主题

784

帖子

4493

积分

版主

Rank: 7Rank: 7Rank: 7

积分
4493
发表于 2013-11-11 21:09:07 | 显示全部楼层
你要在怪物身上放一个被攻击角度的记录,用于给选择它的角色在确定站位时估价。简单的思路:
角色身上记录一个BeAttackFromDegree:Map<Int, Int>,你可以把角度定位一个int,比如每30度+1,那么你的下标就是0-11,而Value则是在每个角色选定攻击他的角度的时候刷新的,每增加一个角色值+1,这样如果3个角色从同一个角度,比如30度(游戏世界坐标系,非角色本身)攻击角色,那么他的BeAttackFromDegree[1]就是3,在下一个角色攻击这个角色时,如果角色最佳路径计算出来是从30度攻击,则会根据这个3对于最佳路径的评分减分。大概思路就是如此,如果你想做的效果是星际争霸2这样一群人围着一个敌人打,而不是一群人叠在一个点打一个敌人的话。核心问题还是最终落点的评估算式。

2

主题

6

帖子

34

积分

注册会员

Rank: 2

积分
34
 楼主| 发表于 2013-11-12 16:43:37 | 显示全部楼层
oxygenair 发表于 2013-11-9 13:39
扇形攻击是碰撞、射程判断、寻路的综合结果。不是以前的游戏有意识要实现的吧?
无碰撞游戏为了好看,最简 ...

怪之间有碰撞的话,会推来推去的,不好看~

2

主题

6

帖子

34

积分

注册会员

Rank: 2

积分
34
 楼主| 发表于 2013-11-12 16:44:17 | 显示全部楼层
猴与花果山 发表于 2013-11-11 21:09
你要在怪物身上放一个被攻击角度的记录,用于给选择它的角色在确定站位时估价。简单的思路:
角色身上记录 ...

多谢,受教了~
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-2-26 08:22

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表