首页
课程中心
LUA实例应用
区域管理(一)
区域管理(一)
小燕 更新时间: 2022-08-25 11:24:43

LUA实例应用:区域管理(一)

本课我们将学习区域管理的相关知识。我们会学习圆和球的生成方法,并设置圆心、球心和半径。我们还会学习区域动效的实现方法。

 

视频时间节点:

  • 圆的生成:15:34
  • 球的生成:22:31
  • 区域动效:25:19

 

老师介绍:

 
区域动效
-- 生成一个面向上下方向的实心圆,参数是圆心坐标,半径和方块id
local function circle(x0, y0, z0, radius, blockid)
    for x = x0 - radius, x0 + radius
    do 
        for z = z0 - radius, z0 + radius
        do 
            -- 获取两点距离
            local result,distance=World:calcDistance({x=x0,y=y0,z=z0},{x=x,y=y0,z=z})
            if(result == 1001)
            then 
                Chat:sendSystemMsg("获取两点距离失败")
            end
            if(distance <= radius)
            then
                Block:replaceBlock(blockid, x, y0, z,0)
            end
        end
    end
end

-- 生成一个实心球,参数是球心坐标,半径和方块id
local function ball(x0, y0, z0, radius, blockid)
    for x = x0 - radius, x0 + radius
    do 
        for z = z0 - radius, z0 + radius
        do 
            for y = y0 - radius, y0 + radius
            do 
                -- 获取两点距离
                local result,distance=World:calcDistance({x=x0,y=y0,z=z0},{x=x,y=y,z=z})
                if(result == 1001)
                then 
                    Chat:sendSystemMsg("获取两点距离失败")
                end
                if(distance <= radius)
                then
                    Block:replaceBlock(blockid, x, y, z,0)
                end
            end
        end
    end
end

start_id, end_id = 666, 682
now_id = start_id
radius = 10
now_radius = 0

-- 游戏运行时运行
local function Game_Run()
    circle(-265,6,256,now_radius,now_id)
    now_radius = now_radius + 1 
    if(now_radius > radius)
    then
        now_radius = 0 
        now_id = now_id + 1 
        if(now_id > end_id)
        then
            now_id = start_id 
        end
    end
end

-- 注册游戏运行监听器
ScriptSupportEvent:registerEvent([=[Game.Run]=], Game_Run)

 

生成球

-- 生成一个面向上下方向的实心圆,参数是圆心坐标,半径和方块id
local function circle(x0, y0, z0, radius, blockid)
    for x = x0 - radius, x0 + radius
    do 
        for z = z0 - radius, z0 + radius
        do 
            -- 获取两点距离
            local result,distance=World:calcDistance({x=x0,y=y0,z=z0},{x=x,y=y0,z=z})
            if(result == 1001)
            then 
                Chat:sendSystemMsg("获取两点距离失败")
            end
            if(distance <= radius)
            then
                Block:replaceBlock(blockid, x, y0, z,0)
            end
        end
    end
end

-- 生成一个实心球,参数是球心坐标,半径和方块id
local function ball(x0, y0, z0, radius, blockid)
    for x = x0 - radius, x0 + radius
    do 
        for z = z0 - radius, z0 + radius
        do 
            for y = y0 - radius, y0 + radius
            do 
                -- 获取两点距离
                local result,distance=World:calcDistance({x=x0,y=y0,z=z0},{x=x,y=y,z=z})
                if(result == 1001)
                then 
                    Chat:sendSystemMsg("获取两点距离失败")
                end
                if(distance <= radius)
                then
                    Block:replaceBlock(blockid, x, y, z,0)
                end
            end
        end
    end
end

-- 游戏开始时运行
local function Game_Start()
    ball(-265, 50, 256, 30, 200)
end

-- 注册游戏开始监听器
ScriptSupportEvent:registerEvent([=[Game.Start]=], Game_Start)

 

生成圆

 

-- 生成一个面向上下方向的实心圆,参数是圆心坐标,半径和方块id
local function circle(x0, y0, z0, radius, blockid)
    for x = x0 - radius, x0 + radius
    do 
        for z = z0 - radius, z0 + radius
        do 
            -- 获取两点距离
            local result,distance=World:calcDistance({x=x0,y=y0,z=z0},{x=x,y=y0,z=z})
            if(result == 1001)
            then 
                Chat:sendSystemMsg("获取两点距离失败")
            end
            if(distance <= radius)
            then
                Block:replaceBlock(blockid, x, y0, z,0)
            end
        end
    end
end

-- 游戏开始时运行
local function Game_Start()
    circle(-265, 6, 256, 100, 200)
end

-- 注册游戏开始监听器
ScriptSupportEvent:registerEvent([=[Game.Start]=], Game_Start)

 

课程目录
共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 塔防游戏
站点有内容要更新是否更新。
更新
忽略