功能介绍
键位绑定服务可以用来获得玩家的键盘输入。使用键位绑定服务可以制作一些需要玩家按键操作的功能,如按键释放技能,按键打开界面等。
功能之间对比
与鼠标、界面按钮、触摸等输入都是客户端的交互手段,都可以实现人机交互。
功能用法限制
键位绑定只能用于pc端的游戏,开发时需注意之后是否需要适配不同的设备。
键位绑定可以在一个按键上绑定多个方法,根据需求确定如何使用,避免冲突。
功能的具体用法
这里使用一个吹泡泡功能作为用法演示。
功能效果展示:
思路分析:
功能效果为玩家按一个按键,角色向前方吹出多个泡泡,泡泡逐渐飘动变大。按键使用 键位绑定服务 即可。角色向前方向,采用CFrame计算方位;吹出泡泡用 克隆 ;泡泡飘动变大,将 重力 取消给一个 速度 并逐渐增加 尺寸 即可。
功能搭建:
1、做一个泡泡。这里采用两个球形零件反向合并制作,材质选择玻璃,透明度略作调整。做好后,将泡泡缩小到合适大小,因为之后在功能中需要变大。
2、为了吐泡泡的效果,需要一个吐泡泡的动作,放在Workspace即可。在Workspace添加一个文件夹,命名为技能残留,用来存放克隆出的泡泡,便于计时清除:
除泡泡零件设置以下参数
3、这里只展示按键功能,并不做多人的适配,所以逻辑写在客户端。创建一个客户端脚本,编写代码如下:
math.randomseed(tostring(os.time()):reverse():sub(1, 7))
wait(2)
local ContextActionService = game:GetService(“ContextActionService”)
local TweenService = game:GetService(“TweenService”)
local tweenInfo = TweenInfo.new(
1, – Time
Enum.EasingStyle.Linear, – EasingStyle
Enum.EasingDirection.Out, – EasingDirection
1, – RepeatCount (小于零时 tween 会无限循环)
false, – Reverses (tween 完成目标后会反转)
0 – DelayTime
)
local player = game.Players.LocalPlayer
local bubble = game.Workspace:WaitForChild(“泡泡”) --获得工作区创建好的泡泡
local bubbles = game.Workspace:WaitForChild(“技能残留”) --找到存放克隆泡泡的文件夹
local animation = game.Workspace:WaitForChild(“喷吐”):Clone() --给角色下添加喷吐的动作
animation.Parent = player.Character
local speed = 10 --速度参数
local cd = 1 --定义技能释放间隔
local isrelase = true --定义技能释放时间
function ReleaseAction()–定义释放泡泡的功能
if isrelase == true then
isrelase = false
local co1 = coroutine.create(function()
wait(cd)
isrelase = true
end)
coroutine.resume(co1)
else
return
end
for i=1,5,1 do
local a = bubble:Clone()
a.Anchored = false
a.Parent = game.Workspace
a.Position = player.Character.HumanoidRootPart.Position + Vector3.new(0,1,0)
a.Orientation = player.Character.HumanoidRootPart.Orientation + Vector3.new(0,90,0)
local BodyVelocity = Instance.new(“BodyVelocity”)
BodyVelocity.Parent = a
BodyVelocity.MaxForce = Vector3.new(9000, 59000, 9000)
BodyVelocity.P = 1250
BodyVelocity.Velocity = a.CFrame:VectorToWorldSpace(Vector3.new(2,math.random(1,9) / 10,math.random(-9,9) / 10)) * speed
local tween = TweenService:Create(a, tweenInfo, {Size = a.Size * 5})
tween:Play()
tween.Completed:Connect(function(playbackState) --当前状态
a.Parent = bubbles
end)
end
if animation.AnimationId ~= “” then
local b = player.Character.Humanoid:LoadAnimation(animation)
b:Play(1, 1, 1)
end
end
ContextActionService:BindAction(“paopao”, ReleaseAction, true, Enum.KeyCode.Q)
4、开始测试