Java 使用方法和发动机不工作时发生碰撞
我对AndEngine上的CollizeSwith()方法有很多问题。我可以在屏幕上看到,我创建的播放器和硬币精灵显然是冲突的,但是下面的代码没有执行Java 使用方法和发动机不工作时发生碰撞,java,android,andengine,Java,Android,Andengine,我对AndEngine上的CollizeSwith()方法有很多问题。我可以在屏幕上看到,我创建的播放器和硬币精灵显然是冲突的,但是下面的代码没有执行 scene.registerUpdateHandler(new IUpdateHandler() { @Override public void reset() { // TODO Auto-generated method stub } @Overri
scene.registerUpdateHandler(new IUpdateHandler() {
@Override
public void reset() {
// TODO Auto-generated method stub
}
@Override
public void onUpdate(float pSecondsElapsed) {
// TODO Auto-generated method stub
checkCollision();
scoreText.setText(String.valueOf(score));
}
});
return scene;
}
public void checkCollision() {
if(player1.collidesWith(coin)) {
player1.setColor(Color.RED);
coin.detachSelf();
score+=200;
}
}
public void loadSprites() { //This loads the sprites
coin = new Coin(210, 220, this.coinTR,
this.getVertexBufferObjectManager());
player1 = new Player(INITX, INITY, this.player,
this.getVertexBufferObjectManager()) {
@Override
protected void onManagedUpdate(float pSecondsElapsed) {
// TODO Auto-generated method stub
super.onManagedUpdate(pSecondsElapsed);
// this.runRight();
if (this.jump) {
this.jump();
this.checkPositionForJump();
}
}
};
}
public void jump() { //This jump method is part of the player class, it just follows a parabolic path to jump
this.mX+=SPEED;
this.mY = (float) (((this.mX - (this.startX + this.VERTX)) * (this.mX - (this.startX + this.VERTX)))
/ (this.STRETCH) + this.startY + this.VERTY);
}
正如您所看到的,它从当前所在的位置沿抛物线路径移动
在checkCollision()方法中,if语句的计算结果永远不会为true。我已经尝试了我知道的每一种方法,但无法使其正常工作。只有当我将精灵设置在完全相同的初始位置时,它才会起作用,但除此之外,它永远不会起作用。任何帮助都将不胜感激 通过设置
mX
和/或mY
成员来修改sprite
的位置可能会导致您遇到的问题。在这方面使用setters总是一个好主意
更改
jump
方法(以及任何其他位置),使其使用setX
和setY
方法,而不是mX
和mY
,应该可以解决您的问题。这里的代码看起来不错。你能再粘贴一些你的代码吗?特别是与player1
和coin
精灵相关的代码,例如设置精灵位置的位置、它们的初始化等。我已经添加了创建精灵的代码,我不确定跳跃方法是否会弄乱collidesWith方法。