【问题标题】:Roblox: how to script VectorForceRoblox:如何编写 VectorForce 脚本
【发布时间】:2021-08-25 03:29:39
【问题描述】:

我对 Roblox 和 Lua 还很陌生(2 天),所以请不要太用力咬我.. =)

我要做的是为我也从代码中实例化的部分编写 VectorForce 脚本。 在模拟中,Attachment 和 VectorForce 确实创建了,但没有任何预期效果。

请看我的脚本,告诉我需要在哪里挖掘。

local sandblock = script.Parent
local sandblock_health = 5

local function blockJump(object)
    local jump_att = Instance.new("Attachment", object)
    local jump_force = Instance.new("VectorForce", object)
    jump_force.ApplyAtCenterOfMass = true
    jump_force.Attachment0 = jump_att
    jump_force.RelativeTo = Enum.ActuatorRelativeTo.World
    jump_force.Force = Vector3.new(10,1000,-10)
    jump_force.Enabled = true
    -- here: what is the difference between Enabled and Active?
    --jump_force.Active = true
end

local function onTouch(object)
    --print("К блоку прикоснулся "..object.Name)
    if object.Name == "Handle" then
        sandblock_health = sandblock_health - 1
        print(sandblock_health)
        
        if sandblock_health < 1 then
            local sandblock_drop1 = Instance.new("Part", workspace)
            sandblock_drop1.Size = Vector3.new(2,2,2)
            sandblock_drop1.Position = sandblock.Position + Vector3.new(0,5,-1)
            blockJump(sandblock_drop1)
            sandblock_drop1.Material = "Metal"
            sandblock_drop1.BrickColor = BrickColor.new("Gold")
            sandblock_drop1.Name = "Gold"
            
            print("Вы добыли "..sandblock_drop1.Name)
            sandblock:Destroy()
        end
    end
end

sandblock.Touched:Connect(onTouch)

【问题讨论】:

  • “预期效果”是什么?您的代码行为与您的期望有何不同?有错误信息吗?
  • 小猪,“预期效果”是以1000的力量被推上天空——只是为了测试。观察到的效果是没有任何力施加到零件上。并且没有错误。

标签: lua roblox


【解决方案1】:

似乎问题在于,当您创建 onTouch 函数时,您有一个参数:object。但是,当您在触摸部件的玩家上调用该函数时,您没有输入参数:sandblock.Touched:Connect(onTouch)。要解决此问题,请执行以下操作:sandblock.Touched:Connect(onTouch(&lt;object_parameter&gt;))

【讨论】:

  • 对象参数由Touched事件提供。您的解决方案将导致尝试调用 nil 错误,因为本地函数 onTouch 不返回任何内容,并且该 nil 结果将传递给 Touched 连接。
  • DemoNemo5,据我了解,该函数与事件的连接的整个想法是将任何接触零件的对象传递给函数,而不是某个对象。谢谢,Kylaaa
【解决方案2】:

解决了。 在我的力向量中,工作空间的重力和零件质量的乘积远高于 1000。

以下代码按预期工作:

jump_force.Force = Vector3.new(10, game.Workspace.Gravity * object.Mass * 1.35, -10)
jump_force.Enabled = true
wait(0.4)
jump_force.Enabled = false

【讨论】:

    猜你喜欢
    • 2011-06-24
    • 1970-01-01
    • 1970-01-01
    • 2020-12-10
    • 2018-06-17
    • 2021-10-11
    • 1970-01-01
    • 1970-01-01
    • 2020-07-02
    相关资源
    最近更新 更多