【问题标题】:CFrame Bullet Will Not FireCFrame 子弹不会发射
【发布时间】:2020-08-30 10:51:37
【问题描述】:

最近,我一直在工作室中试验 Roblox 版本的 Lua。我试图将移动的弹丸连接到 GUI 按钮。代码如下:

local cannonp1 = workspace.CannonP1
local loopingvar = 0

script.Parent.MouseButton1Click:Connect(fire)

function fire()
    repeat until loopingvar == 100
        workspace.ProjectileP1.CFrame = workspace.ProjectileP1.CFrame * CFrame.new(1, 0, 0)
        loopingvar = loopingvar + 1
        wait(0.1)
    end
end

我是 Roblox Studio 的新手,所以我只能说当我按下按钮时,我的弹丸不会发生任何事情。如果您想知道,弹丸已锚定。我知道好的问题应该详细说明,但是除了我极其糟糕的脚本之外,我找不到其他会影响弹丸运动的信息。我还查看了 Roblox 开发者论坛,但大多数关于 CFrame 的帖子都已过时,并且在新版本的 Roblox Studio 中不起作用。我已经检查了所有可能的网站,但无济于事。任何建议都会令人惊叹。

【问题讨论】:

    标签: lua scripting roblox


    【解决方案1】:

    您没有正确使用repeat until。第一行应该是repeat,最后一行应该是until loopingvar == 100。根本不应该有end。目前,由于额外的end,您的代码中存在语法错误,即使没有,您也会有一个无限循环,因为它基本上是repeat --[[do nothing]] until loopingvar == 100

    但是,通过使用数字 for 循环,您甚至可以做得比这更好。代替上面的改动,去掉local loopingvar = 0loopingvar = loopingvar + 1,把repeat until loopingvar == 100替换成for loopingvar = 0,100 do

    【讨论】:

    • 即使我修复了重复命令(我尝试了两种方式),当我完全左键单击按钮时,我的弹丸也没有任何反应。这是我的功能有问题吗?还是我的 CFrame 用法?
    • @Hello-Ya “完全左键单击”和常规单击有什么区别?它适用于哪种点击?
    • 用户必须完成完整的左键单击才能激活按钮,而不仅仅是在单击向下或向上单击时激活。
    • @Hello-Ya 如果你使用MouseButton1Down/MouseButton1Up而不是MouseButton1Click,效果会更好吗?
    猜你喜欢
    • 2019-03-21
    • 1970-01-01
    • 1970-01-01
    • 2015-04-09
    • 1970-01-01
    • 1970-01-01
    • 2014-01-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多