2016-04-08 16 views
-1
シナリオ

...私の悪い英語のため申し訳ありません

まず: 私はスプライトの負荷3種類
1.プレーヤー
2.障害(座標X乱数を生成する)
3.長方形(障害の子を持っています)
ランダム生成Sprite AndEngineとの衝突を検出する方法は?

私は1秒ごとに自動的に障害物を生成しました。障害物が生成された後、重力によって障害物が落ちます。
すべての障害物は、矩形を子として持ちます。この矩形を使ってプレーヤーとの衝突を検出します。
プレイヤーは、この長方形に衝突した場合、私はスコアを変更する必要があり、プレイヤーiがプレイヤーを殺すために必要がある障害物

_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); 
     } 

    })); 

答えて

0

を打つ場合は、ContactListenerを必要としています。

ContactListenerを実装コライダーのクラスを作成します。

public class Collider implements ContactListener {...} 

その後の世界へとコライダーのクラスを追加します。

youPhysicworld.setContactListener(collider); 

クラスの衝突では、あなたがなるメソッドを実装する力です物理イベント(beginContact、endCOntact、preSolve、postSolve)が発生したときに呼び出されます。 これらのメソッドでは、必要に応じてイベントを処理できます。

+0

すでに解決済みです。私はスプライトを保存するために配列を使用し、配列インデックスをチェックしてすべてのオブジェクトを検出します。しかし、私は他の問題に使用することができますあなたのソリューションのためにありがとう –