我想制作一个Flash Player,其中有玩家和墙壁之间的碰撞检测。但是,当我尝试使用Wall11.hitTestPoint()时,我无法使碰撞检测完美。然后,我决定使用位图,但很难对其进行编码,因为墙是不规则形状的(它不是正方形,矩形,圆形或任何规则形状)。无论如何,改善与墙壁的碰撞检测?(Actionscript 3)墙壁和球员之间的像素完美的碰撞检测?
function checkCollision(_debug:Boolean = false):Boolean {
var bmd1:BitmapData = new BitmapData(Wall11.width, Wall11.height, true, 0);
var bmd2:BitmapData = new BitmapData(LevelOnePlayer.width, LevelOnePlayer.height, true, 0);
bmd1.draw(Wall11);
bmd2.draw(LevelOnePlayer);
if (_debug) {
var bmp:Bitmap = new Bitmap(bmd1);
bmp.x = Wall11.x;
bmp.y = Wall11.y;
addChild(bmp);
var bmp2:Bitmap = new Bitmap(bmd2);
bmp2.x = LevelOnePlayer.x;
bmp2.y = LevelOnePlayer.y;
addChild(bmp2);
}
if(bmd1.hitTest(new Point(Wall11.x, Wall11.y), 255, bmd2, new Point(LevelOnePlayer.x, LevelOnePlayer.y), 255))
return true;
if (!_debug) {
bmd1.dispose();
bmd2.dispose();
}
return false;
}
请解释为什么hitTestPoint(最后一个参数shapeFlag = true)不适合你? – Organis
无论我的观点如何,当玩家距离墙太近或过远时,墙会始终检测到碰撞。我不知道如何将碰撞设置到我想要碰撞点的位置。 –
再次,排除。你使用形状和形状的标志?另外,您是否使用点坐标或本地坐标? – Organis