1

オブジェクト(プラットフォーマー)Characterの上部と衝突したときに を返すように、クラス内に関数を記述しようとしています。これまでのところ、クラス内にこれがあります:WalltrueCharacter

private boolean isTouchingTopOfWall() {
    for (Wall wall: game.getPanel().getWalls())
        if (getBounds().intersects(wall.getBounds()))
            return true;
    return false;
}

CharacterandWallクラスの 2 つの関数を次のように使用します。

public Rectangle getBounds() {
    return new Rectangle(x, y, game.getBlockSize(), game.getBlockSize());
}

これは、オブジェクトがオブジェクトCharacterの側面に衝突した場合とは別に完全に機能し、上から衝突した場合にのみ戻るように、必要に応じて を返します。これどうやってするの?Walltruetrue

ありがとう。

4

3 に答える 3

0
private boolean isTouchingTopOfWall() {
    for (Wall wall: game.getPanel().getWalls())
        if (getBounds().y< wall.getBounds().y)  //top wall
            return true;
        if (getBounds().y + getBounds().getHeight() > wall.getBounds().getHeight())
            return true;   //bottom wall
    return false;
}

下部と上部の壁 (省略可能) のみをチェックする必要があります。これを行うよりエレガントな方法ですが、少なくとも変更する必要はありませんgetWalls()

于 2013-06-13T20:26:27.627 に答える
0

壁の上部がどこにあるかを常に知っている場合は、チェックを追加してその部分を確認することができます

 if (getBounds().intersects(wall.getBounds()) && 
    wall.intersectPoint == *wall.getTopBounds*) //you'd probably have to write this
        return true;
于 2013-06-13T20:22:59.670 に答える
0
private boolean isTouchingTopOfWall() {
    for (Wall wall: game.getPanel().getWalls())
        if (getBounds().intersects(wall.getBounds())) {
            int charBottomY = character.getY() + character.getBlockSize();
            int wallTopY = wall.getY();
            if(charBottomY <= wallTopY)
                return true;
        }
    return false;
}

交差していると判断したら、壁の上にいるかどうかを判断するコードを挿入します。壁の上にいない場合は、次の壁にスキップしてください。

于 2013-06-13T20:23:04.850 に答える