Articles of Java

为什么我的碰撞实现会导致我的玩家在发生碰撞时“反弹”?

我有一个玩家多边形,我用这个方法检查它是否与我的平铺地图相碰撞: public static boolean playerCollisionWith() { for(int i = 0; i < Blockmap.entities.size(); i++) { Block entity1 = (Block) Blockmap.entities.get(i); if(playerPoly.intersects(entity1.poly)) { return true; } } return false; } 这将正常工作,但我正在使用不同的方法进行移动。 而不是只为玩家的X轴添加速度variables。 我像这样移动: if(Keyboard.isKeyDown(Keyboard.KEY_RIGHT)) { speedX = Math.min(5, speedX + 1); moving = true; playerPoly.setX(x); if(playerCollisionWith()) { speedX = -5; playerPoly.setX(x); } } 那Math.min电话是什么搞砸了我。 我不能直接调用speedX = […]

Android游戏理念循环

所以我是一个开发Android游戏的初学者。 我已经开发了一个游戏,它是为孩子们打算的。 基本上,这个游戏有4个阶段。 每个阶段都有15个问题。 如果用户select了正确的答案,他将进行下一个问题,否则,将进行3次试验来select正确的答案/对象。 以下是我的游戏结构: Home Menu >>> Stage 1 | Stage 2 | Stage 3 | Stage 4 Stage 1_1.class Stage 1_2.class …. Stage 2_1.class Stage 2_2.class …. Stage 3_1.class Stage 3_2.class …. Stage 4_1.class Stage 4_1.class 我知道这是非常高兴的,这就是为什么我要求你的帮助,把这个翻译成一个更加一致和高效率的游戏,或者只是给我一个想法。 我只想把每个阶段的主要循环放在一个活动中。 帮助是真正的赞赏。 谢谢。

为LibGDX使用Physics Body Editor时出错

在我的游戏中,我一直在尝试使用libgdx的物理主体编辑器,但是我一直在得到一个错误。 所以我认为我的代码可能有些问题,所以我把这个例子从网站( http://www.aurelienribon.com/blog/projects/physics-body-editor/ )上取下来,然后试着运行它。 但是我在同一行代码中得到了相同的确切错误。 从网站的例子中创建错误的代码行是 BodyEditorLoader loader = new BodyEditorLoader(Gdx.files.internal("data/test.json")); 和错误是 线程“LWJGL应用程序”exceptioncom.badlogic.gdx.utils.GdxRuntimeException:java.lang.NoSuchMethodError:com.badlogic.gdx.utils.JsonReader.parse(Ljava / lang / String;)Ljava / lang / Object; 在com.badlogic.gdx.backends.lwjgl.LwjglApplication $ 1.run(LwjglApplication.java:118)引起:java.lang.NoSuchMethodError:com.badlogic.gdx.utils.JsonReader.parse(Ljava / lang / String;) Ljava /郎/对象; aurelienribon.bodyeditor.BodyEditorLoader.readJson(BodyEditorLoader.java:179)at aurelienribon.bodyeditor.BodyEditorLoader。(BodyEditorLoader.java:41)at com.Jon.App.App.createBottle(App.java:129)at com.Jon .App.App.create(App.java:76)at com.badlogic.gdx.backends.lwjgl.LwjglApplication.mainLoop(LwjglApplication.java:132)at com.badlogic.gdx.backends.lwjgl.LwjglApplication $ 1.run( LwjglApplication.java:112) 有想法该怎么解决这个吗?

如何使用warble来打包libgdx和ruby?

我的ruby代码如下 include Java Dir[File.expand_path "#{File.dirname(__FILE__)}/../libs/\*.jar"].each { |x| require x; puts "go"} module LibGDX include_package "com.badlogic.gdx" include_package "com.badlogic.gdx.backends.lwjgl" include_package "com.badlogic.gdx.graphics" end class Game include LibGDX::ApplicationListener @LOG = Game.java.simple_name def create LibGDX::Gdx.app.log(@LOG, "Is a thing") end def resize width, height LibGDX::Gdx.app.log(@LOG, "Resizing game to #{width} by #{height}") end def render LibGDX::Gdx.gl.glClearColor(0, 0, 0, 0) LibGDX::Gdx.gl.glClear(LibGDX::GL20.GL_COLOR_BUFFER_BIT) end def […]

处理敌人精灵的创造

我正在试图建立一个基于RPG瓷砖地图的游戏。 目前我要设定敌人的精灵将以固定的path重复他们的动作。 假设我有一个级别图,它的宽度比用户可见的实际小程序大3倍。 现在我的问题是,我应该如何处理敌方精灵的创造? 我有两个select: 1)在水平加载的时候创建所有的敌人(我不想按照这个方法,因为它会占用额外的内存)。 2)创建敌人,直到水平地图对用户可见。 随着用户进一步加载新的敌人。 我想跟随这个,但是我没有任何想法。 有人可以提示我遵循这个步骤,并告诉我通常由游戏开发者跟踪的方法吗?

更新游戏中的跳转

我正在做一个Java游戏,我希望我的游戏在任何FPS上运行相同,所以我在每次更新之间使用时间差异。 这是播放器的更新方法: public void update(long timeDelta) { //speed is the movement speed of a player on X axis //timeDelta is expressed in nano seconds so I'm dividing it with 1000000000 to express it in seconds if (Input.keyDown(37)) this.velocityX -= speed * (timeDelta / 1000000000.0); if (Input.keyDown(39)) this.velocityX += speed * (timeDelta / 1000000000.0); if(Input.keyPressed(38)) { […]

二维视差的方法

在2D滚动平台游戏中,最有效的方法是什么,或者知道哪些视差深度应该被绘制? 下面的方法描述了试图知道哪些东西在附近,以便它们可以被绘制/绘制。 计算出哪些视差项目在附近的问题是,在计算它们的位置之前,您不知道它们在哪里。 原始post 我有一个二维数组Set<Thing>[][] ,用于存储在滚动的2D平台上的每个屏幕上出现的Thing 。 我只用它来查看当前正在渲染的位置,以免我更新不相关的对象。 我翻译世界坐标,将它们除以屏幕大小(向下舍入),然后可以查找该屏幕上的所有项目。 例如,如果屏幕是320×240像素,我查找世界坐标400,50然后400/320 = 1和50/240 = 0,所以我查找things[1][0]并更新该条目中的所有东西。 如果有物体可以移动,移动后将它们存储在正确的位置。 当有视差深度时,有什么办法可以使用这个系统吗? IE中,视差深度为1的东西无限远(因此总是出现在屏幕坐标中的相同位置),视差深度为0的东西被固定在前景。 我猜这是不可能的,因为远远超过前景将会在多个屏幕中。 还有什么其他的方法? 我见过一位经验丰富的游戏开发人员使用“滚动速度”而不是视差深度,他将相机移动距离的倒数乘以该速度来移动景物。 在这个模型中,我可以根据其他任何移动项目来处理风景,并且在移动时将其存储在二维数组中的相邻条目中,但是它是如何进入“正确的”数组槽的呢? IE,如果距离很远,可以从左边或者右边接近,我不会提前知道。 我很困惑!

实施爆炸

我想添加爆炸到我的2D游戏,但我很难与建筑。 有几个游戏元素可能是爆炸的原因,比如爆炸桶和子弹(可能会发生连锁反应)。 唯一的select我可以拿出来是: 1 – 有一系列的爆炸,并把它们当作游戏元素,与其他游戏一样重要 优点:有一个单独的数组,更新和绘制所有其他游戏元素数组使得它更有组织和简单的更新,乍一看爆炸桶很容易创建,只需将爆炸数组作为指针到每个炸药桶的构造 缺点:子弹可能很难为vector增加一个爆炸,因为子弹是由位于每个暴徒的武器类射击的,所以可以说,如果我创建一个新的敌人并将其添加到敌人arrays,那个敌人将有一个武器和function可以使用它,如果我想要武器(在这种情况下火箭发射器)有权访问爆炸arrays可以添加一个新的,ID必须通过爆炸arrays作为指向敌人的指针,然后将其传递给武器,并将其传递给子弹(丑陋链)。 我能想到的另一个问题是更奇怪:如果我检查爆炸和桶之间的碰撞(所以我创建一个连锁反应),我发现与桶爆炸碰撞,如果我添加一个新的爆炸,而即时迭代爆炸java会抛出一个exception。 所以这有点烦人,我无法迭代爆炸,并添加一个新的爆炸,我必须以另一种方式做… 另一种不是真正深思熟虑的方式,就是为每一个可能爆炸的元素添加一个爆炸性的元素,以便当它死亡,爆炸或什么,但是我没有很好的方法来实现这个理论 老实说,我不喜欢任何解决scheme,所以编号喜欢知道如何通常由实际的游戏开发者,如果我的问题似乎微不足道,愚蠢对不起。

Java:查看鼠标hover/点击Sprite

我正在开发的游戏是你从病毒捍卫细胞,我需要的精灵有一个MouseListener的时候,鼠标点击该sprite ,它会被破坏,我不知道如何获得的位置鼠标并将其应用于精灵。 基本上,我需要抓住mouse和sprite的位置,当用户点击它将重置sprite 。 我试图做这个debugging,所以就像鼠标hover在精灵的位置,它会打印一个消息“hover”,但它不工作。 对于我的更新方法,我补充道: if(MouseInfo.getPointerInfo().getLocation() == this.getLocation()) System.out.println("SAME LOCATION"); 我甚至打印出精灵和鼠标的位置,我把它们都alignment到0 ,但它仍然不起作用。 结论: 如何检查鼠标的位置是否与Sprite相同,然后将消息打印到控制台?

哪个.jar有JBox2d的p5包?

使用Eclipse,我试图编写一个简单的hello世界程序,只需在屏幕上绘制一个矩形,然后按照本教程中的说明将它放下。 问题是,当我尝试导入p5包时,它不能parsing,所以我不能声明我的物理对象。 我试了两件事。 下载zip,解压缩,然后导入3个jar(库,序列化和testing平台) 一个。 import org.jbox2d.p5。*; 不解决,但其他人做 湾 物理物理; 没有解决 下载较旧的独立testing平台的jar,然后导入它 一个。 物理物理; 不解决; 这里基本上是我开始的地方 import org.jbox2d.util.nonconvex.*; import org.jbox2d.dynamics.contacts.*; import org.jbox2d.testbed.*; import org.jbox2d.collision.*; import org.jbox2d.common.*; import org.jbox2d.dynamics.joints.*; import org.jbox2d.p5.*; import org.jbox2d.dynamics.*; import processing.core.PApplet; public class MyFirstJBox2d extends PApplet { Physics physics; public void setup() { size(640,480); frameRate(60); initScene(); } public void draw() { background(0); […]