找回密码
 点一下
查看: 3408|回复: 5

激光束

[复制链接]
发表于 2008-11-16 16:47:30 | 显示全部楼层 |阅读模式
因为小弟不会截图,所以请哪个大大帮补上``````

激光冲击波演示.w3x

28 KB, 下载次数: 191

就是一排光

评分

参与人数 1威望 +15 收起 理由
biackese + 15 原创内容

查看全部评分

发表于 2008-11-16 17:37:53 | 显示全部楼层
100%没排泄........
原来做了一个,但是没处理好地形高度问题,主要是因为弄出那么多点再GetLocationZ再设置高度有点麻烦,嘛、做成技能倒是不错。

[jass]
function Laser_Remove takes nothing returns nothing
    local unit u = bj_lastCreatedUnit
    call TriggerSleepAction(0)
    call KillUnit(u)
    call TriggerSleepAction(1)
    call RemoveUnit(u)
    set u = null
endfunction

function Laser takes real LocX1,real LocY1,real LocZ1,real LocX2,real LocY2,real LocZ2,integer EffectID,string Effect returns nothing
    local integer i = 0
    local integer imax = R2I(SquareRoot((LocX1-LocX2) * (LocX1-LocX2) + (LocY1-LocY2) * (LocY1-LocY2))/30) + 188
    local real angle = (180.0/3.14159)*Atan2(LocY2-LocY1,LocX2-LocX1)
    local real MapMinX = GetRectMinX(bj_mapInitialPlayableArea)
    local real MapMaxX = GetRectMaxX(bj_mapInitialPlayableArea)
    local real MapMinY = GetRectMinY(bj_mapInitialPlayableArea)
    local real MapMaxY = GetRectMaxY(bj_mapInitialPlayableArea)
    local real height = 0
    local real x = 0
    local real y = 0
    local real z = 0
    local unit u = null
    if (LocZ1!=0) or (LocZ2!=0) then
        set height = (LocZ1 - LocZ2)/(imax-188)
        loop
            set i = i + 1
            exitwhen (i > imax) or ((LocZ1-height*I2R(i)) < 0) or (x > MapMaxX) or (x < MapMinX) or (y > MapMaxY) or (y < MapMinY)
                set x = LocX1 + I2R(30*i) * Cos(angle*(3.14159/180))
                set y = LocY1 + I2R(30*i) * Sin(angle*(3.14159/180))
                set u = CreateUnit(Player(PLAYER_NEUTRAL_PASSIVE),EffectID,x,y,angle)
                call SetUnitFlyHeight(u,(LocZ1-height*I2R(i)),0)
                set bj_lastCreatedUnit = u
                call ExecuteFunc("Laser_Remove")
        endloop
    else
        loop
            set i = i + 1
            exitwhen i > imax
                set x = LocX1 + I2R(30*i) * Cos(angle*(3.14159/180))
                set y = LocY1 + I2R(30*i) * Sin(angle*(3.14159/180))
                call DestroyEffect(AddSpecialEffect(Effect,x,y))
        endloop
    endif
    set u = null
endfunction
[/jass]
回复

使用道具 举报

发表于 2008-11-16 18:59:34 | 显示全部楼层
本来想补动态的...太卡了~~~
01.jpg
02.jpg
回复

使用道具 举报

发表于 2008-11-16 20:56:06 | 显示全部楼层
卡得吓死人
回复

使用道具 举报

kw 该用户已被删除
发表于 2008-11-16 22:28:13 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

 楼主| 发表于 2008-11-17 08:59:16 | 显示全部楼层
卡嘛...自己试的时候不会...(难道是看我人品太好的关系?喂..表丢拖鞋..丢也表丢俄的脸),下次一定排泄....
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-28 19:13 , Processed in 0.170125 second(s), 26 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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