Workspace.Gromaniak85.LocalScript:7: 预期 ')' (关闭位于第25列的'('),得到 '.2xblock'

我试图做的是获取角色躯干到方块的距离。我不知道为什么,但当我引用这个文件夹时,它会出错。

这是错误代码: Workspace.Gromaniak85.LocalScript:7: 预期 ')' (关闭位于第25列的'('),得到 '.2xblock'

local DistanceRemote = game:GetService("ReplicatedStorage").DistanceFromBlock
local player = script.Parent.Parent
local BrickMultipliers = game.Workspace.BrickMultipliers

while true do
    wait(0.5)
    local distancefrom2x = (game.Workspace[player.Name].UpperTorso.Position - BrickMultipliers.2xblock.Position).magnitude --在这里发生错误
    print(distancefrom2x)
end

这是在工作室中的样子:

https://i.stack.imgur.com/pTMar.png

我真的不知道该怎么做,所以非常感谢所有的帮助!!

点赞
用户15250066
用户15250066

你无法在 Lua 中引用以符号(包括数字)开头的对象。你必须将其用方括号和引号括起来。这意味着你还需要去除点号(.):BrickMultipliers["2xblock"].Position。这将整数(2)与字符串(xblock)的其余部分结合起来,使得 Roblox 能够成功地引用你的部件。

2021-04-12 16:35:24
用户2858170
用户2858170

根据Lua的词汇约定,名字不能以数字开头!

Lua中的名称(也称为标识符)可以是任何拉丁字母、阿拉伯-印度数字和下划线组成的字符串,不能以数字开头,并且不能是保留字。标识符用于命名变量、表字段和标签。

以下关键字是保留的,不能用作名称:

 and       break     do        else      elseif    end
 false     for       function  goto      if        in
 local     nil       not       or        repeat    return
 then      true      until     while

因此, BrickMultipliers.2xblock.Position 是无效的语法。

根据Lua 5.4参考手册3.2-变量:

语法 var.Name 只是变量 var["Name"] 的语法糖:

var ::= prefixexp "." Name

所以这种方便的语法只适用于Lua标识符(名称)。

因为 2xblock 以数字开头,所以它不能被认为是一个名称。因此BrickMultipliers.2xblock会导致错误。

对于任何不是Lua名称的表键,都必须使用方括号表示法。

BrickMultipliers["2xblock"]

2021-04-13 06:49:18