功能效果展示
运行环境
Win7,Win8,Win10
Reworld版本 体验版
vc_redist.x64 运行环境
针对零基础读者的补充
下载安装 Reworld对应版本
Reworld官网链接:www.reworlder.com/
Reworld创作者之家论坛:bbs.reworlder.com
下载后安装后注册账号打开空地图
功能介绍
键位绑定服务可以用来获得玩家的键盘输入。使用键位绑定服务可以制作一些需要玩家按键操作的功能,如按键释放技能,按键打开界面等。
功能之间对比
与鼠标、界面按钮、触摸等输入都是客户端的交互手段,都可以实现人机交互。
功能用法限制
键位绑定只能用于pc端的游戏,开发时需注意之后是否需要适配不同的设备。
键位绑定可以在一个按键上绑定多个方法,根据需求确定如何使用,避免冲突。
功能的具体用法
这里使用一个吹泡泡功能作为用法演示。
思路分析
功能效果为玩家按一个按键,角色向前方吹出多个泡泡,泡泡逐渐飘动变大。按键使用键位绑定服务即可。角色向前方向,采用四元数计算方位;吹出泡泡用克隆;泡泡飘动变大,将重力取消给一个速度并逐渐增加尺寸即可。
功能搭建:
1、做一个泡泡。这里采用两个球形零件反向合并制作,材质选择玻璃,透明度略作调整。做好后,将泡泡缩小到合适大小,因为之后在功能中需要变大。
2、为了吐泡泡的效果,在素材库里找一个合适的动作,这里使用素材库中的喷吐动作,将动作命名为喷吐,放在工作区即可。
3、在工作区添加一个文件夹,命名为技能残留,用来存放克隆出的泡泡,便于计时清除:
4、这里只展示按键功能,并不做多人的适配,所以逻辑写在客户端。创建一个客户端脚本,编写代码如下:
math.randomseed(tostring(os.time()):reverse():sub(1, 7))
wait(2)
local player = Players:GetLocalPlayer()
local bubble = WorkSpace.泡泡--获得工作区创建好的泡泡
local speed = 2--速度参数
local bubbles = WorkSpace.技能残留--找到存放克隆泡泡的文件夹
local cd = 5--定义技能释放间隔
local isrelase = true --定义技能释放时间
local animation = WorkSpace.喷吐:Clone(player.Avatar)--给角色下添加喷吐的动作
animation.AnimationComplete:Connect(function()--角色吹泡泡时失控避免移动,所以结束后要恢复正常
player.Avatar:ExitLostControl()--恢复正常
end)
function ReleaseAction()--定义释放泡泡的功能
coroutine.start(function()
if isrelase == true then
isrelase = false
local avatar = player.Avatar
avatar:EnterLostControl(Enum.LostControlMode.Motion)--开始释放技能时让角色进入失控状态,避免一遍放技能一边移动的情况
avatar.喷吐:PlayAnimation() --播放喷吐动作
local function BubbleCreat()--定义泡泡的出现逻辑方法
coroutine.start(function()
local ball = bubble:Clone()--克隆泡泡
--下面计算方位,原理是用四元数在角色向前的随机一个偏上的范围内计算一个方向,实现泡泡分散移动
local forw = Quaternion.Euler(avatar.Rotation.x+ math.random(-30,0) ,avatar.Rotation.y+ math.random(-30,30) ,avatar.Rotation.z+ math.random(-30,30))*Vector3.forward
local unit = Vector3.Normalize(forw)--单位向量
local deviation = unit*speed --移动速度
coroutine.wait(0.1)
tpos1 = avatar.Position + unit*0.8 + Vector3(0,0.8,0)--泡泡出现的位置使角色前方偏高一点位置
ball.Position = tpos1
ball.Velocity = deviation
ball.Parent = WorkSpace.技能残留
end)
end
coroutine.wait(0.3)
local timer = RWTimer:Create(BubbleCreat, 0.2, 5)--使用计时器循环执行,实现出现多个泡泡
timer:Start()--开始吹泡泡
coroutine.wait(cd)
isrelase = true
end
end)
end
local function ChangeScal(pao)--定义泡泡变大的方法
for i = 0.15,1,0.5 do
pao.Scale = Vector3(i,i,i)
wait(0.2)
end
end
bubbles.ChildAdded:Connect(function(ch) --存放文件夹定义方法,在有泡泡被添加为文件夹的子级后一段时间消除
ChangeScal(ch)--执行变大方法
wait(3)
ch:Destroy()--销毁
end)
ContextActionService.BindInput("PaoPao",ReleaseAction,Enum.KeyCode.Q)--绑定按键Q进行触发释放
5、开始测试