像素完美碰撞+ blitting

时间:2011-10-23 22:47:13

标签: actionscript-3 collision-detection

我正在使用一个使用bitmapData的blitting引擎。没有显示对象。

这种游戏系统是否有快速像素完美碰撞检测?

我已经尝试过CDK,但这不起作用,因为它假设你有我的对象不使用的显示对象。有时我的对象非常大,而在这种情况下,hitTest很糟糕。我已经尝试过圆圈到圆圈的碰撞,但这也没有做到。任何帮助或提示?

更新

 public function renderTile(canvasBitmapData:BitmapData):void
    {
        x = nextX;
        y = nextY;

        point.x = x;
        point.y = y;

        if (animationCount >= animationDelay)
        {
            animationCount = 0;

            if(reverse)
            {
                currentTile--;
                if (currentTile < 1)
                {
                    currentTile = tilesLength - 1;
                }
            } else {
                currentTile++;
                if (currentTile == tilesLength)
                {
                    currentTile = 0;
                }
            }

        } else {
            animationCount++;
        }

        canvasBitmapData.lock();    
        tileRect.x = int((currentTile % spritesPerRow)) * tileWidth;
        tileRect.y = int((currentTile / spritesPerRow)) * tileHeight;
        bitmapData = new BitmapData(tileWidth - oversize, tileHeight - oversize, true, 0x000000);

        canvasBitmapData.copyPixels(tileSheet, tileRect, point);
        canvasBitmapData.unlock();
    }

调用hitTest:

if (player.bitmapData.hitTest(player.point, 255, tempAsteroid.bitmapData, tempAsteroid.point, 255))

目前碰撞根本不起作用。我可以飞过我的物体,我绝对没有碰撞。我在某地读到flash player standalone v10.1与bitmapData.hitTest存在问题,但我使用的是10.3,所以这应该不是问题。

1 个答案:

答案 0 :(得分:1)

无法发表评论(尚未);所以必须通过回答来做。

目前尚不清楚这两个代码片段是如何相关的。我只看到在第一个代码片段中创建了bitmapData,但是没有使用或填充任何内容。

所以hitTest总是会失败我猜,因为bitmapData只存在透明像素。

以下示例显示hitTest似乎是要走的路(不知道速度): http://www.mikechambers.com/blog/2009/06/24/using-bitmapdata-hittest-for-collision-detection/