首页
课程中心
LUA实例应用
生物事件
生物事件
小燕 更新时间: 2022-08-25 11:18:59

LUA实例应用:生物事件

本课将会学习生物事件的相关知识。首先,通过生物进入和离开区域事件制作魔法阵效果,法杖发射法球后会在击中的地方生成对应的魔法阵,怪物进入魔法阵会获得对应的状态。另外,我们还会学习怪物特效的实现方法,并制作精英怪

 

视频时间节点:

  • 08:51 魔法阵
  • 27:46 怪物特效
  • 29:53 精英怪

 

老师介绍:

 
魔法阵
area_size = 10
area_list = {}
-- 投掷物击中目标时运行
local function Actor_Projectile_Hit(event)
    Chat:sendSystemMsg(event.itemid)  
    -- 普通法球
    if(event.itemid == 11586)
    then 
        World:playParticalEffect(event.x,event.y+1,event.z,1325,area_size*2)
        local result,areaid = Area:createAreaRect({x=event.x, y=event.y+1, z=event.z}, {x=area_size/2,y=0,z=area_size/2})
        if(result == 1001)
        then 
            Chat:sendSystemMsg("创建普通区域失败")
        end 
        area_list[#area_list + 1] = {area=areaid, area_type="普通"}
    -- 火焰法球
    elseif(event.itemid == 11587)
    then 
        World:playParticalEffect(event.x,event.y+1,event.z,1327,area_size*2)
        local result,areaid = Area:createAreaRect({x=event.x, y=event.y+1, z=event.z}, {x=area_size/2,y=0,z=area_size/2})
        if(result == 1001)
        then 
            Chat:sendSystemMsg("创建火焰区域失败")
        end 
        area_list[#area_list + 1] = {area=areaid, area_type="火焰"}
    -- 雷电法球
    elseif(event.itemid == 11588)
    then 
        World:playParticalEffect(event.x,event.y+1,event.z,1331,area_size*2)
        local result,areaid = Area:createAreaRect({x=event.x, y=event.y+1, z=event.z}, {x=area_size/2,y=0,z=area_size/2})
        if(result == 1001)
        then 
            Chat:sendSystemMsg("创建雷电区域失败")
        end 
        area_list[#area_list + 1] = {area=areaid, area_type="雷电"}
    -- 淬毒法球
    elseif(event.itemid == 11589)
    then 
        World:playParticalEffect(event.x,event.y+1,event.z,1329,area_size*2)
        local result,areaid = Area:createAreaRect({x=event.x, y=event.y+1, z=event.z}, {x=area_size/2,y=0,z=area_size/2})
        if(result == 1001)
        then 
            Chat:sendSystemMsg("创建淬毒区域失败")
        end 
        area_list[#area_list + 1] = {area=areaid, area_type="淬毒"}
    end 
end 

-- 生物进入区域时运行
local function Actor_AreaIn(event)
    for k,v in pairs(area_list)
    do 
        if(v.area == event.areaid)
        then 
            if(v.area_type == "普通")
            then 
                Actor:addBuff(event.eventobjid, 1000, 3, 0)
            elseif(v.area_type == "火焰")
            then 
                Actor:addBuff(event.eventobjid, 200, 2, 0)
            elseif(v.area_type == "雷电")
            then 
                Actor:addBuff(event.eventobjid, 230, 1, 0)
            elseif(v.area_type == "淬毒")
            then 
                Actor:addBuff(event.eventobjid, 34, 2, 0)
            end 
        end 
    end 
end 

-- 生物离开区域时运行
local function Actor_AreaOut(event)
    for k,v in pairs(area_list)
    do 
        if(v.area == event.areaid)
        then 
            if(v.area_type == "普通")
            then 
                Actor:removeBuff(event.eventobjid, 1000)
            elseif(v.area_type == "火焰")
            then 
                Actor:removeBuff(event.eventobjid, 200)
            elseif(v.area_type == "雷电")
            then 
                Actor:removeBuff(event.eventobjid, 230)
            elseif(v.area_type == "淬毒")
            then 
                Actor:removeBuff(event.eventobjid, 34)
            end 
        end 
    end 
end 

-- 生物攻击命中时运行
local function Actor_AttackHit(event)
    local result,x,y,z = Actor:getPosition(event.toobjid)
    if(result == 1001)
    then 
        Chat:sendSystemMsg("获取攻击目标坐标失败")
    end 
    World:playParticalEffect(x,y,z,1350,2)
end 

-- 注册投掷物击中目标监听器
ScriptSupportEvent:registerEvent([=[Actor.Projectile.Hit]=], Actor_Projectile_Hit)
-- 注册生物进入区域监听器
ScriptSupportEvent:registerEvent([=[Actor.AreaIn]=], Actor_AreaIn)
-- 注册生物离开区域监听器
ScriptSupportEvent:registerEvent([=[Actor.AreaOut]=], Actor_AreaOut)
-- 注册生物攻击命中监听器
ScriptSupportEvent:registerEvent([=[Actor.AttackHit]=], Actor_AttackHit)
课程目录
共50节
1 事件系统
2 世界事件
3 游戏逻辑事件
4 玩家事件(一)
5 玩家事件(二)
6 玩家事件(三)
7 玩家事件(四)
8 生物事件
9 方块与道具事件
10 世界管理(一)
11 世界管理(三)
12 世界管理(二)
13 方块管理(一)
14 方块管理(二)
15 Actor管理(一)
16 Actor管理(二)
17 Actor管理(三)
18 玩家管理(一)
19 玩家管理(二)
20 生物管理
21 区域管理(一)
22 区域管理(二)
23 区域管理(三)
24 联机管理
25 背包管理
26 文字板管理
27 容器管理
28 自定义UI管理(一)
29 自定义UI管理(二)
30 自定义UI管理(三)
31 自定义UI应用(一)
32 自定义UI应用(二)
33 自定义UI应用(三)
34 自定义UI应用(四)
35 考试系统
36 购物商城(一)
37 购物商城(二)
38 计算器
39 打击类音游
40 弹球游戏
41 追逐游戏
42 空战游戏(一)
43 空战游戏(二)
44 空战游戏(三)
45 颜色跳跳
46 炮台挑战
47 炸弹游戏
48 推箱子
49 心跳水立方
50 塔防游戏
站点有内容要更新是否更新。
更新
忽略