Articles of Java

我怎样才能改进这个碰撞检测逻辑?

我试图做一个android游戏,我碰到一些麻烦碰撞检测工作。 它有时候工作,但我的条件不够具体,我的程序错了。 条件如何改善? public boolean checkColisionWithPlayer( Player player ) { // Top Left // Top Right // Bottom Right // Bottom Left // int[][] PP = { { player.x, player.y }, { player.x + player.width, player.y }, {player.x + player.height, player.y + player.width }, { player.x, player.y + player.height } }; // TOP LEFT – […]

帮助网格和底纹

在LibGdx的一个游戏中,我想join一个涟漪效应。 我很困惑我如何获得对屏幕上的个别像素,或任何方式来影响他们(除了我可以做与精灵批处理)。 我有我的怀疑,我必须通过OpenGL做到这一点,它与应用网格有关? 这使我想到了什么是网格? 我已经做了大约半年的游戏,并且在游戏的其他方面做得很好,但是我发现这个更高级的东西并没有很好的logging。 谢谢!

保存和加载大的瓷砖地图

作为标题状态,我有一个大的地图400×400×26。目前只是关于使用它的集市。 保存需要几秒钟,它保存到一个.ser文件,这是好的,但当重新加载地图需要几分钟,是痛苦的。 我想知道如何改善我的保存/加载,并且如果可能的话改进地图的使用方式,例如:使用二维数组而不是三维数组,但仍然与z级一样。

我在搅拌机里创造了人性。 如何在Java / Android中使用它

标题说,这一切都非常。 我在网上找不到任何细节解释它。 我在Blender中创建了一个人物模型,我想在Android应用程序中使用它。 我想让它移动。 我的下一步是什么?

Java2D游戏闪烁

我正在尝试熟悉使用Swing库来制作Java游戏。 编码我的蛇游戏,但是,我已经到了一个点,在这个游戏是闪烁/重影,我不知道为什么。 在这短短的YouTubevideo中可以看到一个闪烁的例子: http : //www.youtube.com/watch?v = QP1IcZ5TRoY 我怕在这里张贴太多的代码,因为它不会帮助任何人,但对于读者来说,我会张贴一些事实。 在JComponent上绘画 我在我的覆盖paintComponent方法的开始时调用super.paintComponent(g) 我已经将setDoubleBuffered(boolean)设置为true。 虽然不确定它的必要性,但我在JFrame上调用了createBufferStrategy(2) 我的“游戏循环”是基于swing.Timer每17ms调用重绘,但尝试,30fps 蛇片以25个像素点(或相对于世界大小)移动。 这是我如何绘制每个瓷砖: for (int i = 0; i < gamePieces.length; i++) { int x = i % ROW_COL_SIZE; int y = i / ROW_COL_SIZE; if (gamePieces[i].equals(Tile.EMPTY)) { continue; } else { final SnakeGraphics gfx = gamePieces[i].getGraphic(); gfx.draw(g2d, x, y, direction); } […]

玩家位置触发传送

我正在开发一个Minecraft插件(bukkit),其中服务器管理员可以创建“门户” – 一个小区域,可以传送任何进入它的玩家。 我已经将传送技术分类了,而且我知道如何定义玩家的位置可以被testing的区域。 这将涉及包含区域的ArrayList ,然后挂钩PlayerMoveEvent以便每次searchArrayList以获得匹配的门户区域。 虽然这个方法可行,但我怀疑当100多名玩家同时在四处移动时,效率会非常高。 有没有更好的方法来检查一个玩家的位置与一组“区域”/区域?

你怎么让子弹在不同的角度使用三角洲的角度移动

我很难让我的子弹以三角洲稳定的速度移动。 我有我在slick2d以外使用的公式,但不考虑delta。 我的子弹飞得很快 我如何让他们变慢。 x = x + (int) (length * Math.cos(this.angle)); y = y + (int) (length * Math.sin(this.angle));

Java小程序游戏devise没有键盘焦点

THIS IS PROBABLY THE WRONG PLACE. POSTED IT THIS IS PROBABLY THE WRONG PLACE. POSTED IT HERE (STACKOVERFLOW) 我正在做一个小程序游戏,它正在渲染,游戏循环正在运行,animation正在更新,但键盘input不起作用。 这是一个SSCCE。 public class Game extends JApplet implements Runnable { public void init(){ // Initialize the game when called by browser setFocusable(true); requestFocus(); requestFocusInWindow(); // Always returning false GInput.install(this); // Install the input manager for this class […]

当发现侧面碰撞时重力停止

请看这个GIF: animation上的标签显示“移动button被按下,然后释放”。 而且你可以看到什么时候被按下(和玩家的getCenterY()在墙上getCenterY()),重力不起作用。 我试图从昨天开始解决,但是我不能。 所有方法都是从游戏循环中调用的。 public void move() { if (left) { switch (game.currentLevel()) { case 1: for (int i = 0; i < game.lvl1.getX().length; i++) game.lvl1.getX()[i] += game.physic.xVel; break; } } else if (right) { switch (game.currentLevel()) { case 1: for (int i = 0; i < game.lvl1.getX().length; i++) game.lvl1.getX()[i] -= game.physic.xVel; break; } […]

以全屏模式在主游戏屏幕上呈现另一个屏幕

我的游戏以全屏模式运行并使用主动渲染。 graphics在每个游戏循环的全屏窗口中绘制: public void render() { Window w = screen.getFullScreenWindow(); Graphics2D g = screen.getGraphics(); renderer.render(g, level, w.getWidth(), w.getHeight()); g.dispose(); screen.update(); } 这是screen.update()方法: public void update(){ Window w = device.getFullScreenWindow(); if(w != null){ BufferStrategy s = w.getBufferStrategy(); if(!s.contentsLost()){ s.show(); } } } 我想在主游戏屏幕(菜单,库存等)上显示另一个屏幕。 可以说,我有一个JPanel库存,其中有一个库存单元格(手动绘制)和一些像JPopupMenu Swing组件。 所以我试着把它添加到我的窗口中,并在游戏循环中重新绘制,大多数时候工作正常…但是有时面板不会显示。 在库存中盲目移动的东西工作,但它没有显示。 当我alt标签,并返回,它显示正常。 我也尝试在全屏窗口上绘制剩余的库存,并使用JPanel来只显示button和popupmenus。 清单显示正确,但Swing组件保持闪烁。 我猜这是因为我不知道如何结合主动和被动渲染。 public void render() { Graphics2D […]