问题标签 [2d-games]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
3122 浏览

java - 编程重力

我正在编写游戏(JAVA),我想添加一些重力。我试图找到一个公式或类似的东西,但有很多不同的方法可以做到这一点。我正在寻找一个可以模拟真实重力并在物体接触地板时产生一些反弹的公式。对不起,我的英语不好。

0 投票
1 回答
114 浏览

javascript - 碰撞检测难度,玩家飞行

我今天创建了一个 2d 平台游戏。玩家可以左右移动和跳跃。不允许爬上墙的一侧。当您在墙壁旁边按例如向右和向上时,它会爬上墙壁。你能看看,说我错过了什么。

0 投票
2 回答
657 浏览

opengl - 2d 游戏中的自定义 zbuffer / 从片段着色器 (glsl) 中的帧缓冲区读取像素

我正在用 OpenGL 编写一个 2D(实际上是 2.5D)等距游戏。为了避免对在某些情况下可能非常复杂的图块进行排序,我正在尝试模拟某种深度缓冲区。对于每个图块,我有两张图像,一张带有颜色信息,一张带有深度信息。

图片1:http : //dl.dropbox.com/u/91457585/depth_buffer_test.png

作为第一种方法,我创建了这些图片。这个想法是将它们相互叠加并使用着色器进行深度测试。在这种情况下,我知道这没有多大意义,但这只是查看它在技术上是否可行的第一种方法。

所以现在我的问题!

下面你会看到着色器的代码。应该将帧缓冲区的深度信息与对象的深度信息进行比较。但是它似乎不起作用,现在我在某处读到这不可能像我那样。

清单:

那么有没有更好的方法来模拟深度缓冲区呢?也许通过写入真正的深度缓冲区?

0 投票
1 回答
77 浏览

c++ - 两个 ClutterActor 发生碰撞时如何检测信号?

我想使用 g_signal_connect 检测两个 ClutterActor 的碰撞点。

我需要一些事件来检测它,类似于“输入事件”

0 投票
1 回答
151 浏览

java - 利用 Java Swing 组件显示自动滚动视图框架的微妙问题

我正在尝试使用 Java Swing 组件编写基于 GUI 的游戏应用程序。基本框架如下: AJFrame包含 aJScrollPane和 a JPanelJScrollPane进一步包含一个JPanel包含一个两层,JLayeredPane它本身包含两个JPanels。(出于好奇,这两个JPanels对应于最上面的非透明面板的单位窗格和最下面的不透明面板的地形窗格。)

自动窗口滚动是该程序的一项功能。为了澄清,编写的代码自动指定一个适当的单元作为窗口目标,然后继续滚动可见窗口,以便在给定窗口显示的情况下尽可能靠近屏幕中心位置显示该单元约束。这个程序是我进退两难的根源。在任何给定的方法执行中,除了在重新调整窗口大小之前对方法的调用之外,该方法完全按照它应该的方式工作。该方法仅在应用程序的初始启动中无法正常运行。

我认为我的代码太长了,无法在本文的上下文中完整发布,因此我将首先仅提供处理窗口滚动的代码,然后将其他代码发布到公共 DropBox 帐户所需的代码。

我已经完成了对该方法的相当稳健的测试,我的结果如下,当应用程序最初启动时,保存在upLeftX和中的值upLeftY都设置为 -24。这在整个程序执行过程中是一致的。(每个都设置为负值是相当奇怪的,但它似乎足够易于管理。)但是,其中的值在scrollDest程序的初始启动和后续运行之间会有所不同。本质上,发生的事情是代码获得了 scrollDest.x 和 scrollDest.y 的值,它们是小于 -24 的负整数。

在包含打印语句的简短示例运行之后,打印了以下结果。

scrollDest.x 和 y:-800 -336

scrollDest.x 和 y:0 0

scrollDest.x 和 y:1051 2145

scrollDest.x 和 y:1051 2145

scrollDest.x 和 y:610 -312

scrollDest.x 和 y:610 0

该行位于上述方法System.out.println("scrollDest.x and y: " + scrollDest.x + " " + scrollDest.y); 的两个语句之前和之后。if这些值反映了程序对单元的第一次方法调用,为方便起见称为 ONE,其次是程序对板上其他单元的第二次调用,TWO,最后是方法的第三次调用一次再一次。

这种不一致是我问题的根源或反映,我还没有设计出一种可靠的方法来解决这个问题。

我很乐意回答有关澄清或详细说明的任何问题。提前感谢大家的帮助!

0 投票
1 回答
190 浏览

c++ - 迭代器错误中的向量迭代器

为我的作品集制作小行星游戏。使用以下代码块解决错误。错误只是迭代器不可延迟,但我已经缩小了错误范围。在我向您展示代码后,我将讨论这个问题:

如果这一切看起来有点混乱,这里有一个简短的解释:

当迭代器通过每个小行星时,我检查玩家是否与每个小行星发生碰撞。目前这没有任何作用

然后我遍历我的子弹向量,检查每个子弹与当前的小行星。如果发生碰撞,我销毁并擦除子弹和小行星,并打印出被摧毁的小行星在向量中的位置。

完成后,我为下一个小行星重置了子弹迭代器。

我目前的主要问题是 (*iterator) <-- 小行星对更新的调用。

只有当我擦除小行星矢量中的最后一个物体时,才会出现这个问题。我知道擦除将迭代器返回到下一个对象 - 如果下一个对象不存在,则会引发错误(因为迭代器然后指向 nullptr,对吗?)。我正在检查 nullptr 无济于事..

有没有人可以提供任何建议或帮助?将不胜感激,我已经挠了好几个小时了!

0 投票
1 回答
666 浏览

html - Can I deploy an HTML5 game with Xamarin products?

I have an HTML5 game in the works and was wondering if it would make sense to try and use Xamarin products for deploying my app to iOS, Android and Windows Phone.

  • Do Xamarin products support this?
  • Would I gain anything from using Xamarin products as a wrapper? Ease of deployment, native API access, etc.
  • How would performance be for a simple side scrolling 2D platformer?
0 投票
3 回答
306 浏览

javascript - javascript游戏中的异步/可变帧率

这可能是一个愚蠢的/以前回答过的问题,但它一直困扰着我和我的朋友一段时间,我一直无法找到一个好的答案。

现在,我让我所有的 JS Canvas 游戏都在滴答声中运行。例如:

这适用于高端系统上的 CPU 低级游戏,但是当我尝试在每个刻度上多画一点时,它开始以慢动作运行。所以我的问题是,如何在允许可变帧速率的同时保持 x、y 位置和命中检测计算全速进行?

旁注:我曾尝试使用 requestAnimationFrame API,但老实说,它有点令人困惑(不是所有关于它的好教程),虽然它可能会加快您的处理速度,但它并不能完全解决问题。

谢谢大家 - 任何帮助表示赞赏。

0 投票
0 回答
357 浏览

game-physics - 目标预测交集背后的数学是如何工作的?

所以目前,我正在开发一款塔防游戏,并尝试了两种技术——HOming 和导弹/目标交叉预测 p——发射导弹以击中目标。

从美学上讲,我更喜欢后一种方法,因为它看起来是无缝的。问题是我基本上只是从这个线程 2d 游戏的第二篇文章中复制了数学:通过预测射弹和单位的交叉点向移动目标开火,老实说,我不知道这家伙是如何制定这个方程的。

我有一些数学背景,理解什么是二次公式,但我不明白他是怎么想出来的。我搜索了一些示例二次公式问题,但问题似乎太简单或无关紧要。

谁能引导我到一本书或网站来帮助我更好地理解这个数学?

谢谢

0 投票
1 回答
549 浏览

javascript - 敌人精灵向玩家走来一条奇怪的路径

我试图让我的画布游戏中的精灵不断向玩家移动,直到它发生碰撞。执行此操作的相关函数是update()函数:

this.x, this.y,this.rotationthis.speed分别是敌人的 X 位置、Y 位置、旋转和速度。

它有点工作,但是敌人距离玩家大约 300 像素,然后开始转向左侧并远离玩家,与它朝向玩家的方向成 90 度角。

由于这有点难以解释,我录制了一个快速视频来帮助说明问题:http ://www.screenr.com/AGz7

敌人是橙色精灵,玩家是白色精灵。

我正在做的让敌人向玩家移动的计算有什么问题?