3

我正在使用 actionscript 3.0 实现一个简单的点球大战游戏。游戏的视角类似于旧的“足球世界”的视角。我想通过使用维度 z 来使用 3d 游戏逻辑,因为我认为它可以帮助我实现更好的碰撞检测 - 响应结果。但是,我想保持与旧的 2d 足球相同的图形样式和视图。因此,我假设正交投影适用于这种实现。尽管互联网上有很多关于正交投影的信息,但我对有人如何在他/她的代码中应用它感到有些困惑。

所以我的问题是:

  • 为了让某人在正交投影中将 3d (x, y, z) 点转换为 2d (x', y') 点,步骤是什么?
  • 我们可以避免使用矩阵吗?如果是,将坐标 x'、y' 与 x、y、z 相关联的方程是什么?
  • 在应用转换之前,我们是否必须定义相机位置和角度?就我而言,相机将处于固定的位置和角度。
4

1 回答 1

1

DisplayObjects 及其后代(即 MovieClip 和 Sprite)具有 az 属性,您可以使用它来做到这一点而不会让人头疼 - 它们也有 rotationX/Y/Z 和 scaleX/Y/Z 属性!

使用“z”将相应地调整对象的位置和比例(尽管它将矢量转换为位图),没有深度排序,因此即使它的 z 坐标表明它应该在对象后面,它也会保持在对象的顶部,但是对于您想到的项目,我看不出这是个问题-无论如何修复都很容易,在场景中有一组对象,根据z位置对其进行排序并重置每个/的深度索引按排序顺序重新添加到阶段。

您可以使用剪辑的 perspectiveProjection 成员来调整 FOV、原点等 -

透视教程

..但你不需要比这更复杂。当然,您不需要涉足具有固定相机视图的矩阵,即使您想手动计算它作为实验。

希望这可以帮助

于 2013-03-28T18:14:00.220 回答