搜索
热搜: 活动 交友 discuz
查看: 11661|回复: 38

[特效] Dota2技能教程-特效的创建(重点难点)

[复制链接]

43

主题

430

帖子

2855

积分

大魔导师

UID
1731
金币
3664
精华
5
节操
-43

黑科技玩的6我是鸽手隐修议员扛把子教程大师创世者开拓者

QQ
发表于 2014-11-16 02:03:52 | 显示全部楼层 |阅读模式
本帖最后由 裸奔的代码 于 2015-11-10 19:11 编辑

特效教程一拖再拖,其实是最近偷懒了,一会写代码,一会WOW
最近发现特效的创建问题日益突出,问的人也多了
这种情况下,我必须马上出教程了

不过,这特效的创建也是烦人,不是那么简单是事
不算上修改特效,单纯使用自带的特效有时候都要花很多时间
Dota2的特效不是一个的,而是由多个子特效来组合成一个母特效

这里只是演示特效的创建,修改的不讲了

我们使用的项目名称依然是zhuzai

首先
我们选择特效courier_greevil_green_ambient_3.vpcf

先来普及一下基础知识
我们直接覆盖自带的特效会导致没法显示母特效和子特效
我们可以在资源筛选中只选择特效,然后再按两次勾勾就可以显示了
或者直接点None按钮再把特效那个勾勾打上也行







好了,我们可以开始创建特效了
我们就用被动技能来演示

创建特效我是建议在KV里面创建,除非迫不得已才用Lua创建
Lua创建特效的缺点就是某些特效无法自动跟谁单位,有些可以
还有无法创建特效到手,到头,到武器这些身体上的某位置

我是建议使用AttachEffect来创建特效,FireEffect不建议是因为我基本没用过
AttachEffect应该是绑定特效到单位身上,而FireEffect更像是创建与单位无关
但是两者功能差不多,不过,我还是建议AttachEffect

创建特效之前先复制一下特效路径





上面是对于我们把破解的特效复制进去或者是自己修改制作的特效而言的

在没有把破解的特效放进去,复制自带特效有一些略微差别






但是你会发现,这两种复制出来的路径是一样(这不是屁话吗)


技能代码如下
[mw_shl_code=actionscript3,true]"ability_passive"
{
        "BaseClass"                                        "ability_datadriven"
        "AbilityBehavior"                        "DOTA_ABILITY_BEHAVIOR_PASSIVE"
        
        "Modifiers"
        {
                "modifier_ability_passive"
                {
                        "IsHidden"                        "1"
                        "Passive"                        "1"

                        "OnCreated"
                        {
                                "AttachEffect"
                                {
                                        "EffectName"                "particles/econ/courier/courier_greevil_green/courier_greevil_green_ambient_3.vpcf"
                                        "EffectAttachType"  "follow_origin"
                                        "Target"                           "CASTER"
                                }
                        }
                }
        }
}
[/mw_shl_code]

效果图

我们看到AttachEffect
EffectName填写我们刚才复制好的特效路径

EffectAttachType是特效附着点的意思
有follow_origin,follow_chest,follow_eyes,follow_head,follow_overhead
但是不一定会生效哦,依据情况而定,一般就用follow_origin和follow_overhead

Target就是创建特效给某单位

这是一种方法
其实还可以使用modifier里面的一些参数来实现
[mw_shl_code=actionscript3,true]"ability_passive"
{
        "BaseClass"                                        "ability_datadriven"
        "AbilityBehavior"                        "DOTA_ABILITY_BEHAVIOR_PASSIVE"

        "precache" //缓存特效
    {
        "particle"              "particles/econ/courier/courier_greevil_green/courier_greevil_green_ambient_3.vpcf"
    }
        
        "Modifiers"
        {
                "modifier_ability_passive"
                {
                        "IsHidden"                        "1"
                        "Passive"                        "1"
                        "EffectName"                "particles/econ/courier/courier_greevil_green/courier_greevil_green_ambient_3.vpcf"
                        "EffectAttachType"  "follow_origin"
                }
        }
}
[/mw_shl_code]

嗯,可以瞧出来,就是把EffectName和EffectAttachType移出来了,但是效果是一样的哦
这对于简单特效而言的,对于那些要附着到手到武器那就不能这样了


其中还多了一个precache,这个是可以在技能里面使用的,用来预载入特效
当然也可以在Lua 中,对于courier_greevil_green_ambient_3.vpcf这个特效而言
是不需要预载入的,我这里只是演示一下,但是大部分都是要预载入的

接下来是Lua创建
这下我们要打开特效了
我们在编辑器中双击courier_greevil_green_ambient_3这个特效



我们需要的是左边的控制点(Control Point),我们简称CP,其中#0,#2就是说CP0,CP2
介于CP0和CP2之间的那个就不要管了,那是旋转之类的功能

我们看到CP2默认就是255,255,255
明显CP2是控制颜色的,不过我修改了一下发现没起效果╮(╯▽╰)╭

那我们需要的就是CP0了
代码如下

[mw_shl_code=actionscript3,true]"ability_passive"
{
        "BaseClass"                                        "ability_datadriven"
        "AbilityBehavior"                        "DOTA_ABILITY_BEHAVIOR_PASSIVE"

        "precache" //缓存特效
    {
        "particle"              "particles/econ/courier/courier_greevil_green/courier_greevil_green_ambient_3.vpcf"
    }
        
        "Modifiers"
        {
                "modifier_ability_passive"
                {
                        "IsHidden"                        "1"
                        "Passive"                        "1"
                        
                        "OnCreated"
                        {
                                "RunScript"
                                {
                                        "ScriptFile"         "scripts/vscripts/ability.lua"
                                        "Function"                "AbilityCreateEffect"

                                        //传进特效路径
                                        "effect_name"        "particles/econ/courier/courier_greevil_green/courier_greevil_green_ambient_3.vpcf"
                                }
                        }
                }
        }
}
[/mw_shl_code]

[mw_shl_code=golang,true]function AbilityCreateEffect( keys )
        local caster = keys.caster

        --创建特效
        local particleID = ParticleManager:CreateParticle(keys.effect_name, PATTACH_ABSORIGIN_FOLLOW,caster)

        --我们将施法者的所在的三维坐标传给了CP0
        ParticleManager:SetParticleControl(particleID,0,caster:GetOrigin())
End
[/mw_shl_code]

效果是一样的
首先创建特效的类是ParticleManager
所以要ParticleManager:CreateParticle创建特效
CreateParticle的第一个参数是特效路径
我在KV中填写了effect_name,并赋值特效路径
然后在Lua中可以通过keys.effect_name获取


第二个参数是常量,有以下几种
MAX_PATTACH_TYPES
PATTACH_ABSORIGIN
PATTACH_ABSORIGIN_FOLLOW
PATTACH_CUSTOMORIGIN
PATTACH_CUSTOMORIGIN_FOLLOW
PATTACH_EYES_FOLLOW
PATTACH_OVERHEAD_FOLLOW
PATTACH_POINT
PATTACH_POINT_FOLLOW
PATTACH_POINT_FOLLOW_SUBSTEPPED
PATTACH_RENDERORIGIN_FOLLOW
PATTACH_ROOTBONE_FOLLOW
PATTACH_WORLDORIGIN
不要不在意这些常量,如果把上面的PATTACH_ABSORIGIN_FOLLOW改成PATTACH_WORLDORIGIN,那么你会发现特效就不跟随单位了,这就依据情况而定了

第三个参数是填写要绑定特效的单位
CreateParticle返回一个整数(好奇葩),也就是下面说的particleID

这里再介绍一些特效相关函数
void ReleaseParticleIndex(int particleID)
这个函数我称为自生自灭函数,因为一旦ReleaseParticleIndex一个特效
那么你将无法再控制特效,相当于对特效说“你自由了,飞吧,梦想有多远就飞多远”
也就是说无法SetParticleControl,所以一般是用于那些即时的特效

void DestroyParticle(int particleID, boolimmediately)
这个函数是用来删除特效的,第二个参数的意思是是否立即删除
为了好看一般都是false

好了,这是对于简单的特效而言的

接下来我们来看看拍拍熊的一个特效
特效是ursa_overpower_buff.vpcf
我们在编辑器中打开这个特效,然后可以分解成下面如图所示



嗯,估计你可能郁闷了,又是眼睛又是背部的
而EffectAttachType只能填写一个,如果你填写了follow_eyes还不是绑定到眼睛

好吧,我们在资源筛选中只选择Model
然后搜索Ursa,我们双击下面这玩意(裸奔耶)





在模型编辑器里面,我们依然可以用WASD来移动,鼠标右键转向,这点跟地形编辑器一样



这样可以看得比较仔细了

我们可以看到有一个attach_hitloc,这是每一个模型都有的
我们需要的就是attach_hitloc和attach_head

代码如下
[mw_shl_code=actionscript3,true]"ability_passive"
{
        "BaseClass"                                        "ability_datadriven"
        "AbilityBehavior"                        "DOTA_ABILITY_BEHAVIOR_PASSIVE"

        "precache" //缓存特效
    {
        "particle"              "particles/units/heroes/hero_ursa/ursa_overpower_buff.vpcf"
    }
        
        "Modifiers"
        {
                "modifier_ability_passive"
                {
                        "IsHidden"                        "1"
                        "Passive"                        "1"

                        "OnCreated"
                        {
                                "AttachEffect"
                                {
                                        "EffectName"                "particles/units/heroes/hero_ursa/ursa_overpower_buff.vpcf"
                                        "EffectAttachType"  "start_at_customorigin"
                                        "Target"                           "CASTER"
                                        "ControlPointEntities"
                                        {
                                                "CASTER"                "attach_head"        //CP0
                                                "CASTER"                "attach_hitloc"        //CP1
                                                "CASTER"                "attach_hitloc"        //CP2
                                                "CASTER"                "attach_hitloc"        //CP3
                                        }
                                }
                        }
                }
        }
}
[/mw_shl_code]

没特效之前


有特效之后


没错,EffectAttachType改成start_at_customorigin
然后多了ControlPointEntities
在ControlPointEntities里面我们可以看到注释是从上往下CP0到CP3
这是一个顺序,不能打乱的哦

其中CP2在粒子编辑器中我们并没有看到
但是不能因为这样我们就要少一个坑,所以随便给个值填上
少个坑是不行哦,CP1是未知的,不知道控制啥,所以给个attach_hitloc
前面说过了attach_hitloc是所有模型都有的,所以填这个保险


在ControlPointEntities里面左边是填的都是CASTER
没错就是这样的,意思就是说第CP几是绑定到CASTER的某附着点

还有一个特效是类似的哦,就是斯温的大招特效,也有一个眼睛的特效
这个就留下当作业吧

我们的技能要变成单体目标了
因为接下来就是闪电链之类的特效
我们就选宙斯的特效吧,特效名zuus_arc_lightning_head



还是比较简单的,CP0和CP1


代码如下
[mw_shl_code=actionscript3,true]"ability_unit"
{
        "BaseClass"                                        "ability_datadriven"
        "AbilityBehavior"                        "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET"
        "AbilityUnitTargetType"                "DOTA_UNIT_TARGET_BASIC | DOTA_UNIT_TARGET_HERO"
        "AbilityUnitTargetTeam"                "DOTA_UNIT_TARGET_TEAM_ENEMY"
        "AbilityUnitTargetFlags"        "DOTA_UNIT_TARGET_FLAG_NONE"
        
        "precache" //缓存特效
    {
        "particle"              "particles\units\heroes\hero_zuus\zuus_arc_lightning_head.vpcf"
    }

        "OnSpellStart"
        {
                "AttachEffect"
                {
                        "EffectName"                "particles\units\heroes\hero_zuus\zuus_arc_lightning_head.vpcf"
                        "EffectAttachType"  "start_at_customorigin"
                        "Target"                          "CASTER"
                        "ControlPointEntities"
                        {
                                "CASTER"                "attach_hitloc"        //CP0
                                "TARGET"                "attach_hitloc"        //CP1
                        }
                }
        }
}
[/mw_shl_code]

效果


不知不觉就这么长了
还没完

我们再来一个全能洗礼的特效
本来想要主宰的,结果不知道为啥主宰的剑刃风暴特效貌似存在BUG
所以还是用全能的洗礼,omniknight_purification.vpcf


代码如下
[mw_shl_code=actionscript3,true]"ability_unit"
{
        "BaseClass"                                        "ability_datadriven"
        "AbilityBehavior"                        "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET"
        "AbilityUnitTargetType"                "DOTA_UNIT_TARGET_BASIC | DOTA_UNIT_TARGET_HERO"
        "AbilityUnitTargetTeam"                "DOTA_UNIT_TARGET_TEAM_ENEMY"
        "AbilityUnitTargetFlags"        "DOTA_UNIT_TARGET_FLAG_NONE"

        "precache" //缓存特效
    {
        "particle"              "particles/units/heroes/hero_omniknight/omniknight_purification.vpcf"
    }
        
        "OnSpellStart"
        {
                "AttachEffect"
                {
                        "EffectName"                "particles/units/heroes/hero_omniknight/omniknight_purification.vpcf"
                        "EffectAttachType"  "follow_origin"
                        "Target"                           "TARGET"
                        "ControlPoints"
                        {
                                "00"                        "0 0 5"
                                "01"                        "300 300 300"
                                "02"                        "0 0 5"
                        }
                }
        }
}
[/mw_shl_code]

效果


这次,可以看到ControlPointEntities变成了ControlPoints
可以看出EffectAttachType的值变成follow_origin
而ControlPoints中00 01 02等明确指出了CP
这里说一下ControlPoints和ControlPointEntities不能同时使用


好了,结束了,Lua部分讲得比较少,就当作作业吧,自己好好探索
基本都是可以通过AttachEffect来解决
折腾了一晚上,精神都恍惚了,可能有些讲得不清楚
不懂的地方继续回帖,错误的地方请指出


OK,裸奔

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册账号

x

评分

参与人数 4荣誉 +2 金币 +200 创造力 +30 求知欲 +20 互助 +30 智慧 +20 节操 +20 收起 理由
Xavier + 1 + 100 + 10 + 10 + 10 -10 有舍必有得嘛,对吧,哈哈
火柴人 + 10 今天的节操就给你啦
无双 + 1 + 100 + 20 + 20 + 20 + 10 + 10 节操
kzhang9 + 10 很给力!赞!

查看全部评分

回复

使用道具 举报

75

主题

694

帖子

3026

积分

大摸导师

热爱让我们并肩

UID
4
金币
3378
精华
0
节操
-232

隐修议员

QQ
发表于 2014-11-16 03:53:03 | 显示全部楼层
最近发现特效的创建问题日益突出,问的人也多了
这种情况下,我必须马上出教程了


这句话读出来有一种救世主的感觉…… 毕竟代码君啊……先顶再看
如果一个人尽可能做好能做的事情,那这个世界就一定会因为这件事情而变得更美好一点。
回复 支持 反对

使用道具 举报

43

主题

430

帖子

2855

积分

大魔导师

UID
1731
金币
3664
精华
5
节操
-43

黑科技玩的6我是鸽手隐修议员扛把子教程大师创世者开拓者

QQ
 楼主| 发表于 2014-11-16 17:10:12 | 显示全部楼层
无双 发表于 2014-11-16 03:53
这句话读出来有一种救世主的感觉…… 毕竟代码君啊……先顶再看

我说的是实情嘛,只能由我来拯救了
回复 支持 反对

使用道具 举报

1

主题

89

帖子

256

积分

Lv:2 长袍法师

UID
2908
金币
190
精华
0
节操
1
发表于 2014-11-17 11:23:35 | 显示全部楼层
能够打开粒子特效咯,很有意思,很有意思

就刚才,我用白虎的坠星那个特效,竟然可以改变他的起始坐标,不一定非得从天上砸下来

那么问题来了,有没有办法让它以一种自定义的轨迹砸下来??

因为我把特效的起始坐标用鼠标拉着动的情况下,发射出来的特效竟然是以一种大弧线飞过来,太酷了
回复 支持 反对

使用道具 举报

43

主题

430

帖子

2855

积分

大魔导师

UID
1731
金币
3664
精华
5
节操
-43

黑科技玩的6我是鸽手隐修议员扛把子教程大师创世者开拓者

QQ
 楼主| 发表于 2014-11-17 12:55:23 | 显示全部楼层
徐胜 发表于 2014-11-17 11:23
能够打开粒子特效咯,很有意思,很有意思

就刚才,我用白虎的坠星那个特效,竟然可以改变他的起始坐标, ...

你在编辑器里有这个效果的话,
可以在Lua里面使用SetParticleControl来移动特效,一般可以产生相同效果
回复 支持 反对

使用道具 举报

1

主题

89

帖子

256

积分

Lv:2 长袍法师

UID
2908
金币
190
精华
0
节操
1
发表于 2014-11-18 15:41:53 | 显示全部楼层
裸奔的代码 发表于 2014-11-17 12:55
你在编辑器里有这个效果的话,
可以在Lua里面使用SetParticleControl来移动特效,一般可以产生 ...

我擦呢,有的特效被修改啦

自从解压了你给的那个特效包
回复 支持 反对

使用道具 举报

43

主题

430

帖子

2855

积分

大魔导师

UID
1731
金币
3664
精华
5
节操
-43

黑科技玩的6我是鸽手隐修议员扛把子教程大师创世者开拓者

QQ
 楼主| 发表于 2014-11-18 16:13:28 | 显示全部楼层
徐胜 发表于 2014-11-18 15:41
我擦呢,有的特效被修改啦

自从解压了你给的那个特效包

- -!
被修改?
我没发现
回复 支持 反对

使用道具 举报

7

主题

67

帖子

347

积分

创世神

《东方DOTS》制作组

UID
1347
金币
781
精华
0
节操
-21

创世者隐修议员扛把子开拓者幸运儿!幻想乡

发表于 2014-11-19 10:55:50 | 显示全部楼层
特效还是比较难的,一言道不尽。

初学还是以修改官方特效进行导入比较好,这里只是介绍了一些如何通过CP应用既有特效
回复 支持 反对

使用道具 举报

1

主题

89

帖子

256

积分

Lv:2 长袍法师

UID
2908
金币
190
精华
0
节操
1
发表于 2014-11-19 16:31:15 | 显示全部楼层
裸奔的代码 发表于 2014-11-18 16:13
- -!
被修改?
我没发现

你看看天怒法师的第一个技能的特效呢
回复 支持 反对

使用道具 举报

43

主题

430

帖子

2855

积分

大魔导师

UID
1731
金币
3664
精华
5
节操
-43

黑科技玩的6我是鸽手隐修议员扛把子教程大师创世者开拓者

QQ
 楼主| 发表于 2014-11-19 18:15:32 | 显示全部楼层
justarcherit 发表于 2014-11-19 10:55
特效还是比较难的,一言道不尽。

初学还是以修改官方特效进行导入比较好,这里只是介绍了一些如何通过CP ...

archer來一篇特效教程吧
回复 支持 反对

使用道具 举报

43

主题

430

帖子

2855

积分

大魔导师

UID
1731
金币
3664
精华
5
节操
-43

黑科技玩的6我是鸽手隐修议员扛把子教程大师创世者开拓者

QQ
 楼主| 发表于 2014-11-19 18:26:13 | 显示全部楼层
徐胜 发表于 2014-11-19 16:31
你看看天怒法师的第一个技能的特效呢

那个不是被修改过,不过不知道为啥会那样
回复 支持 反对

使用道具 举报

1

主题

89

帖子

256

积分

Lv:2 长袍法师

UID
2908
金币
190
精华
0
节操
1
发表于 2014-11-21 17:15:00 | 显示全部楼层
裸奔的代码 发表于 2014-11-19 18:26
那个不是被修改过,不过不知道为啥会那样

代码哥,我修改了一些特效,改不回去了,怎么办……
回复 支持 反对

使用道具 举报

43

主题

430

帖子

2855

积分

大魔导师

UID
1731
金币
3664
精华
5
节操
-43

黑科技玩的6我是鸽手隐修议员扛把子教程大师创世者开拓者

QQ
 楼主| 发表于 2014-11-21 22:33:16 | 显示全部楼层
徐胜 发表于 2014-11-21 17:15
代码哥,我修改了一些特效,改不回去了,怎么办……

重新复制进去呗,或者就覆盖你改的
回复 支持 反对

使用道具 举报

1

主题

89

帖子

256

积分

Lv:2 长袍法师

UID
2908
金币
190
精华
0
节操
1
发表于 2014-11-24 23:42:38 | 显示全部楼层


用这些动作 前面几个我会用
后面来+号的怎么用啊
比如第三个,是斧王的转
怎么会有个+injured

回复 支持 反对

使用道具 举报

43

主题

430

帖子

2855

积分

大魔导师

UID
1731
金币
3664
精华
5
节操
-43

黑科技玩的6我是鸽手隐修议员扛把子教程大师创世者开拓者

QQ
 楼主| 发表于 2014-11-25 01:09:01 | 显示全部楼层
徐胜 发表于 2014-11-24 23:42
用这些动作 前面几个我会用
后面来+号的怎么用啊
比如第三个,是斧王的转

目前不知道,这个我试了很多种办法,最后在reddit上问了老外也不知道

评分

参与人数 1金币 +1 节操 -10 收起 理由
无双 + 1 -10 大晚上不睡觉,竟幸运地捡到一枚金币!

查看全部评分

回复 支持 反对

使用道具 举报

0

主题

21

帖子

92

积分

Lv:1 隐谧贤者

UID
3020
金币
243
精华
0
节操
1
发表于 2014-11-25 19:16:32 | 显示全部楼层
本帖最后由 zblcm 于 2014-11-25 19:19 编辑

SetParticleControlEnt的问题 不能正确attach
关于这个API的参数说明在这里

我的代码:
[mw_shl_code=golang,true]function zeus_split_lightning_OnSpellStart( keys )

        local u_caster = keys.caster
        local u_target = keys.target

        local a_ability = u_caster:FindAbilityByName("zeus_split_lightning")
        local i_level = a_ability:GetLevel()


        
        local ptc_cast = ParticleManager:CreateParticle(
                                                                "particles/units/heroes/hero_zuus/zuus_arc_lightning.vpcf",
                                                                 PATTACH_CUSTOMORIGIN_FOLLOW,
                                                                u_caster
                                                         )

        v_temp = Vector(400, 400, 400)                        --这个Vector是随便写的 为了看看有什么效果。 实际上没有任何效果。

        ParticleManager:SetParticleControlEnt(ptc_cast, 0, u_caster, 1, "attach_hitloc", v_temp, true)
        ParticleManager:SetParticleControlEnt(ptc_cast, 1, u_target, 0, "attach_hitloc", v_temp, true)

        StartSoundEvent("Hero_Zuus.ArcLightning.Target", u_target)

end[/mw_shl_code]

现在这个代码可以创建特效并把闪电效果移动到施法者和目标单位之间,但是不能attach。闪电是在施法者脚底和目标脚底出现的。
我怀疑是第4个数据的问题,因为在api里没有明确指出第4个int是什么意思。。。但是一般重要的数据不都摆在前面嘛。。。
回复 支持 反对

使用道具 举报

43

主题

430

帖子

2855

积分

大魔导师

UID
1731
金币
3664
精华
5
节操
-43

黑科技玩的6我是鸽手隐修议员扛把子教程大师创世者开拓者

QQ
 楼主| 发表于 2014-11-25 19:42:38 | 显示全部楼层
zblcm 发表于 2014-11-25 19:16
SetParticleControlEnt的问题 不能正确attach
关于这个API的参数说明在这里

第四个参数不晓得
- -!直接用modifier简单,这个API我没怎么用过
创建特效我一般都用modifier来做
回复 支持 反对

使用道具 举报

0

主题

21

帖子

92

积分

Lv:1 隐谧贤者

UID
3020
金币
243
精华
0
节操
1
发表于 2014-11-26 01:58:14 | 显示全部楼层
裸奔的代码 发表于 2014-11-25 19:42
第四个参数不晓得
- -!直接用modifier简单,这个API我没怎么用过
创建特效我一般都用modifier来做

我要做你的教程里那个拍拍熊放闪电的效果 应该不能用modifier吧 ...
按照你的教程直接在ability定义的特效可以正确显示attach的点 我想用递归做个弧形闪电 ...
难道要用创建马甲单位然后释放一个新技能的方法么 =.=
回复 支持 反对

使用道具 举报

0

主题

21

帖子

92

积分

Lv:1 隐谧贤者

UID
3020
金币
243
精华
0
节操
1
发表于 2014-11-26 02:12:47 | 显示全部楼层
本帖最后由 zblcm 于 2014-11-26 02:17 编辑
zblcm 发表于 2014-11-26 01:58
我要做你的教程里那个拍拍熊放闪电的效果 应该不能用modifier吧 ...
按照你的教程直接在ability定义的特 ...

已经找到了让他正确作用的方法
        ParticleManager:SetParticleControlEnt(ptc_cast, 0, u_caster, 5, "attach_hitloc", v_temp, true)
        ParticleManager:SetParticleControlEnt(ptc_cast, 1, u_target, 5, "attach_hitloc", v_temp, true)
第四个参数必须要填5才可以
至于第六个Vector 我感觉可能是 当attack的出了视野外的时候 这个特效停留在哪 一般取attach单位的origin就好

点评

因为长期用modifier我也没研究这个,你这个发现对一些作者非常有用  发表于 2014-11-26 19:15
非常有用  发表于 2014-11-26 10:28

评分

参与人数 3金币 +152 创造力 +5 求知欲 +6 互助 +5 智慧 +5 节操 +1 收起 理由
kzhang9 + 100 这tm才叫巨额金币
裸奔的代码 + 50 + 5 + 5 + 5 + 5 因为长期用modifier我也没研究这个,你这个.
无双 + 2 + 1 + 1 研究至深夜,意外获得了鸽老师留下的巨额金.

查看全部评分

回复 支持 反对

使用道具 举报

43

主题

430

帖子

2855

积分

大魔导师

UID
1731
金币
3664
精华
5
节操
-43

黑科技玩的6我是鸽手隐修议员扛把子教程大师创世者开拓者

QQ
 楼主| 发表于 2014-11-26 19:06:00 | 显示全部楼层
本帖最后由 裸奔的代码 于 2014-11-26 19:20 编辑
zblcm 发表于 2014-11-26 01:58
我要做你的教程里那个拍拍熊放闪电的效果 应该不能用modifier吧 ...
按照你的教程直接在ability定义的特 ...

弧形闪电- -!一种就是你会粒子编辑器,然后自己做特效
一种就是马甲模拟,不过不是施放技能,用modifier即可
用ApplyDataDrivenModifier把两个马甲传进去
回复 支持 反对

使用道具 举报

0

主题

21

帖子

92

积分

Lv:1 隐谧贤者

UID
3020
金币
243
精华
0
节操
1
发表于 2014-11-27 06:36:19 | 显示全部楼层
裸奔的代码 发表于 2014-11-26 19:06
弧形闪电- -!一种就是你会粒子编辑器,然后自己做特效
一种就是马甲模拟,不过不是施放技能,用modifie ...

void ApplyDataDrivenModifier(handle source, handle target, string modifier_name, handle modifierArgs)
不会用啊 .. API列表没给注释
这里的handle modifierArgs是指的arguments的意思么 =.=

[mw_shl_code=actionscript3,true]                        "modifier_sniper_take_aim_fixed_bonus_range"
                        {
                                "Passive"           "1"
                                "IsHidden"          "0"
                                 "Properties"
                                {
                                        "MODIFIER_PROPERTY_ATTACK_RANGE_BONUS"  "%bonus_range" //增加射程
                                }
                        }[/mw_shl_code]

比如这个让火枪加射程的modifier 我需要
table["bonus_range"] = 300
ApplyDataDrivenModifier( u_caster , u_caster , "modifier_sniper_take_aim_fixed_bonus_range" , table )
之类的么 ...
回复 支持 反对

使用道具 举报

7

主题

67

帖子

347

积分

创世神

《东方DOTS》制作组

UID
1347
金币
781
精华
0
节操
-21

创世者隐修议员扛把子开拓者幸运儿!幻想乡

发表于 2014-11-27 08:55:04 | 显示全部楼层
zblcm 发表于 2014-11-27 06:36
void ApplyDataDrivenModifier(handle source, handle target, string modifier_name, handle modifierAr ...


ability:ApplyDataDrivenModifier(caster,target,"XXX_XXX_XXX",nil)就行了

modifier的参数由ability的AbilitySpecial的值来决定
回复 支持 反对

使用道具 举报

0

主题

21

帖子

92

积分

Lv:1 隐谧贤者

UID
3020
金币
243
精华
0
节操
1
发表于 2014-11-27 09:28:15 | 显示全部楼层
justarcherit 发表于 2014-11-27 08:55
ability:ApplyDataDrivenModifier(caster,target,"XXX_XXX_XXX",nil)就行了

modifier的参数由abilit ...

在一个技能里定义的modifier只能在一个技能的代码里用么 = =
能不能跨技能调用modifier 比如我让火枪放一个技能调用冰魂大招的buff

还有就是如果我想通过在lua里的计算得到modifier的参数 而不是用ability special里通过等级固定的参数怎么办 ...
比如卡尔的冰墙减速是通过冰球的等级决定的 而不是那个技能的等级决定的
回复 支持 反对

使用道具 举报

0

主题

21

帖子

92

积分

Lv:1 隐谧贤者

UID
3020
金币
243
精华
0
节操
1
发表于 2014-11-27 09:31:02 | 显示全部楼层
算了 我自己试试吧 = = 老是做伸手党不太好 遇到实在搞不懂的再来请教大神们 ...
回复 支持 反对

使用道具 举报

54

主题

539

帖子

3419

积分

魔导师

UID
2370
金币
3442
精华
0
节操
-364

创世者隐修议员扛把子脑洞大开教程大师开拓者我是鸽手黑科技玩的6平妖侠士

发表于 2014-11-27 09:35:07 | 显示全部楼层
zblcm 发表于 2014-11-27 09:31
算了 我自己试试吧 = = 老是做伸手党不太好 遇到实在搞不懂的再来请教大神们 ...

有问题推荐进群问
回复 支持 反对

使用道具 举报

0

主题

21

帖子

92

积分

Lv:1 隐谧贤者

UID
3020
金币
243
精华
0
节操
1
发表于 2014-11-27 09:42:17 | 显示全部楼层
kzhang9 发表于 2014-11-27 09:35
有问题推荐进群问

我不知道群号呀 /^\
回复 支持 反对

使用道具 举报

43

主题

430

帖子

2855

积分

大魔导师

UID
1731
金币
3664
精华
5
节操
-43

黑科技玩的6我是鸽手隐修议员扛把子教程大师创世者开拓者

QQ
 楼主| 发表于 2014-11-27 13:43:11 | 显示全部楼层
zblcm 发表于 2014-11-27 09:42
我不知道群号呀 /^\

QQ群347735258
回复 支持 反对

使用道具 举报

75

主题

694

帖子

3026

积分

大摸导师

热爱让我们并肩

UID
4
金币
3378
精华
0
节操
-232

隐修议员

QQ
发表于 2014-11-27 13:45:07 | 显示全部楼层
kzhang9 发表于 2014-11-27 09:35
有问题推荐进群问

还可以发在本论坛的疑问求助区,这个区是保证关注和解答的,除非 问题违规或问题我们论坛没人知道
如果一个人尽可能做好能做的事情,那这个世界就一定会因为这件事情而变得更美好一点。
回复 支持 反对

使用道具 举报

7

主题

29

帖子

157

积分

Lv:2 长袍法师

UID
2960
金币
116
精华
0
节操
-1
发表于 2014-11-30 23:29:21 | 显示全部楼层
我想给单位的普通攻击更换特效附着点,应该怎么做?

回复 支持 反对

使用道具 举报

43

主题

430

帖子

2855

积分

大魔导师

UID
1731
金币
3664
精华
5
节操
-43

黑科技玩的6我是鸽手隐修议员扛把子教程大师创世者开拓者

QQ
 楼主| 发表于 2014-11-30 23:39:05 | 显示全部楼层
fooltomb 发表于 2014-11-30 23:29
我想给单位的普通攻击更换特效附着点,应该怎么做?

自带的小兵是这样的,自定义的小兵攻击没特效的
所以应该是某个modifier作用的效果,既然是这样就自己做一个技能给小兵咯
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号

本版积分规则

QQ|Archiver|手机版|小黑屋|AMHC!dota2rpg~ ( 闽ICP备14009209 )

GMT+8, 2019-11-12 18:33 , Processed in 0.117660 second(s), 32 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc. Theme.Yeei

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