Articles of Java

创建实体时的循环依赖

我有以下问题: 我有一个名为Stage的类,它保存了一个实体列表,它遍历每个更新循环,并更新它们。 其中一个实体可能是一个武器(PEW PEW!),当更新产生新的实体时(射弹,KA-ZOOM,KER BANG!)。 如何将这些新实体添加到Stage中实体的列表中? 目前,我把Stage作为一个具有全局访问权限的单例,所以那些反过来派生实体的实体只是调用Stage的addEntity方法的实例,但是这样做感觉很愚蠢。 舞台 – >实体(武器) – >再次登台? 创建敌人时我有类似的问题: 舞台 – >实体(敌波) – >再次登台 我一直在考虑将List传递到可以创建其他实体的所有实体,但是我不得不改变基本实体类的更新方法,以便它获取这个列表,大多数实体不需要。 此外,在向舞台添加实体时,必须让舞台知道该实体的许多graphics组件,以便Stage能够告诉渲染器(具有OpenGL上下文)为这些graphics加载合适的资源组件。 任何想法我应该做什么? 我现在做错了吗? 而且,当我们在这时,为什么Singletons如此皱眉?

我应该如何在Android中实现游戏结束菜单?

通过游戏菜单 ,我的意思是一个菜单显示,当你死,有一个选项再次播放。 我有两个办法: 使用OpenGL 准备好一些button纹理。 当角色死亡时,绘制它们。 听这些纹理的事件。 使用一个视图 (这就是我现在正在做的)当用户打开游戏时,我有一个基本的活动,以及一个FrameLayout的基本视图:根是一个GlSurfaceView并有一个菜单顶部(embeddedLinearLayout )。 当用户点击“播放”时,该菜单将从屏幕转换(使用翻译animation),只留下可以与用户交互的GlSurfaceView 。 游戏结束时,我正在考虑执行类似的事情,但我不确定从哪里开始。 我不特别喜欢第一种方法,因为在OpenGL中实现button事件似乎很难。 我应该如何处理这个?

dynamic更改从纵向到横向的游戏

我有多个类实现Screen 。 比方说,我想要主菜单屏幕portrait ,然后是播放屏幕 landscape 。 有没有改变orientationdynamic? 我以为我可以开始另一个Activity并有播放屏幕扩展Game 。 而新的Activity将intialize 播放屏幕 。 但是,显然你不能调用startActivity之类的,显然,因为LibGDX是独立LibGDX平台的。 我使用Gdx.graphics.getWidth()和Gdx.graphics.getHeight()来alignmentSprites和Actors ,使它看起来在不同的设备上是“正确的”。 我也试着分别交换Gdx.graphics.getWidth()和Gdx.graphics.getHeight() ,但似乎无法得到精灵和演员正确的位置。

如何检查keyReleasedcallback之间的密钥版本?

Slick2D的Input类有一个isKeyPressed()方法,根据指定的键是否被按isKeyPressed()返回一个布尔值。 我想检查一个密钥是否以同样的方式被释放。 我看着添加一个KeyListener到input对象,并覆盖keyReleased()方法。 然而,因为我目前正在处理BasicGame的update()方法中的input,所以我将通过在两个不同的地方处理input来破坏我的代码,这是我想避免的。

像素完美的旋转位图碰撞检测

我有两个使用matrix绘制到canvas上的位图 canvas.drawBitmap(bitmap, matrix, paint); 首先要弄清楚,如果我需要检查碰撞,我正在使用eucilidean载体 //vector between the bitmaps float vx = bitmap2.x – bitmap1.x; float vy = bitmap2.x – bitmap1.x; //magnitude of the vector between the two bitmaps float m = Math.sqrt( (vx*vx)+(vy*vy) ); if( m < bitmap1.getDiagonalWidth() + bitmap1.getDiagonalWidth()) { //pixel perfect collision detection required } 首先,这是处理这部分碰撞检测的最好方法吗? 其次,一旦我发现碰撞是可能的,在将位图投影到运行像素完美碰撞检测的方法之前,我需要做些什么吗? 基本上,这个问题是因为图像的旋转而变得复杂吗? 编辑*有可能位图也将由matrix缩放。 我想这会使事情进一步复杂化。

最佳手机游戏分辨率

什么是最好的景观和肖像分辨率的比例,将适合大多数设备在那里和黑色的酒吧大小将是最低的?

如何使用LWJGL顶点缓冲区对象?

我一直在学习如何使用LWJGL制作游戏一段时间,在线观看YouTube教程,但是我最近在理解顶点缓冲区对象时遇到了一些问题。 我已经看过几个教程,包括LWJGL Wiki的教程,但是我仍然不明白如何使用它们。 有人可以澄清如何使用顶点缓冲区对象? 我了解它背后的代码,但我不知道它应该如何使用。 我知道VBO应该只创建一次,并渲染每个帧/循环。 但是我的主要问题是,每个游戏有一个顶点缓冲区对象还是每个对象要绘制一个? 另外,维也纳国际中心和交错的维也纳国际中心之间有什么区别?

如何在libgdx中查询gui的input?

好的,所以我的问题很简单。 如何在不影响GUI下面的内容的情况下使用GUI类来轮询input? 所以假设你有一个用于d-pad和其他控件的gui的RPG游戏: gui.getInput(); //User taps button in the gui world.getInput(); //The tap should have only affected the gui, but instead goes through and also affects the world 你怎么处理这个问题? 我想到了一些方法,但我不喜欢它们。

libgdx:你如何从TiledMap中移除一个单元格?

我正在做一个开放的世界Terraria式sidescrolling游戏。 我正在使用TiledMap来渲染所有的图块。 如果我想删除一个瓷砖,如果它是坏的,我将如何阻止它被渲染?

雪碧透明度不影响libGDX

我正在使用libGDX和Tween通用引擎进行游戏。 我的问题如下: 我有2个屏幕,所以有两个屏幕,一个带有标志的闪屏,另一个是主菜单。 在启animation面中,我使用一个SpriteBatch和一个带有我想要的图像Texture的Sprite (它经历了一些缩放)。 现在我使用Tween引擎,以及创建的SpriteAccessor来控制精灵的alpha。 我淡入图片,然后淡出,然后将其更改为下一个屏幕。 在下一个屏幕中,我有一个精灵和一个3插槽精灵数组。 在这个屏幕中,我也使用补间引擎,我淡入单个精灵到屏幕(这是背景图像),然后我尝试,使用相同的方法,( Tween.to )来更改精灵数组的alpah(每个精灵),我首先使用Tween.set将其设置为0,然后使用该方法更改它。 这并没有工作,经过一些testing,我试图将单个精灵的alpha从数组设置为0,并没有工作。 这就像程序忽略了alpha值,我甚至打印出alpha值,它说0,但精灵是可见的。 我该如何解决这个问题,或者为什么会这样呢?