我是第一次使用 Lua,当然需要检查以了解如何实现某些代码。
要在Gideros创建一个顶点,有以下代码:
mesh:setVertex(index, x, y)
但是,我也想使用 z 坐标。我一直在检查,但没有找到任何帮助。有谁知道 Gideros 是否有这种方法,或者是否有设置 z 坐标的提示和技巧?
首先,这些函数不是 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源代码:
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)
应该可以正常工作。
你可以简单地尝试一下。它是免费的,没有伤害,这是最好的学习方式!