【问题标题】:pixel perfect collision + blitting像素完美碰撞+blitting
【发布时间】:2011-10-23 22:47:12
【问题描述】:

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

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

我已经尝试过 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 播放器独立 v10.1 与 bitmapData.hitTest 存在问题,但我使用的是 10.3,所以这应该不是问题。

【问题讨论】:

  • 你用的是什么blitting引擎?

标签: actionscript-3 collision-detection


【解决方案1】:

无法发布 cmets(还);所以必须通过回答来完成。

这两个代码sn-ps的关系不是很清楚。我唯一看到的是,在第一个代码中 sn-p bitmapData 被创建,但没有使用或填充任何东西。

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

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

【讨论】:

  • 是的。你说的对!事实上,我的 bitmapData 是空的,所以 hitTest 在执行时总是会失败。非常感谢你!现在我必须重建我的小型 blitting 引擎,因为我需要将每个切片缓存到一个数组中,这样我就可以将这些缓存的切片用于我的 bitmapData.hitTest!谢谢大哥!:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-08-20
  • 1970-01-01
  • 1970-01-01
  • 2015-09-22
  • 2012-06-06
  • 1970-01-01
  • 2013-09-03
相关资源
最近更新 更多