1

我是第一次使用 Lua,当然需要检查以了解如何实现某些代码。

要在Gideros创建一个顶点,有以下代码:

 mesh:setVertex(index, x, y)

但是,我也想使用 z 坐标。我一直在检查,但没有找到任何帮助。有谁知道 Gideros 是否有这种方法,或者是否有设置 z 坐标的提示和技巧?

4

1 回答 1

1

首先,这些函数不是 Lua 提供的,而是 Gideros Lua API 提供的。原生 Lua 中没有网格或类似的东西。

参考参考 Gideros Lua API 参考手册会给你一些有价值的提示:

http://docs.giderosmobile.com/reference/gideros/Mesh#Mesh

网格可以是 2D 或 3D,后者需要在其顶点中附加 Z 坐标。

http://docs.giderosmobile.com/reference/gideros/Mesh/new

Mesh.new([is3d])

参数:

is3d:(布尔值)指定此网格在其顶点数组中期望 Z 坐标,因此是 3D 网格

因此,为了创建 3d 网格,您必须执行以下操作:

local myMesh = Mesh.new(true)

虽然手册上没有说可以在 setVertex 中使用 az 坐标

http://docs.giderosmobile.com/reference/gideros/Mesh/setVertex

你很有可能做到这一点。

那么让我们看一下Gideros源代码:

https://github.com/gideros/gideros/blob/1d4894fb5d39ef6c2375e7e3819cfc836da7672b/luabinding/meshbinder.cpp#L96-L109

int MeshBinder::setVertex(lua_State *L)
{
    Binder binder(L);
    GMesh *mesh = static_cast<GMesh*>(binder.getInstance("Mesh", 1));

    int i = luaL_checkinteger(L, 2) - 1;
    float x = luaL_checknumber(L, 3);
    float y = luaL_checknumber(L, 4);
    float z = luaL_optnumber(L, 5, 0.0);

    mesh->setVertex(i, x, y, z);

    return 0;
}

在这里你可以看到你确实可以提供 az 坐标并且它会被使用。

所以

local myMesh = Mesh.new(true)
myMesh:SetVertex(1, 100, 20, 40)

应该可以正常工作。

你可以简单地尝试一下。它是免费的,没有伤害,这是最好的学习方式!

于 2018-04-10T08:29:06.113 回答