我正在用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属性的FlxObjects为正时,才会检测到冲突。我也想有负面的x/y职位。
有人知道解决这个问题的方法吗?
发布于 2014-11-22 16:22:56
尝试改变你的世界空间的界限。具体来说,FlxG.worldBounds.
https://stackoverflow.com/questions/26972705
复制相似问题