Articles of Java

制作一个怪物遭遇法

我现在正在制作我自己的2D小文本游戏,我有一个11/11的网格,一个怪物在中间产生,当我站在它的位置,它把我带到另一个11/11网格,怪物。 我要把它作为一个回合制的主题,轮到我时,我只能移动一定数量的空间,怪物只能移动一定的空间,当能力在范围内时,我们可以使用它们等等等等等, 我需要它,所以每当我遇到一个怪物时,就会看到我在网格上的位置,看看它是低级区域还是高级区域,如果是低级区域,它会产生粘液,狼或猪。 或高水平的区域,它会产生龙,巨人等。有没有比我目前正在做的更好的方式来做到这一点。 现在我已经开始低水平了。 我想要做什么 如果怪兽=猪,狼,煤泥,给它一定的数据和健康,然后开始战斗 如果怪兽=巨龙,给它一定数量的身体和健康然后开始战斗 目前我做得好还是有更好的办法? public static void monster_encounter() { Random gen = new Random(); final int monster_gen = gen.nextInt(3); if( monster_gen == 0) { System.out.println("You're fighting a: Wolf"); } else if( monster_gen == 1) { System.out.println("You're fighting a: Slime"); } else if( monster_gen == 2) { System.out.println("You're fighting a: Pig"); […]

TileEntitySpecialRenderer只能从某个角度渲染

我正在用Forge开发一个Minecraft mod。 我已经为它添加了一个tileentity和一个自定义的渲染器。 问题是:块只能从某个角度看到。 我已经把我的代码转换成了其他人的代码,看起来和他们差不多。 该块是不透明的,不会被渲染,并且渲染器被正常注册,所以错误必须在渲染器中。 以下是渲染器代码: public class TERender extends TileEntitySpecialRenderer { public void renderTileEntityAt(TileEntity tileEntity, double d, double d1, double d2, float f) { GL11.glPushMatrix(); GL11.glTranslatef((float)d, (float)d1, (float)d2); HeatConductTileEntity TE = (HeatConductTileEntity)tileEntity; renderBlock(TE, tileEntity.getWorldObj(), tileEntity.xCoord, tileEntity.yCoord, tileEntity.zCoord, mod.EMHeatConductor); GL11.glPopMatrix(); } public void renderBlock(HeatConductTileEntity tl, World world, int i, int j, int k, Block […]

口袋妖怪黄包裹过渡

所以我一直在努力做一个很好的老口袋妖怪黄相当准确的克隆已经相当一段时间了,一个令人困惑,但仍然微妙的机制困惑了我。 正如您在上传的图像中看到的那样,在进入到另一个游戏位置(例如楼梯或进入建筑物)的包装后,会在两个阶段中进行一定的颜色处理。 实现这一目标的一个简单(而且马虎)的方法,以及我迄今为止所使用的一种方法是,在屏幕上渲染每个图像的三个副本,并调整其颜色,以匹配每个转换阶段。 当然过了一段时间,这会变得非常耗时。 所以我的问题是没有人知道使用java实现这种颜色处理效果的任何更好的方法? 提前致谢, 亚历克斯

如何创建漩涡/漩涡效果?

我试图在一个传感器的圆体上做一个涡旋效果。 我一直在寻找这个和所有的例子,我所看到的是在C ++或目标C,我似乎并没有把它们翻译好。 当我的对象碰撞,它调用beginContact(..),它设置一个标志,以便我可以调用bodyToUpdate.applyForce(…); public void beginContact(Contact contact) { setColliding(true); } //updating collition every frame public void act(){ if (colliding) { ball.getBody().applyForce(….); } 如何计算应用每一帧的力量使其成为旋涡? 所以我现在有物体直接进入涡旋的中心,但没有“旋转” public void act() { if (colliding) { ball.getBody().setLinearVelocity(0, 0); ball.getBody().applyForce((portal.getBody().getPosition().x – ball.getBody().getPosition().x) * i, (portal.getBody().getPosition().y – ball.getBody().getPosition().y) * i, ball.getBody().getPosition().x, ball.getBody().getPosition().y, true); i++; } else i = 10; }

Box2D平台游戏:为什么水平移动停止跳跃?

我正在写我的sBox2D游戏角色的移动代码,但是我的跳跃实现失败: 当我按下Jump键时,字符跳转OK。 但是,当我同时按下跳转键和另一个键(如左箭头键)时,它会阻止跳转的发生。 我正在使用applyForceToCenter和setLinearVelocity移动字符。 问题是什么? 这是我如何绑定键触发移动: // press W key (aka Up key or BTNup) if (RHInput.isDown(RHInput.BTNup)) { if(rhcl.isPlayerOnGround()) { toniBody.applyForceToCenter(0, 100, true ); System.out.println("Toni jumps"); } } // press A key (aka Left key or BTNleft) if (RHInput.isDown(RHInput.BTNleft)) { if(rhcl.isPlayerOnGround()) { toniBody.setLinearVelocity(-5, 0); System.out.println("Toni walks left"); } else { toniBody.setLinearVelocity(-1, 0); } }

实体组件系统:将指针存储在组件到实体中

我想知道是否将一个指针存储在拥有组件的实体的每个组件中是一个坏主意。 比如我有一个组件“NPC”。 拥有这个组件的每个实体也必须有一个Position和Sprite组件。 有时我从我的系统中获得一个NPC组件列表,但是我也需要相应的Position和Sprite组件。 我可以检索实体,但是我必须input相当多的代码,而且比指针更加昂贵。 所以将一个指向实体的指针存储在一个组件中是一个坏主意?

我如何在3D环境下进行加权级联?

我正尝试在3D环境中沿着path执行加权级联。 现在,我想要做的是在环境中的一个对象(一个立方体)从其坐标1在每个方向扫描另一个立方体,然后,如果它find另一个立方体,它将围绕该立方体扫描另一个立方体等到达path的末端,或者已经达到了40个立方体的极限,并且我希望它沿着它所需要的path的每一步都具有一个重量,所以如果沿着path超过了40个立方体,它将会停止。path。 现在,我不知道从第一个立方体周围扫描的位置。 我如何让它移动到下一个立方体,然后下一个立方体,然后下一个等没有写一个很长的方法,考虑path上的每个立方体? 在寻找诸如A-Star或BFS / DFS之类的寻路algorithm之前,我已经尝试过了,发现它太复杂了,对于我的程序的这一部分来说,这是不必要的复杂。 谢谢。 编辑:我忘了提及,这些立方体不动,他们留在任何地方玩家把他们。

顺利与LibGDX联合

我想将敌人从当前位置移动到LibGDX中的鼠标位置。 x,y – 敌方位置saveX,saveY – 我的敌人需要去的位置(或者在特定时间保存的鼠标位置) xSize,ySize – 敌人的尺寸。 protected Vector2 makeVec(float saveX, float saveY){ Vector2 v = new Vector2(saveX – x, saveY – y); return v.nor(); } public void update(float dt){ test += dt; dtTime += dt; if(cont){ vec = makeVec(saveX, saveY); x += vec.x * speed y += vec.y * speed; cont = […]

旋转一个对象指向鼠标

我正在使用slick2d进行这个过程,并试图旋转一个小面对面的鼠标。 我的问题是,在我的游戏minigun实际上是旋转,但没有对所有的鼠标! 另外,迷你炮还有180度,在那里停了下来。 这是我的minigun类,我把它放在另一个核心类中进行更新和渲染。 public class Minigun { private Animation Shoot; private SpriteSheet sheet; private int x = 200, y = 150; private double angleToTurn; private Input input; public Minigun(){ try { sheet = new SpriteSheet(new Image("res/minigun.png"), 130, 34); Shoot= new Animation(sheet, 1, 0, 2, 0, true, 1, true); Shoot.setLooping(true); input = new Input(1); } […]

让精灵顺利旋转

我有一个精灵,我想旋转顺利,面对相反的方向: 这是我的渲染function: public void render() { // Game Loop Gdx.gl.glClearColor(0.7f, 0.7f, 0.2f, 1); Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT); spriteBatch.begin(); if(bug.getX() >= (int)(Gdx.graphics.getWidth() – 100) && bug.getY() >= (int)(Gdx.graphics.getHeight() – 100)){ bug.rotate(rotDeg); turn = !turn; } else if(bug.getX() <= 0 && bug.getY() <= 0){ bug.rotate(rotDeg); turn = !turn; } if(!turn){ bug.translate(vx * Gdx.graphics.getDeltaTime(), vy * Gdx.graphics.getDeltaTime()); } else{ bug.translate(-(vx * […]