Articles of Java

我如何将我的实体管理器类分成gameworld类和gamerenderer类?

我目前有一个libGDX游戏,我有一个在游戏画面中调用的实体管理器类。 相反,我想在游戏世界和游戏管理类中使用它,但是我不知道如何分解它(如果有意义的话)。 我想这样做,以便我可以单独操作我的播放器类,而不是作为实体管理器的一部分。 以前的尝试失败了,因为把“玩家”带走意味着checkCollisions停止工作(所以为什么我想用gameworld和gamerenderer类来代替)。 有没有人有任何想法如何实现这一目标? 这是我的实体经理类: public class EntityManager { private final Array<Entity> entities = new Array<Entity>(); private final Player player; public EntityManager(int amount) { player = new Player(new Vector2(110, 15), new Vector2(0, 35)); for (int i = 0; i < amount; i++) { float x = MathUtils.random(0, ManicMeltdowns.WIDTH – TextureManager.DROPS.getWidth()); float y = MathUtils.random(ManicMeltdowns.HEIGHT, […]

Java游戏如何find一个瓷砖的x和y?

你好我有一个Java游戏,你建立的房子,我希望能够把我的鼠标forms点a到b点,当我释放鼠标时,我想用瓷砖填充该区域。 我不能做的是获得所选区域的第一个x和y坐标,然后把砖放在那里,然后移动到下一个区域我试图做这样的事情: bx = Math.min((dragX / 20) * 20, (curX / 20) * 20); by = Math.min((dragY / 20) * 20, (curY / 20) * 20); w = Math.abs((curX / 20) * 20 – (dragX / 20) * 20); h = Math.abs((curY / 20) * 20 – (dragY / 20) * 20); if (dragging & […]

(Java)尝试使用(工作)animation类对硬币的数组列表进行animation制作

我有一个硬币类,它需要一个整数numOfCoins和一个枚举LayoutType ,可以是线性或曲线。 线性布局一个接一个地显示硬币的直线 – 我们将使用这个方法,因为这个方法很小且直截了当。 我的构造函数如下所示: public Coin(float xPos, float yPos, int numOfCoins, LayoutType layout) { setType(ObjectType.COIN); coinList = new ArrayList<Coin>(); // arraylist of coins setPos(xPos, yPos); // set starting position of coin(s) if (layout == LayoutType.LINEAR)) { linearLayout(); // display coins in a straight line } else if (layout == LayoutType.CURVE{ curveLayout(); } } […]

LibGDX平铺地图 – 如何获得embedded对象

我正在使用LibGDX来学习游戏开发。 我已经达到了我正在学习使用平铺地图的阶段。 在平铺地图编辑器中,有一个function,我们可以在平铺集中select一个平铺,转到视图 – >平铺 – 拼接编辑器,并将graphics对象添加到平铺。 我可以看到这些形状保存在tmx文件中,并与该图块相关联。 为了testing的目的,我也做了瓦animation(类似的选项可在查看菜单下)和OrthogonalTiledMapRendered自动animation它(所以这个信息被访问某种方式)。 我想知道是否有像embedded的形状和对象一样检索embedded层次的其他信息。 以下是tmx文件中的示例xml。 <tile id="7"> <properties> <property name="customProp1" value="customValue1"/> </properties> <image width="16" height="16" source="black_hole_swallow_4.png"/> <objectgroup draworder="index"> <object id="0" x="0.25" y="0"> <polyline points="0,0 15.625,-0.25"/> </object> </objectgroup> <animation> <frame tileid="5" duration="300"/> <frame tileid="7" duration="200"/> </animation> </tile>

当我的玩家碰到一个特定的对象(解决scheme已知,不确定如何实现)

我正在使用LibGDX开发Android游戏(尽管这比引擎问题更像是一个JAVA问题)。 我的目标是让我的球员从一个弹簧反弹到另一个弹簧,最终将他带走一个障碍如下: 我有一种感觉,滞后是因为即时通讯在update()调用的方法中创建新的对象。 这是因为我在游戏中遇到了与硬币相同的问题,直到我停止在由update()调用的方法中初始化Coin对象 – 现在它们工作正常。 但是,我不确定如何在没有初始化Spring对象的情况下实现弹簧碰撞。 目前,对象是通过一个文本文件来初始化的 – 但是, Spring只是在Box对象而不是文本文件中初始化的。 在我的update()方法中循环遍历对象,如果一个对象是一个包含Spring的Box ,则调用以下方法: public void playerSpringCollision(Box containsSpring) { // first spring (on the box) Spring boxSpring = containsSpring.getSpring(); // second spring (on the platform) Spring platformSpring = containsSpring.getPartnerPlatform().getSpring(); // distance in x between first & second spring float dx = platformSpring.getxPos() + platformSpring.getSprite().getWidth() – boxSpring.getxPos() […]

在使用libgdx的Eclipse中,“项目描述文件丢失”是什么意思?

在一个突如其来的怀旧情况下,我将我的日食工作场所从我工作的libgdx项目切换到较旧的工作场所。 看完我的旧东西,我有一些问题切换回来,因为我没有import的权利。 工作之后,我无法运行我的libgdx桌面项目了。 它说不能再加载Spritesheet:Googlesearch一下后,我被告知要确保Android资源文件夹链接到桌面项目,它是。 然后我注意到,其中一个项目文件夹是closures的(我有Project-android,项目核心,项目桌面,只是项目)文件夹项目已closures,当试图打开它,它给了我以下错误: “Projekt Stella”项目描述文件(.project)缺失。 该文件包含有关该项目的重要信息。 该文件恢复之前,项目将无法正常工作。 事情是我确保这个文件仍然是在这个文件夹…所以现在我不知道如何得到这个工作。 有任何想法吗? 编辑:该项目在Android工作室正常工作。 它只是不能在Eclipse中工作。

在Java中球倾斜物理?

我知道Q3 + Q4 = 90 我search了互联网和许多物理主题,但没有find如何在Java中计算这个值? (我发现V3和V4但没有findQ3和Q4) 那么如何计算在Java中碰撞后的V3 , V4 , Q3 , Q4值呢?

LibGdx – 我怎样才能正确处理平铺过渡/连接的纹理?

所以我正在做一个平铺的游戏,我需要根据它旁边的内容正确地连接纹理。 对于连接真正接近瓷砖边缘的瓷砖,我可以使用4位的meathod,即: x 1 x 8 x 2 x 4 x 但是对于更多细节的瓷砖,我也需要有角落。 我看到人们使用8位meathod即: 1 2 4 128 x 8 64 32 16 但是我真的只能看到48个不同的拼贴组合。 有没有一种方法可以分开角落和udl r。 像这样的东西: x 1 x 8 x 1 8 x 2 xxx x 4 x 4 x 2 还是有更好的方法一起来做到这一点。 这是我到目前为止所尝试的,但这只使用32/48瓷砖,并不适用于特殊的角落情况。 public class RockTile extends Tile { int y; public RockTile(int id) […]

在LWJGL中旋转挥动的剑给出了更加奇妙的结果

我正在使用LWJGL(本质上是OpenGL)在Java中进行一个2D自上而下的游戏。 我最近试图添加一个摆动的剑机制。 我的坐标系统设置在左下角的所有对象。 旋转工作,但它发生在剑四的左下角。 我希望它以底线的中心作为旋转的枢轴旋转。 我尝试了很多来自互联网的解决scheme,例如: 将对象转换为原点(屏幕的0,0),然后旋转,然后转换为枢轴点。 平时翻译对象,然后旋转,然后再翻译到你想要的点。 但他们都产生了奇怪的结果。 代码如下: 剑类: public class Sword extends GameObject { private static int speed = 5, deg = 0;; private Texture tex; public Sword(float x, float y, ObjectId id) { super(x, y, id); //tex = ImageLoader.loadTexture(null, null); } protected void update(ArrayList<GameObject> objects) { if(deg < 360) deg += […]

Java 2D游戏Hitbox检测和圆角

我正在与Java,swing和没有框架的简单的2D游戏。 我有一个矩形玩家,用户可以四处移动。 在地图上,玩家不应该经历的障碍很less。 我为玩家制作了一个新的Rectangle对象,并为每个障碍物设置了边界。 但我不确定这是否是正确的做法。 它的作品,但玩家的动作并不真正的用户友好。 如果玩家想要通过两个障碍物,他们必须在完美的坐标上通过。 用一个Rectangle对象来检查玩家和障碍物之间的交叉点是否是一个好主意,还是应该以另一种方式来做呢? 现在我的第二个问题: 我想用同样的hitboxreplace矩形的hitbox,但是圆角,所以玩家可以更容易的通过。 这是游戏看起来像启用了hitboxes。 检查玩家和障碍物是否相交的代码: for (Player p : this.getPlayerArray()) { Rectangle recPlayer = p.playerBounds(); for (Obstacle kiste : obstacleArray) { Rectangle recKiste = kiste.obstBounds(); if (recPlayer.intersects(recKiste)) { p.setX(100); //Not actual code here } } } 返回玩家/障碍物的hitbox的函数: public Rectangle obstBounds() { return new Rectangle(this.getX(), this.getY(), image.getImage().getWidth(null), image.getImage().getHeight(null)); }