2012-04-24 3 views
-1

Я разрабатываю простую игру by andengine. У меня есть 10 шариков, которые беспорядочно перемещаются по экрану. Я импортирую шары в качестве изображения в спрайтах. Если они движутся по одной и той же координате, они проходят, хотя их собственные входы. Но я хочу: если они перемещаются в одних и тех же кодах, они должны изменить свои указания. Так они не могут пройти через их внутренности. Как я могу это сделать?Sprite collisions in android andengine

private Runnable mStartCircle = new Runnable() { 
     public void run() { 
     int i = circleNumber++; 
     Scene scene = Level1Activity.this.mEngine.getScene(); 
     float startY = -64.0f; 
     float startX = randomNumber.nextFloat()*(CAMERA_WIDTH-70.0f); 
     float a= randomNumber.nextFloat()*(CAMERA_WIDTH-70.0f); 
     circles[i] = new Sprite(startX, startY, textRegCircle[i]); 
     circles[i].registerEntityModifier(
       (IEntityModifier) new SequenceEntityModifier (
          new MoveModifier(10.0f, circles[i].getX(), a, 
            circles[i].getY(),CAMERA_HEIGHT+64.0f))); 
     } 
     scene.getLastChild().attachChild(circles[i]); 
     if (circleNumber < 10){ 
      mHandler.postDelayed(mStartCircle,1000); 
     } 
    } 
}; 

ответ

2

Каждый объект (шар) требует рамку, или в случае, ограничивающая круг, который равен размеру вашего спрайта.

При обновлении игры и изменении положения шаров вам необходимо проверить наличие коллизий.

Круглый столкновение - самый простой способ сделать. если расстояние между (ball1.pos + ball2.pos) меньше (ball1.radius + ball2.radius) = столкновение.

Затем вы обрабатываете столкновение путем изменения скорости или вычисления новых импульсов или чего-то еще. (Вы также должны переместить объекты друг от друга, чтобы они больше не сталкиваясь)

+0

обновил коды. Скажите, пожалуйста, как в коде? – Kadir

0

Просто нанесите физический разъем между шариками:

поэтому он будет сталкиваться и отскакивать назад.

final FixtureDef boxFixtureDef = PhysicsFactory.createFixtureDef(0.1f, 0.5f, 0.5f); 
final Body ballBody = PhysicsFactory.createBoxBody(this.mPhysicsWorld, circles[i],BodyType.DynamicBody, boxFixtureDef); 
this.mPhysicsWorld.registerPhysicsConnector(new PhysicsConnector(circles[i], ballBody, true, true)); 
this.mScene.attachChild(circles[i]); 
Смежные вопросы