功能效果展示
运行环境
Win7,Win8,Win10
Reworld版本 体验版
vc_redist.x64 运行环境
针对零基础读者的补充
下载安装 Reworld对应版本
Reworld官网链接:http://www.reworlder.com/
下载后安装后注册账号打开空地图
下载安装vc_redist.x64.rar运行环境
思路分析
我们想要实现玩家按键吸空投箱的功能,首先我们需要设计一个技能的UI,点击这个UI后,空投箱移动到玩家的位置,因此我们需要获取到玩家的坐标,把所有的空投箱组合成一个集合,集合下的所有空投箱朝玩家坐标移动,当到达玩家坐标后停止移动。
功能搭建
一、空投箱搭建过程
1.首先我们需要在工作区里创建一个文件夹,重命名为ObjList。在文件夹下创建一个自定义零件,取消锚定后,导入一个在商店里下载好的空投箱模型。如下图所示:
2.我们复制几个ObjList下上一步创建好的空投箱零件,然后分散排布它们的位置,方便我们观看效果。如下图所示:
二、技能UI搭建过程
在界面初始化下创建一个2D容器界面,重命名为Test,在2D容器界面下创建一个按钮控件,在按钮控件下创建一个文本控件,调整大小和位置。如下图所示:
核心功能环境搭建
一、服务器脚本搭建过程
在工作区下创建一个服务器脚本。如下图所示:
编写服务器脚本如下:
local list=WorkSpace.ObjList --获取到要聚拢物体的集合
local ren=nil
local MoveTrigger=false --控制聚拢效果的开关
Players.PlayerAdded:Connect(function(Uid)
ren= Players:GetPlayerByUserId(Uid)
end)
MessageEvent.ServerEventCallBack("GatherTogether"):Connect(function()--接收按钮回调
MoveTrigger=true
end)
local index=0
GameRun.Update:Connect(function()
if ren~=nil and MoveTrigger then
local objs=list:GetAllChild() --获取objList文件夹下所有子类
index=0
for i=1,#objs,1 do
if Vector3.Distance(objs\[i\].Position,ren.Avatar.Position)>1 then
--将物体聚拢到人物身边
objs\[i\].Position= Vector3.MoveTowards(objs\[i\].Position,ren.Avatar.Position,0.1)
else
objs\[i\].Position=objs\[i\].Position
index=index+1
end
if index==#objs then --当物体全部到达人物身边时停止聚拢
MoveTrigger=false
end
end
end
end)
二、客户端搭建过程
我们在玩家初始化,玩家初始化脚本下创建一个客户端脚本。如下图所示:
编写客户端脚本如下:
GameUI.Test.按钮控件.OnClick:Connect(function() --注册按钮点击事件
MessageEvent.FireServer("GatherTogether")
end)
二、补充说明
1.__什么是工作区?
工作区中的对象是会被可视化显示到3D场景中的,并且只有在工作区中的对象才会发生物理交互。
2.__什么是服务器脚本?
只会在服务器运行的Lua脚本代码,用于编写服务器逻辑。
3.__什么是客户端脚本?
_只会在客户端执行的脚本,执行的逻辑和表现也只会在本地客户端展现;可在以下几个文件目录下自动执行,客户端脚本在“工作区”下不会自动执行,需要放在以下对象里面:
1. __客户端最先加载 。
2. 工作区中的角色模型。玩家初始化中的角色初始化脚本,在运行后会自动移动到角色模型下。
3. 玩家列表中的玩家。玩家初始化中的玩家初始化脚本,在运行后会自动移动到玩家下
4. 玩家的玩家界面。界面初始化的脚本,在运行后会自动移动到玩家界面下。
5. 玩家的背包,例如工具里面的。_
4.什么是2D容器界面?
2D容器界面是显示在玩家屏幕上的2DUI对象的主要存储对象。UI对象若要显示在编辑器中,必须作为容器控件的子级。
游戏运行后,存放在界面初始化_StarterUI下的界面会复制到玩家界面下,只有在玩家界面GameUI下的界面才能在游戏中显示。_
好了,接下来我们开始游戏,点击吸空投这个按钮,所有的空投箱就都被我们吸过来啦。如果有什么问题或者有更好的实现方式,大家可以在下方积极交流讨论,我们也会参与进来和大家一起分享经验,期望能和大家共同进步~~
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。