Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/350.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用方法和发动机不工作时发生碰撞_Java_Android_Andengine - Fatal编程技术网

Java 使用方法和发动机不工作时发生碰撞

Java 使用方法和发动机不工作时发生碰撞,java,android,andengine,Java,Android,Andengine,我对AndEngine上的CollizeSwith()方法有很多问题。我可以在屏幕上看到,我创建的播放器和硬币精灵显然是冲突的,但是下面的代码没有执行 scene.registerUpdateHandler(new IUpdateHandler() { @Override public void reset() { // TODO Auto-generated method stub } @Overri

我对AndEngine上的CollizeSwith()方法有很多问题。我可以在屏幕上看到,我创建的播放器和硬币精灵显然是冲突的,但是下面的代码没有执行

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方法。