【问题标题】:C# How to calculate X Y Z coordinates to move a group of objects?C#如何计算X Y Z坐标来移动一组对象?
【发布时间】:2018-12-22 08:06:57
【问题描述】:

我正在为流行的 3D 游戏引擎开发地图生成器,只是想看看我是否可以。我创建了一组简单的瓷砖进行测试,例如角件和垂直/水平走廊。所有瓷砖尺寸相同(192 l x 192 w x 136 h),并由代表墙壁、地板和天花板的平面组成。我已经编写了生成图块顺序的逻辑,现在可以设置坐标了。

例如,我正在尝试将图块向上(Y 轴)移动 192 个单位。

在制作这些图块之前,我使用单个对象进行测试,并在对象的 Y 轴上简单地添加了 192 个单位。那工作得很好。但是,在使用其中一个图块测试向上移动后,我注意到需要计算的不仅仅是 Y 轴。

这是在位置向上移动 192 个单位之前瓦片地图文件的样子:

https://pastebin.com/6iqQwN50

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"
    }

这是搬家后的样子:

https://pastebin.com/7cCnTndZ

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


    【解决方案1】:

    C# 中没有标准的类/方法可以为您做到这一点。

    了解定义同一平面的点的可能组合有无数种,这一点也很重要。根据您提到的文档,这些只是平面上的三个点(不在一条线上)。

    这意味着向所有 Y 坐标添加一个固定的量将使平面在 Y 方向上移动。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-02-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-06
      相关资源
      最近更新 更多