2016-04-08 7 views
-1

Erste sorry für mein schlechtes Englisch ...

Das Szenario: Ich habe Last 3 Art von Sprite
1. Spieler
2. Hindernis (Generieren Zufalls X-Koordinate)
3. Rechteck (Obstacle Kind
)Wie erkennt man kollidieren mit zufällig erzeugten Sprite AndEngine?

ich habe auto erzeugen erstellt Hindernis für jede Sekunde, Nachdem das Hindernis erzeugt wird mit der Schwerkraft nach unten fallen.
Jedes Hindernis hat Rechteck als sein Kind. Ich werde dieses Rechteck verwenden, um eine Kollision mit dem Spieler zu erkennen.
Wenn Spieler kollidieren mit diesem Rechteck muss ich die Partitur ändern, und wenn der Spieler das Hindernis treffen muss ich die Spieler

_scene.registerUpdateHandler(new TimerHandler(0.5f, true, new ITimerCallback() { 

     @Override 
     public void onTimePassed(TimerHandler pTimerHandler) { 
      int _coorx = randInt(0,_constants.CAMERA_WIDTH); 

      // OBSTACLE 
      _obstacle = new Sprite(_coorx, -50, _obstacletr, getVertexBufferObjectManager()); 
      _obstaclefd = PhysicsFactory.createFixtureDef(10.0f, 1.0f, 0.0f); 
      _obstaclebody = PhysicsFactory.createCircleBody(_physicsworld, _obstacle, BodyType.DynamicBody, _obstaclefd); 
      _physicsworld.registerPhysicsConnector(new PhysicsConnector(_obstacle, _obstaclebody, true, false)); 

      // OBSTACLE RECTANGLE 
      _obstaclerectangle = new Rectangle(-_coorx, 0, _constants.CAMERA_WIDTH, 5, getVertexBufferObjectManager()); 
      _obstaclerectangle.registerUpdateHandler(new IUpdateHandler(){ 

       @Override 
       public void onUpdate(float pSecondsElapsed) { 
        if(_obstaclerectangle.collidesWith(_player1)) { 
         _obstaclerectangle.setColor(1, 0, 0); 
        } else { 
         _obstaclerectangle.setColor(0, 1, 0); 
        } 
       } 

       @Override 
       public void reset() { 
        // TODO Auto-generated method stub 

       } 

      }); 
      _obstacle.attachChild(_obstaclerectangle); 

      _scene.attachChild(_obstacle); 
     } 

    })); 

Antwort

0

Sie einen ContactListener müssen töten.

eine Collider Klasse erstellen, die ContactListener implementiert:

public class Collider implements ContactListener {...} 

Dann, als die Welt der Collider-Klasse hinzufügen:

youPhysicworld.setContactListener(collider); 

In der Klasse Collider Sie Kraft sind, die Methoden zu implementieren, die seine aufgerufen, wenn ein physisches Ereignis (beginContact, endCOntact, preSolve, postSolve) auftritt. In diesen Methoden können Sie die Ereignisse wie gewünscht behandeln.

+0

bereits gelöst .. Ich Array verwendet, um das Sprite zu speichern und alle Objekte durch Prüfen auf Array-Indizes onUpdate zu erkennen. Aber danke für deine Lösung, ich kann es für andere Probleme verwenden –