骑马与砍杀中文站论坛

 找回密码
 注册(Register!)

QQ登录

只需一步,快速开始

搜索

dota2屠夫钩于骑砍之实现方法讲解

热度 6已有 830 次阅读2018-11-23 12:07 |个人分类:mod制作相关心得| 骑马与砍杀

前言:一个要用代码实现的游戏功能,要先对引擎或mod系统支持的功能有所了解,然后理清思路和步骤并考虑各步做到什么程度再写。

基础版视频:

https://www.bilibili.com/video/av36412349?from=search&seid=15494353833873750299www.bilibili.com

做法:

1.首先需要准备模型,这时候从追求上你要考虑是只是表达一下钩人的机制,还是要把特效及屠夫模型动作也一并做好力求完美。我比较随意,先只做机制,所以模型要准备两个:钩子和链条。

2.接着考虑动画,人物动画偷懒的话可以不做或者用一下现有的带有直刺的动作(比较像放钩),这个看不出太僵的(别太先追求完美,完美主义会把你不会的先卡死在你会的前面浪费磨耗你的时间和激情):然后是钩子的动画,或者说是否确定用动画,此点放入下面第三条。

3.考虑钩子和链条是否需要动画,前提明确钩子和链条在钩人事件中的运动状态,钩子应该始终保持在人的手上或者链条的终端,而链条可以加长和缩短。可以看出,钩子的运动状态基本是附属于链条即随链条从动运动,所以要先确定主运动状态,即链条伸缩的实现,在骑砍里主要有以下几个方法:

a.命令控制一个坐标方向的模型尺寸,优点是在伸缩方面所用代码少,局限是模型拉缩后纹理扭曲难看,并且非棍类模型更难看,并且确定伸缩链条终端坐标计算麻烦。

b.使用粒子效果,可能有人觉得粒子不应该是什么光效一样的模型吗,链条这样的实物可以吗?然而粒子的原理就是利用流体力学将模型在空间喷射,根据事先设定的粒子模型物理特性来呈现大量粒子模型的组合运动效果,然而骑砍一般见得最多的是一些特别小的粒子模型组成类似分子运动的特效,然而粒子模型设置什么都可以,你把哈老四设置成粒子模型,你也可以把哈老四射的满天飞。

c.模型的组合加运动效果(和b其实是同一个思路)优点是可以确定链条终端进而确定钩子的运动状态并且方便控制整个运动环节,缺点是不利于优化。

d.链条动画,其实也和b、c原理差不多,只不过区别在于控制的条件,前两个核心控制条件是距离和时间,而这个是距离和动画帧。优点是优化尚可,缺点是需要好好斟酌动画帧的数量与链条数量之间的关系。

4.开始考虑整个钩人事件过程:首先明确这是要模仿dota2的屠夫钩,所以先回忆一下dota2屠夫钩的机制和整体过程,其次明确要用来模拟的是骑砍这个第三人称游戏,要考虑第三人称下目标瞄准与钩子运动方向的关系以及对无视地形情况的调整。

dota2屠夫钩过程是这样的:

a.没钩人时,钩子在手心里。(说明了没有开始钩人时钩子的位置状态)

b.发钩,人做动作(如果有),链条向人面向方向伸长,钩子保持位于链条终端(说明了开始钩人钩子前进未碰到人或达到链条最大距离时钩子的位置状态)。

c.钩子前进碰到人或达到链条最大距离时,链条以原反方向缩回去,钩子依旧保持位于链条终端,特别的,当钩子钩到人时,禁用人的部分ai运动学等代码,位置随钩子运动,此时可以不用取消ai动作,只需要取消ai动作产生的运动效果,因为屠夫钩人时队友还可能在勾过来的位置做出打击动作或施法。(巨魔:M&M%p,又钩队友,老子差点A死那人了)

d.当钩子返回手中位置时,恢复人的刚被禁用的ai运动学等代码,然后就是。。。帕吉:啊哈哈,五花肉。(但注意如果发钩人在钩人过程中位置和动作被强制或主动移动了,需对钩子链条运动进行调整)

所以,在骑砍里做出dota2屠夫钩,也是按照以上步骤,但结合第三人称,需再加一点,发射点为手心,发射方向为发钩人的视线方向。至于无视地形,本来屠夫钩就是无视地形的,这个不管。然后就是确定钩人范围,其实观察发现,dota2屠夫的钩子是否判断钩中人不是根据碰撞或模型交叉的判定,而是一个范围,毕竟是一个RTS视角的游戏(请擦亮眼睛,别看少我的视角二字)。所以骑砍也可以这么做,以发射后钩子位置坐标为球心的某个范围确定那些人可以触发被钩中条件。

2

路过

鸡蛋
3

鲜花
1

握手

雷人

刚表态过的朋友 (6 人)

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 注册(Register!)

Archiver|手机版|小黑屋|骑马与砍杀中文站

GMT+8, 2024-4-24 21:05 , Processed in 0.050909 second(s), 8 queries , Gzip On, MemCached On.

Powered by Discuz! X3.4 Licensed

© 2001-2023 Discuz! Team.

返回顶部