首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何做到这一点,让你可以抓住其他球员点击他们,同时靠近他们?

如何做到这一点,让你可以抓住其他球员点击他们,同时靠近他们?
EN

Stack Overflow用户
提问于 2021-10-09 13:52:40
回答 1查看 1.7K关注 0票数 1

(禁止在DevForums上提问。)

基本上,当你成为一个“骗子”时,一款名为“传染性微笑”的游戏就有了一个抓取系统。你持有他们的时间越长,他们的皈依越多。当他们的生命值达到0时,他们就会变成一个smiler,就像玩家将他们转换成其他人一样。

我将如何制作一个系统/抓取系统,它就是这样做的,但只是让它们变得杂乱无章。(很明显,我想让球员在一段时间后被撤职!)

我有一个杂碎的系统,我也在工作,所以我没有被充分的勺子。

Ragdoll脚本:完成!

抓取和Ragdoll :显示抓取动画点击,但没有抓取。

抓取脚本,只播放动画(LocalScript)

代码语言:javascript
复制
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)的事件

代码语言:javascript
复制
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“,所以我不知道如何摆脱句柄。

EN

回答 1

Stack Overflow用户

发布于 2021-10-16 09:13:07

附件里面有把手。因此,如果您不想要句柄,只需删除part.Parent:IsA(“附件”)。另外,如果您想让光线投射忽略附件,或者直接穿过附件,那么首先创建一个获取所有附件的表,然后进行光线投射,然后将表添加到FilterDescendantsInstances中。确保FilterType是黑名单(默认的,所以不要真的担心它)。或者,如果你想做,如果头部看附件,然后选择躯干,然后第一个测试是否有躯干。如果有,那就让它成为local upperTorso = Target.Parent.Parent.UpperTorso

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69507339

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档