0

我读过这篇关于创建像 Outrun 或 Lotus 这样的老式赛车游戏的文章。

链接到文章

那里的代码基于 HTML 画布元素和 JavaScript。为了实现 3D 效果,作者对赛道进行分段,并为每个分段绘制简单的 2D 多边形,然后投影到“3D 空间”中。绘制这些多边形的代码是这样的:

polygon: function(ctx, x1, y1, x2, y2, x3, y3, x4, y4, color) {
    ctx.fillStyle = color;
    ctx.beginPath();
    ctx.moveTo(x1, y1);
    ctx.lineTo(x2, y2);
    ctx.lineTo(x3, y3);
    ctx.lineTo(x4, y4);
    ctx.closePath();
    ctx.fill();
  }

这些多边形在每一帧中绘制。我想知道相同的概念如何转化为 SpriteKit。因为在 SpriteKit 中绘制自定义多边形的东西几乎唯一的选择是 SKShapeNode 我想使用这些。但是,我觉得该解决方案可能存在一些严重的问题:

  • 我听说 SKShapeNodes 的整体性能非常差,内存泄漏问题等等
  • 根据上述概念,必须在每一帧中创建数百或数千个 SKShapeNode 来在屏幕上布局和渲染轨道,这可能会完全破坏帧速率

我开始怀疑是否真的有可能在 SpriteKit 中创建类似的游戏。你对如何去做有什么建议吗?还是我需要转移到 SceneKit 并使用真实的多边形来达到预期的效果?非常感谢任何帮助或建议。提前致谢。

4

1 回答 1

0

如果你质疑什么是 3d 游戏更容易制作,那么你会得到简单的答案:当然是 3d 引擎比在 2d 引擎中伪造 3d 更容易使用。

而且,如果您的代码遇到问题,并且您试图使用 SpriteKit 伪造 3d,那么您将获得的帮助比使用 SceneKit 少。

我希望这有帮助

于 2015-08-14T22:06:33.193 回答