HaxeFlixel フレームワークを使用して Haxe でゲームを開発しています。
マップをチャンクに分割して、実行時にマップの新しい領域をロードできるようにすることにしました (画面のロードなし)。そのために、すべてのチャンクを のインスタンスに入れますFlxTilemap
。
を移動しようとすると (とプロパティFlxTilemap
を変更して)、衝突検出 ( ) が正しく機能しないことに気付きました。x
y
with FlxG.collide(hero, map)
衝突検出が機能しない理由をテストするためFlxTilemap
に、シーンに を追加して、ヒーローと衝突させました。
map = new FlxTilemap();
var mapData = "";
for (y in 0...8) {
for (x in 0...8) {
mapData += "0,";
}
mapData += "\n";
}
map.loadMap(mapData, AssetPaths.tuxemon_sprites__png, 16, 16);
for (x in 0...8) {
map.setTile(x, 6, SpriteSheet.TILES.FENCE.LOOSE_1_RIGHT);
}
for (y in 0...8) {
map.setTile(6, y, SpriteSheet.TILES.FENCE.LOOSE_1_RIGHT);
}
map.setPosition(
map.x - map.width / 2,
map.y - map.height / 2
);
add(map);
衝突検出は、次update()
の状態のメソッドで処理されます。
override public function update():Void
{
super.update();
FlxG.collide(hero, map);
}
私のやり方が間違っているのでしょうか、それとも単に何かを見逃したのでしょうか?
編集:
HaxeFlixel の衝突検出に問題があるようです。x
衝突は、およびy
のプロパティが正の場合にのみ検出されFlxObject
ます。x
ネガティブ/y
ポジションも持ちたいです。
この問題の修正または回避策を知っている人はいますか?