(禁止在DevForums上提问。)
基本上,当你成为一个“骗子”时,一款名为“传染性微笑”的游戏就有了一个抓取系统。你持有他们的时间越长,他们的皈依越多。当他们的生命值达到0时,他们就会变成一个smiler,就像玩家将他们转换成其他人一样。
我将如何制作一个系统/抓取系统,它就是这样做的,但只是让它们变得杂乱无章。(很明显,我想让球员在一段时间后被撤职!)
我有一个杂碎的系统,我也在工作,所以我没有被充分的勺子。
Ragdoll脚本:完成!
抓取和Ragdoll :显示抓取动画点击,但没有抓取。
抓取脚本,只播放动画(LocalScript)
local userInputService = game:GetService("UserInputService")
local Players = game:GetService("Players")
local player = Players.LocalPlayer
local character = player.Character
if not character or not character.Parent then
character = player.CharacterAdded:Wait()
end
local humanoid = character:WaitForChild("Humanoid")
local Animator = humanoid:WaitForChild("Animator")
local cooldown = false
local cooldowntime = 1
local grab = Instance.new("Animation")
grab.Name = "GrabAnim"
grab.AnimationId = "rbxassetid://7691396275"
game:GetService("ContentProvider"):PreloadAsync({grab})
local grabTrack = Animator:LoadAnimation(grab)
grabTrack.Priority = Enum.AnimationPriority.Core
grabTrack.Looped = false
grabTrack.Name = "GrabAnimTrack"
if(cooldown) then
wait(cooldowntime)
cooldown = false
return
end
game:GetService("UserInputService").InputBegan:Connect(function(inputObject, gameProcessed)
if inputObject.UserInputType == Enum.UserInputType.MouseButton1 then
if(cooldown) then
return
end
-- It'll return "Handle" half the time.
local Head = player.Character.Head
local D = Head.CFrame.LookVector * 10
local RayCast = workspace:Raycast(Head.Position,D)
if RayCast then
script.Parent.Lock:FireServer(RayCast.Instance)
end
cooldown = true
grabTrack:Play(0.09, 1, 1.2)
end
if(cooldown) then
wait(cooldowntime)
cooldown = false
return
end
end)用于称为script (Script)的事件
local event = script.Parent:WaitForChild('Lock')
local arrested = false
local weld
event.OnServerEvent:Connect(function(plr, Target)
print(Target)
if Target.Name == "UpperTorso" or Target.Name == "LowerTorso" or Target.Parent:IsA("Accessory") then
arrested = true
coroutine.wrap(function()
while arrested == true do
Target.Anchored = true
Target.CFrame = plr.Character.HumanoidRootPart.CFrame * CFrame.new(0,0,-3)
wait()
end
end)()
elseif arrested then
arrested = false
end
end)抓取似乎返回了“句柄”而不是"UpperTorso“,所以我不知道如何摆脱句柄。
发布于 2021-10-16 09:13:07
附件里面有把手。因此,如果您不想要句柄,只需删除part.Parent:IsA(“附件”)。另外,如果您想让光线投射忽略附件,或者直接穿过附件,那么首先创建一个获取所有附件的表,然后进行光线投射,然后将表添加到FilterDescendantsInstances中。确保FilterType是黑名单(默认的,所以不要真的担心它)。或者,如果你想做,如果头部看附件,然后选择躯干,然后第一个测试是否有躯干。如果有,那就让它成为local upperTorso = Target.Parent.Parent.UpperTorso。
https://stackoverflow.com/questions/69507339
复制相似问题