Note that there are some explanatory texts on larger screens.

plurals
  1. POAndroid AndEngine: Simple sprite collision
    primarykey
    data
    text
    <p>I am new to AndEngine game development (or game development in general) and I am working on a very simple game. The setting is that I have 4 main sprites in the game:</p> <p>a.) Fighter Plane b.) Tank c.) Foot soldiers d.) Bomb</p> <p>The game is in a current infinite loop. The fighter plane comes out from the left, zooms across the screen and comes out the right again continuously every second. The Tank comes out from the left side of the screen, makes its way to the middle of the screen, drops off some foot soldiers who make their way to the right side of the screen. The tank will then face left and go back to where it came from.</p> <p>The player can tap the screen to launch a bomb that goes straight downwards. When it hits either the tank or the soldiers, the bomb explodes (leaving an explosion sprite) and the bomb, as well as the object it collides with (tank or soldier) detaches from the scene.</p> <p>My dilemma is that, I can't seem to solve the logic involving the collision. I mean sure, I get the functions, but I'm stumped logic wise. Here is a snapshot of the game itself:</p> <p><img src="https://i.stack.imgur.com/bSjwo.jpg" alt="enter image description here"></p> <p>Here is my snippet (this function is called from the onCreateScene update handler:</p> <pre><code> protected void checkTankCollision() { // TODO Auto-generated method stub int numCompares = bombGroup.getChildCount(); for (int i = 0; i &lt; numCompares; i++) { Sprite s = (Sprite) bombGroup.getChildByIndex(i); for (int j = 0; j &lt; numCompares; j++) { Sprite s2 = (Sprite) tankGroup.getChildByIndex(j); if (s.collidesWith(s2)) { // boom AnimatedSprite boom = createExplosion(); boom.setPosition(s.getX(), s.getY()); getEngine().getScene().attachChild(boom); // WARNING: cannot detach from the list // while looping through the list final Sprite a = s; final Sprite b = s2; // this will do the action after the scene is done updating getEngine().getScene().postRunnable(new Runnable() { @Override public void run() { a.detachSelf(); b.detachSelf(); } }); } } } } </code></pre> <p>The game force closes after some bomb launches. It gives an indexOutOfBoundsException error.</p> <p>Here's the logCat: </p> <pre><code> 09-22 00:12:14.565: E/AndroidRuntime(924): FATAL EXCEPTION: UpdateThread 09-22 00:12:14.565: E/AndroidRuntime(924): java.lang.IndexOutOfBoundsException: Invalid index 1, size is 1 09-22 00:12:14.565: E/AndroidRuntime(924): at java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:251) 09-22 00:12:14.565: E/AndroidRuntime(924): at java.util.ArrayList.get(ArrayList.java:304) 09-22 00:12:14.565: E/AndroidRuntime(924): at org.andengine.entity.Entity.getChildByIndex(Entity.java:612) 09-22 00:12:14.565: E/AndroidRuntime(924): at com.cs119.bombthetank2.BombTankActivity.checkTankCollision(BombTankActivity.java:660) 09-22 00:12:14.565: E/AndroidRuntime(924): at com.cs119.bombthetank2.BombTankActivity$4.onUpdate(BombTankActivity.java:194) 09-22 00:12:14.565: E/AndroidRuntime(924): at org.andengine.engine.handler.UpdateHandlerList.onUpdate(UpdateHandlerList.java:47) 09-22 00:12:14.565: E/AndroidRuntime(924): at org.andengine.entity.Entity.onManagedUpdate(Entity.java:1395) 09-22 00:12:14.565: E/AndroidRuntime(924): at org.andengine.entity.scene.Scene.onManagedUpdate(Scene.java:284) 09-22 00:12:14.565: E/AndroidRuntime(924): at org.andengine.entity.Entity.onUpdate(Entity.java:1167) 09-22 00:12:14.565: E/AndroidRuntime(924): at org.andengine.engine.Engine.onUpdateScene(Engine.java:591) 09-22 00:12:14.565: E/AndroidRuntime(924): at org.andengine.engine.Engine.onUpdate(Engine.java:586) 09-22 00:12:14.565: E/AndroidRuntime(924): at org.andengine.engine.Engine.onTickUpdate(Engine.java:548) 09-22 00:12:14.565: E/AndroidRuntime(924): at org.andengine.engine.Engine$UpdateThread.run(Engine.java:820) </code></pre> <p>The Entity and Scene activities are part of the AndEngine, and there's really no way there could be an error there. BombTheTank2 is the name of my activity, so yeah, the error is there.</p>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload