【发布时间】:2018-12-22 08:06:57
【问题描述】:
我正在为流行的 3D 游戏引擎开发地图生成器,只是想看看我是否可以。我创建了一组简单的瓷砖进行测试,例如角件和垂直/水平走廊。所有瓷砖尺寸相同(192 l x 192 w x 136 h),并由代表墙壁、地板和天花板的平面组成。我已经编写了生成图块顺序的逻辑,现在可以设置坐标了。
例如,我正在尝试将图块向上(Y 轴)移动 192 个单位。
在制作这些图块之前,我使用单个对象进行测试,并在对象的 Y 轴上简单地添加了 192 个单位。那工作得很好。但是,在使用其中一个图块测试向上移动后,我注意到需要计算的不仅仅是 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
我有一个想法如何实现这一点,例如比较上面的前后代码并计算每个平面的更改轴,但必须有更好的方法来解决这个问题。
【问题讨论】:
标签: c# 3d coordinates