1

衝突のあるタイル マップ上でキャラクターを動かそうとしています。1つのことを除いて、すべてが正常に機能します。問題のある写真をお見せします:

http://i.imgur.com/bcyz5.jpg つまり、上のタイルに到達すると、どこにも移動できなくなります。左から来ると上にも下にも動けません。一番下まで来たら左には動けるけど右には動けない。そして、あなたが右に到達すると、私はどの方向にも移動できます.

正直なところ、何が失敗しているのかわかりません。順番を変えると移動できるアドレスが変わるので、if(...)の関係だと思います:/

ここにいくつかのコードを残します:

boolean collision = false;

if(Keyboard.isKeyDown(Keyboard.KEY_UP)) {
    for(int i = 0; i < map.GetNumLayers(); i++) {
        if(UpTile(map, i) > 128) {
            collision = true;
        }
    }

    if(!collision) AddPos(0.0f, -vel);
}
if(Keyboard.isKeyDown(Keyboard.KEY_LEFT)) {
    for(int i = 0; i < map.GetNumLayers(); i++) {
        if(LeftTile(map, i) > 128) {
            collision = true;
        }
    }

    if(!collision) AddPos(-vel, 0.0f);
}
if(Keyboard.isKeyDown(Keyboard.KEY_DOWN)) {
    for(int i = 0; i < map.GetNumLayers(); i++) {
        if(DownTile(map, i) > 128) {
            collision = true;
        }
    }

    if(!collision) AddPos(0.0f, vel);
}
if(Keyboard.isKeyDown(Keyboard.KEY_RIGHT)) {
    for(int i = 0; i < map.GetNumLayers(); i++) {
        if(RightTile(map, i) > 128) {
            collision = true;
        }
    }

    if(!collision) AddPos(vel, 0.0f);
}
4

1 に答える 1

1

これにより、ゲームのモデルを上に示したビューから簡単に分離できます。このは 1 つのアプローチを示していますが、このより複雑なは、関連するグリッド ベースのゲームをモデル化しています。

于 2011-07-03T01:30:36.440 に答える