我无法理解该错误以及如何修复它。 Lua版本5.1

问题描述 投票:0回答:1

我不明白,错误在第36行。如何修复它以及为什么会发生?我做错了什么?

行时错误:-1:d:\ gameobject.lua:36:尝试调用 方法“位置”(表值)

Vector3f = {}
Vector3f.__index = Vector3f

function Vector3f:new(x, y, z)
    local vector = {x = x or 0, y = y or 0, z = z or 0}
    setmetatable(vector, self)
    return vector
end

Transform = {}
Transform.__index = Transform

function Transform:new(position, rotation, scale)
    local transform = {
        position = position or Vector3f:new(0, 0, 0),
        rotation = rotation or Vector3f:new(0, 0, 0),
        scale = scale or Vector3f:new(0, 0, 0)
    }
    setmetatable(transform, self)
    return transform
end

function Transform:position(x, y, z)
    self.position.x = x or self.position.x
    self.position.y = y or self.position.y
    self.position.z = z or self.position.z
end

local pos = Vector3f:new(1, 2, 3)
local rot = Vector3f:new(4, 5, 6)
local sca = Vector3f:new(7, 8, 9)

local transform = Transform:new(pos, rot, sca)
print("X: " .. transform.position.x .. " Y: " .. transform.position.y .. " Z: " .. transform.position.z)
print("X: " .. transform.rotation.x .. " Y: " .. transform.rotation.y .. " Z: " .. transform.rotation.z)
print("X: " .. transform.scale.x .. " Y: " .. transform.scale.y .. " Z: " .. transform.scale.z)

transform:position(10, 20, 30)
print("X: " .. transform.position.x .. " Y: " .. transform.position.y .. " Z: " .. transform.position.z)
lua
1个回答
0
投票

您将属性和函数命名为

position
。你不能那样做。函数也是属性,一旦你给变换实例一个位置属性,你就覆盖了那里的函数。您应该简单地以不同的方式命名它们。例如改变

function Transform:position(x, y, z)

function Transform:setPosition(x, y, z)

并改变

transform:position(10, 20, 30)

transform:setPosition(10, 20, 30)
© www.soinside.com 2019 - 2024. All rights reserved.