问题标签 [side-scroller]

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 回答
703 浏览

libgdx - 横向滚动 Box2D 游戏

在创建 Box2D 横向卷轴游戏时,滚动每个对象并移动它(例如通过 x 轴)是否性能友好,就像它在以下代码快照中所做的那样:

我也想知道渲染,如果我渲染每个身体上的每个纹理,我会一次渲染整个关卡,这会花费我宝贵的 FPS。

0 投票
1 回答
323 浏览

android - 绘制和滚动路径性能问题

嗨,我正在做无尽的横向卷轴游戏,其中地形看起来像一个无限的隧道。我设法使用以下代码随机生成隧道:

并使用以下方法滚动它:

问题是:路径越长,游戏就越“断断续续”。我认为我应该在一段时间后减少路径中绘制的点,但老实说我不知道​​该怎么做,仍然让地形滚动和生成。如果你能帮助我,我将不胜感激。谢谢。

0 投票
2 回答
2929 浏览

python - Python游戏的硬币收集功能

我目前正在为我的 pyhton 3.2.3 和 pygame 中的横向卷轴游戏创建一个功能,该功能允许主角收集硬币。我想做的是当我的角色的位置等于钱的位置时,钱就消失了。这是我的代码:

我试图通过重新调整关卡图片来让钱消失,但由于某种原因,这不会发生。我不知道为什么,但由于某种原因它不起作用。一切似乎都是正确的,但我假设 guyPos 永远不会等于 moneyPos。任何帮助表示赞赏。

0 投票
2 回答
422 浏览

java - 在侧滚轮上使用什么磁贴存储结构?

我正在 slick2d 中开发一个 2d 侧滚轮,我希望它是基于图块的,但我真的不知道如何存储图块。我的游戏有无限动态生成的地形并且是可交互的(有点像我的世界和泰拉瑞亚的混合体)。我目前正在使用

对象,但它似乎不正确,因为我需要动态世界加载和生成。我正在将 JBox2d 用于物理。

有没有更好的方法以更有效的方式存储数据,因为只有世界的一部分应该被加载,因为世界的大小可以变得无限大

0 投票
1 回答
768 浏览

javafx-2 - Best practice for moving characters in a game using JavaFX?

I'm making a simple sidescrolling game in JavaFX, and have done a bit of research. However, before I get really started, I wanted to make sure I was using the conventional way of creating a game. I had the following idea:

Player Characters/Enemies will extend StackPane
The levels themselves in which the players, background and enemies exist will extend Scene.
Key presses will be handled in the Level Scenes themselves, which will call the move command which exists in the player character class.
The player character will be using a custom gif image, and will use TranslateTransition for the animation of moving when keys are pressed.

Are there some obvious flaws in this approach? One thing is, I won't be using CSS, and will be raw coding the game for practice.

0 投票
1 回答
168 浏览

java - 创建垂直横向滚动条,遇到数组列表和逻辑问题(Java)

我在编程的第二年,只知道Java。但是对于我的班级,我们必须创建一个垂直的横向滚动条。我的设置是我有一个用于敌舰的 ArrayList 和一个用于玩家火箭的 ArrayList。我使用 render(Graphics2D g) 方法在玩家飞船上的精确位置绘制了 2 枚火箭,并使用相同的方法绘制了敌方飞船。火箭 ArrayList 由

其中 r 和 r2 是带有参数 (x,y,w,h) 的火箭,arsenal 是火箭数组列表。我将它们设置在非常特定的位置,在宇宙飞船的不同末端。在 update() 方法中,我有这个方法:

这是为了确保当 arraylist 变空时,火箭被重新添加并重新绘制到与飞船末端相对应的坐标。火箭消失的唯一方法是它们离开屏幕或与敌人相撞。我已将此代码放入以检查:

整个方法遍历敌舰数组列表“军队”并检查 (1) 敌舰是否超过设定高度,(2) 玩家舰船是否与敌舰相撞,以及 (3) 火箭是否军械库中的阵营已经与敌军相撞。所有碰撞都是使用矩形完成的。p.changeH(10); 命令是降低玩家生命值10,得分+=20;就是提高分数。对于所有这些检查,我确保敌舰将自己从阵列列表中移除,因此变得未绘制,然后如果火箭离开屏幕或发生碰撞,它们也会将自己从阵列列表中移除并假设自己取消绘制。我想要做的最后一件事值得一提的是,敌对势力变得由以下人员组成:

它接受参数 (x,y,w,h,Image) 并首先在屏幕外绘制,使其看起来像一个横向滚动条。x 变量是随机的,因此船只不会全部出现在同一个地方。frameCount 每次更新都会增加 1,并且 update() 方法每秒被调用 60 次。

在对我的项目进行了这么大的介绍之后,我的问题是每当我运行游戏时,游戏会在几秒钟后停止,并且 eclipse 在代码中给了我一个错误:

我无法弄清楚问题所在。任何帮助是极大的赞赏。如果需要更多游戏代码,请告诉我!谢谢!

编辑:

带我去排队:

这是循环的一部分:

在构造函数中是我放置命令的地方

这会将它们添加到数组列表中。在 render(Graphics2D g) 方法中,我使用以下方法绘制它们:

在火箭构造函数中,p.currentX() 是玩家当前的 x 坐标,而 p.getHalfY() 和 p.getHalfX() 是不言自明的。它们被编码使得火箭 r 出现在一侧,火箭 r2 出现在另一侧。我还创建了两个布尔变量 rMove 和 r2move。这些有助于火箭的平稳移动,并告诉它何时移动:

setP(x,y) 将火箭的位置设置为原始位置。我已经和我的老师谈过了,他说我有点同时使用数组列表和单独的对象,但是我不明白这个问题。如果您需要更多相关代码,请告诉我。这行代码还告诉火箭何时移动,即触发空格键的时间:

0 投票
2 回答
575 浏览

java - 在 update() 方法中重置布尔值和 int 值的问题

在我的游戏中,我使用了一个名为的布尔变量

并且每次游戏开始时都设置为 true。我还有一个叫做 int 的变量

游戏开始时设置为180。这些用于在一定时间内在屏幕上描绘文本“为 Wave X 做准备”。由于 onScreenTime 为 180,而 fps 为 60,因此文本仅显示 2 秒。2 秒后,onScreen 设置为 false,游戏继续。编码:

仅当 onScreen = true 时才在屏幕上绘制文本。以下代码在 update() 方法中,并操作了到目前为止提到的两个变量:

基本上,每次调用 update()(每秒 60 次)时,onScreenTime 都会减少 1,如果它等于 0,则 onScreen = false。然后在同一个 update() 方法中,我有两个 if 语句应该是不言自明的:

最后,在同一个 update() 方法中,我有

currentLevel 决定敌人,他们绘制的图像,一次在屏幕上绘制多少,以及它们产生的频率。wave() 是一种为每个级别创建波浪的方法。它表示为:

i 是图像,enemyH 和enemyW = 30,10 是生命。这将在以后更改。我的问题是,一旦出现“准备波:2”文本,它就不会消失。第一个“准备波:1”可以正常工作并消失,但第二个不会,因此不会产生任何敌人。

编辑:正如评论中指出的那样,我写了 2 秒,应该是 3 秒。编辑:我将以前的方法更改为:

并将以前的方法更改为:

每击中一次,分数就会上升 20 分。我认为问题在于我将其设置为 if(score > 500) 而不是 == 500。

0 投票
1 回答
28 浏览

java - 为同一对象绘制不同的图像

我的游戏中的图像有问题。我正在使用我的老师编写的 ImageLoader 类。我像这样创建两个图像变量:

为了创建健康加速,我使用了一个数组列表,并使用以下代码填充它:

enemyWH 是用于宽度和高度的变量之一。它等于 35。我使用此代码填充敌人的火箭阵列列表

20 和 20 是宽度和高度,x 和 y 是敌人在那个确切位置和时间的位置,enemyRocket 是 Image 变量,5 是 ySpeed(它在屏幕上移动的速度),d 是它对玩家造成的损害。我的问题是,随着游戏的进行,随机地,在敌人全部发射火箭后大约一秒钟左右,与火箭相关的图片变量突然切换到健康加电图片,所以看起来健康加电即将到来,但它确实是敌方火箭。图片正在从火箭切换到健康通电

0 投票
1 回答
59 浏览

cocos2d-iphone - cocos2d 飞船瞄准敌人,然后按顺序射击

我在 Xcode 中使用 cocos2d 版本 3。

我想按照触摸顺序将精灵移动到多个触摸位置。每次都会是不同的数字。

使用 TouchBegan,我在触摸位置添加了看起来像目标的精灵,并将它们保存为数组中的对象。我已经初始化了数组,它工作正常。

我需要将精灵移动到第一个对象位置,然后是第二个、第三个等。我快到了,但找不到“循环遍历”数组以获取位置的方法。我只能通过将 CCNode 设置为 objectAtIndex:0 并使用 nodePosition 来获得第一个位置。

这要求很多,但我已经用谷歌搜索了好几天,我找不到任何东西!这几天一直在做!

0 投票
0 回答
181 浏览

java - 在游戏中滚动永无止境的背景无法按预期工作

我正在开发我的第一个横向卷轴游戏,并试图实现永无止境的背景效果,它几乎可以像我预期的那样工作,但有一些小故障。

我有 2 个背景实例(每个都填充屏幕宽度),一个位于屏幕的左下角,一个位于屏幕右侧。然后我将我的相机每帧都向右移动,当第一个背景实例完全离开屏幕到左侧时,我将其 X 重置到相机的右侧,以便它现在(相对于相机)离开屏幕的右侧. 这在很多时候都有效,但似乎重置其 x 位置的方法有时会延迟几帧并导致背景出现间隙。

我在主游戏中使用的更新代码是 -

BgFill 类中的更新方法 -

首先,这是进行连续滚动背景的常用方式(甚至接近)吗?

如果是,我做错了什么?