我正在使用HaxeFlixel Framework在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
的{{1}}和y
属性为正时,才会检测到冲突。
我也想要有负FlxObject
/ x
职位。
是否有人知道此问题的修复或解决方法?