0
글라이더 PRO와 비슷한 게임을 만들고 있습니다. 게임에서는 종이 비행기를 제어하고 통풍구를 사용하여 바닥에 떨어지지 않도록합니다. 비행기가 공기 통풍구와 충돌하면 (충돌을 사용하여) 비행기를 밀어 올립니다. 이제 여기에 문제가 있습니다. 두 개의 공기 통풍구를 현장에 부착하면 첫 번째 부착 통풍구 만 작동합니다. 두 번째 비행기는 비행기와 충돌하지 않는 것 같습니다. 나는 각 공기 벤트에서 onManagedUpdate 메서드를 사용하여 충돌을 확인합니다. 이것은 AndEngine으로 코딩 한 첫 번째 시간이므로 이에 대한 도움을 주시면 감사하겠습니다.AndEngine, 충돌에 영향을 미치는 동일한 엔티티 중 2 개 붙임
public class AirVent extends Rectangle
{
private Sprite sprite;
private Glider glider;
public AirVent(float pX, float pY, float pWidth, float pHeight,
VertexBufferObjectManager pVertexBufferObjectManager,
ITextureRegion pITextureRegion)
{
super(pX, pY, pWidth, pHeight, pVertexBufferObjectManager);
sprite = new Sprite(0, 0, pITextureRegion, pVertexBufferObjectManager);
sprite.setSize(pWidth, pWidth/2);
sprite.setPosition((pWidth/2) - (sprite.getWidth()/2), pHeight
- sprite.getHeight());
this.attachChild(sprite);
this.setAlpha(0);
}
public Sprite getSprite()
{
return sprite;
}
public void checkCollision()
{
if (glider.collidesWith(this))
{
glider.setGravity(glider.getConstantGravity() * -1f);
}
else
{
glider.setGravity(glider.getConstantGravity());
}
}
public void applyGliderInteraction(Glider glider)
{
this.glider = glider;
}
@Override
public void onManagedUpdate(float secondsElapsed)
{
this.checkCollision();
super.onManagedUpdate(secondsElapsed);
}
}
그리고 MainActivity 코드 부분 :
@Override
protected Scene onCreateScene()
{
// TODO Auto-generated method stub
// 1 - Create new scene
final Scene scene = new Scene();
Sprite backgroundSprite = new Sprite(0, 0, this.mBackground, getVertexBufferObjectManager());
scene.attachChild(backgroundSprite);
roomChanger = new RoomChanger(0, 0, screenWidth, screenHeight, getVertexBufferObjectManager(), scene);
// 2 - Create the player
player1 = new Glider(339, 174, this.mPlayerGlider1, getVertexBufferObjectManager())
{
@Override
public void onManagedUpdate(float secondsElapsed)
{
if (player1.getLife() == 0)
{
// Execute your actions.
finish();
}
super.onManagedUpdate(secondsElapsed);
}
};
scene.attachChild(player1);
airVent = new AirVent(200, 100, 100, 400, getVertexBufferObjectManager(), this.mAirVent);
airVent.applyGliderInteraction(player1);
airVent2 = new AirVent(500, 100, 100, 400, getVertexBufferObjectManager(), this.mAirVent);
airVent2.applyGliderInteraction(player1);
scene.attachChild(airVent);
scene.attachChild(airVent2);
createControllers();
return scene;
}
몇 가지 코드를 게시하십시오. –