找回密码
 点一下
查看: 1102|回复: 6

创建【马甲】的方向问题

[复制链接]
发表于 2011-5-27 18:36:29 | 显示全部楼层 |阅读模式
我想做一个暗黑三DH的技能:在冲击波进过的地方都会着火,并且会燃烧一会的技能,但是我创建的【马甲】的方向总偏离冲击波的方向,地图在这里,求帮助 求帮助.w3x (20 KB, 下载次数: 10)
发表于 2011-5-27 19:18:24 | 显示全部楼层
一开始就应该记下施法者和施法点之间的夹角。

你用单位的面向角有什么用。
回复

使用道具 举报

 楼主| 发表于 2011-5-27 22:31:09 | 显示全部楼层

回 1楼(麦德三世) 的帖子

那是单位的面向方向求修改 [s:190]
回复

使用道具 举报

发表于 2011-5-27 22:37:13 | 显示全部楼层
施法者的面向角度和施法的角度没有必然联系
所以取得施法者位置和技能目标点,获取这两点间角度吧
回复

使用道具 举报

发表于 2011-5-28 02:43:12 | 显示全部楼层
jt.gif
表示在GA学了这么多...要回报GA..........
不过希望没有误导LZ.
建议创建马甲用CJ.YDwe里面有这个CJ的UI.不过CJ的话不能用最后创建的单位捕捉.用一个局部变量来记录好了.
好吧...因为太久不用
极坐标移点
.现在才想起来.这个东东也是会创建点的.
表示LZ自己排泄一下吧....其实最好是
用坐标
....

以下引用于鬼一
其实坐标的算法很简单~~
只需要死记住
------------------
点A 到点B的方向就是 反正切 (Atan2(B的Y坐标 - A的Y坐标)*(B的X坐标 - A的X坐标))
反过来同理
点B到点A的方向就是  反正切 (Atan2(A的Y坐标 - B的Y坐标)*(A的X坐标 - B的X坐标))
------------------
点A到点B的距离就是 ((A的X坐标 - B的X坐标)的2次方) + ((A的Y坐标 - B的Y坐标)的2次方))的平方根
------------------
极坐标位移点A的 xy坐标 就是  (A的X坐标 + (位移距离dis*(cos (位移角度ang))))
                                            (A的Y坐标 + (位移距离dis*(sin (位移角度ang))))
------------------
坐标是实数,直白点说也就是数字~直接计算~所以效率 比点高很多并且不存在泄漏
技能施放点 也是个点 所以要排泄 记录完它的XY坐标后即可将 技能施放点 删除
在YDWE中 有(技能施放点的X坐标[YDWE])这个函数 所以很方便,不用咱们自己记录点再删除动作了!
-----------------

希望可以帮到LZ.w3x (19 KB, 下载次数: 9)
[trigger]
underfoot one
    事件
        单位 - 任意单位 发动技能效果
    条件
        (施放技能) 等于 A
    动作
        触发器 - 开启 underfoot two <预设>
        设置 hero = ((触发单位) 的位置)
        设置 armour = (技能施放点)
        设置 face = (hero 到 armour 的角度)
        单位 - 创建 1 步兵 给 (触发玩家) 在 (从 hero 开始,距离 20.00 ,方向为 face 度的位移处) ,面向 armour
        单位 - 设置 3.00 秒 水元素 类型的生命周期对 (最后创建的单位)
        单位 - 对 (最后创建的单位) 发布 兽族牛头人酋长 - 战争践踏 命令
        等待 5.00 秒
        触发器 - 关闭 underfoot two <预设>
        点 - 清除 armour
        点 - 清除 hero

underfoot two
    事件
        单位 - 任意单位 发动技能效果
    条件
        (施放技能) 等于 1 (中立敌对 1)
    动作
        设置 armour_Ability = ((触发单位) 的位置)
        单位 - 创建 1 步兵 给 (触发玩家) 在 (从 armour_Ability 开始,距离 20.00 ,方向为 face 度的位移处) ,面向 armour
        单位 - 设置 3.00 秒 水元素 类型的生命周期对 (最后创建的单位)
        单位 - 对 (最后创建的单位) 发布 兽族牛头人酋长 - 战争践踏 命令
        点 - 清除 armour_Ability
[/trigger]
回复

使用道具 举报

发表于 2011-5-28 06:35:52 | 显示全部楼层
jt2.gif
1.20YDWE开启CJ编译 希望可以帮到LZ.w3x (20 KB, 下载次数: 4)
后来闲下来有空.就直接给你写了一个,也算是练习一下CJ.....如果你对J有兴趣的话.可以看看....如果没有的话...就算了...
不过需要1.20的YDWE开启CJ编译然后才可以使用....或者导出编译后的J文件..我就不直接帖了..

[jass]

    #define gu = GetTriggerUnit()
    #define gx =GetUnitX(gu)
    #define gy = GetUnitY(gu)
    #define gf = GetUnitFacing(gu)
    #define gax = GetSpellTargetX()
    #define gay = GetSpellTargetY()
function Trig_underfoot_one_Conditions takes nothing returns boolean
    if (  GetSpellAbilityId() == 'AOsh' )  then
    return true
    endif
    return false
endfunction
function Trig_underfoot_one_Actions takes nothing returns nothing
    real ox = gx
    real oy = gy
    real ax = gax
    real ay = gay
    real face =Atan2((ay-oy),(ax-ox))
    unit u = gu
    unit m
    real distance = 100
    real x
    real y
    debug BJDebugMsg("哪里有问题?")
    #for i(1,10)
    distance = distance + 100
    x = ox + distance *Cos(face)
    y = oy + distance *Sin(face)
    m =CreateUnit(GetTriggerPlayer(),'hfoo',x,y,face)
    DestroyEffect(AddSpecialEffect("Abilities\\\\Spells\\\\Orc\\\\WarStomp\\\\WarStompCaster.mdl",x,y))
    UnitApplyTimedLife(m,'BHwe',3)
    TriggerSleepAction(0.2)
    debug BJDebugMsg("哪里有问题?")
    #endfor
    flush locals
endfunction
//===========================================================================
function InitTrig_underfoot_one takes nothing returns nothing
    set gg_trg_underfoot_one = CreateTrigger(  )
    call TriggerRegisterAnyUnitEventBJ( gg_trg_underfoot_one, EVENT_PLAYER_UNIT_SPELL_EFFECT )
    call TriggerAddCondition( gg_trg_underfoot_one, Condition( function Trig_underfoot_one_Conditions ) )
    call TriggerAddAction( gg_trg_underfoot_one, function Trig_underfoot_one_Actions )
endfunction

[/jass]
回复

使用道具 举报

 楼主| 发表于 2011-5-28 06:51:29 | 显示全部楼层

回 4楼(4133789) 的帖子

很感谢你的帮忙,但是我使用老狼的UI 我大概知道怎么做了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 点一下

本版积分规则

Archiver|移动端|小黑屋|地精研究院

GMT+8, 2024-11-24 13:42 , Processed in 0.057624 second(s), 21 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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