我正在使用一个使用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,所以这应该不是问题。
答案 0 :(得分:1)
无法发表评论(尚未);所以必须通过回答来做。
目前尚不清楚这两个代码片段是如何相关的。我只看到在第一个代码片段中创建了bitmapData,但是没有使用或填充任何内容。
所以hitTest总是会失败我猜,因为bitmapData只存在透明像素。
以下示例显示hitTest似乎是要走的路(不知道速度): http://www.mikechambers.com/blog/2009/06/24/using-bitmapdata-hittest-for-collision-detection/