我正在为流行的3D游戏引擎开发地图生成器,以查看是否可以。我创建了一组简单的瓷砖进行测试,例如角件和垂直/水平走廊。所有瓷砖的尺寸均相同(192 l x 192 w x 136 h),并由代表墙壁,地板和天花板的平面组成。我已经对生成平铺顺序的逻辑进行了编码,现在可以设置坐标了。
例如,我正在尝试将瓷砖(Y轴)准确地向上移动192个单位。
在制作这些图块之前,我正在测试单个对象,并简单地将192个单位添加到对象的Y轴。很好。但是,在测试了其中一个磁贴的向上移动之后,我注意到它比需要计算的Y轴还重要。
这是将位置向上移动192个单位之前的平铺地图文件的外观:
solid
{
"id" "2"
side
{
"id" "1"
"plane" "(0 192 8) (192 192 8) (192 0 8)"
"material" "CONCRETE/BAGGAGE_CONCRETEFLOORA"
"uaxis" "[1 0 0 0] 0.25"
"vaxis" "[0 -1 0 0] 0.25"
"rotation" "0"
"lightmapscale" "16"
"smoothing_groups" "0"
}
移动后的样子如下:
solid
{
"id" "2"
side
{
"id" "1"
"plane" "(0 192 8) (0 384 8) (192 384 8)"
"material" "CONCRETE/BAGGAGE_CONCRETEFLOORA"
"uaxis" "[1 0 0 0] 0.25"
"vaxis" "[0 -1 0 256] 0.25"
"rotation" "0"
"lightmapscale" "16"
"smoothing_groups" "0"
}
我可能会头疼,但是有C#类或函数可以帮助我定位这些对象的X Y Z坐标吗?
如果有帮助,我指的是此站点,是有关飞机代码结构的文档:
https://developer.valvesoftware.com/wiki/Valve_Map_Format#Planes
我有一个方法,例如比较上面的代码之前和之后以及计算每个平面的更改轴,但是必须有一种更好的方法来实现这一目标。
答案 0 :(得分:1)
C#中没有标准的类/方法可以为您完成这项工作。
重要的是要理解,将定义同一平面的点的可能组合数目是无限的。根据您引用的文档,这些只是平面上的三个点(不在一条线上)。
这意味着向所有Y坐标添加固定量将使平面在Y方向上移动。