我想製作一個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