4

所以,我真的很想开始一个模仿这种 2.5D 风格的 HTML5/JavaScript 项目:http: //superflashbros.net/2009/02/22/blue-rabbits-climate-chaos/

我个人试图远离第三方脚本,只保留代码的核心纯 JavaScript。但是,我对三角的了解并不是最好的,那么解决这个观点的最合适的方法是什么?我本质上想要一个用 2D 精灵制作的游戏,但是地平面(可能还有建筑物,如 Flash 游戏)被倾斜以赋予它 3D 感觉。我不想制作“模式 7”引擎(即像马里奥赛车这样的 SNES 游戏),因为据我了解,它是分段绘制的。

我应该研究任何建议或资源吗?

4

2 回答 2

5

我只要求您阅读更多有关此的内容,并且您知道,我尝试做这个并且取得了不错的结果,但是由于我的新工作,我停止了该项目。

无论如何,您可以查看一些用 javascript 编写的游戏引擎,供初学者参考,以下是您可能会感兴趣的知名游戏引擎列表:

1-三.Js

2- GameQuery(JQuery 插件)

3-等基因发动机

您还可以查看这篇博文了解更多信息66+ 面向严肃开发者的开源 JavaScript 游戏引擎

注意: 我知道您喜欢编写自己的 javascript 并相信我这是一个非常好的习惯,但是我的建议是至少尝试一个 Javascript 游戏引擎(如果您可以尝试多个,那会很好)看看如何不同的引擎工作以及它们如何在引擎盖下运行,我的朋友会启发您并帮助您了解这些引擎,甚至制作自己的引擎(这并非不可能)。

我并不是说您应该尽可能多地尝试(因为这显然毫无意义),但我告诉您使用选择的引擎制作小型(如果可能的话)游戏,我的意思是了解 Javascript 如何游戏引擎在 2D 中工作,然后使用 WebGL 技术转移到 2.5D 甚至 3D。

于 2012-07-08T05:45:34.610 回答
4

我检查了你的参考游戏,明白你所说的“2.5D”是什么意思。据我了解,解决此问题的最佳方法是通过转换对象的 x,y 坐标来创建伪三维。您将拥有一个为您进行转换的函数,这是我对示例的最佳猜测。

// This function takes in a x- and y-coordinates of an object corner and returns the
// coordinates of the corresponding back corner of an object.
var transform = function(x,y) {
  // The farther the character is from the object, the more skew there would be.
  // Here "char" is your globally recognized game character. If it was not in the scope
  // of the function you'd have to pass it as a parameter.
  var skew = (char.x > x) ? (char.x - x) : (x - char.x);
  var newx = (skew * 0.1); // obviously this would be variable depending on your liking

  // If the object corner is not on the ground (y == 0) then subtract from it's value,
  // otherwise add.
  var newy = (y > 0) ? (y - 10) : (y + 10);
};

在我的示例10中,是更改 y 坐标的距离单位数量。这就是您的示例游戏的表现方式。希望我的意见有帮助

里根

于 2012-07-15T04:17:04.427 回答