我在这里,因为我正在为我的AS3应用程序的碰撞检测而苦恼。
我加载了一个表示房间的位图 - 它有边界(墙壁),其余部分是透明的(地板)。然后我创建了一个带圆形内部的精灵。
我希望我的精灵可以在这些边界内移动,并在墙上停止,我能够实现这背后的逻辑,我要求的是一种检测与墙碰撞的方法,我的整个房间是一个位图,所以我猜我只需要检查与这个位图的碰撞,但不幸的是它也计算透明部分。
我已经在谷歌上研究过这个问题,但我只找到了非常复杂的系统,无论如何都无法工作。我正在进行学习目的,所以我想知道如何自己实现它。
因此,我想问是否有人能够提供给我一小段代码,仅检查我的位图的非透明部分的碰撞?(或者我应该将此png加载为矢量图形?如何做?)。
我还旋转了我的“圆形”,所以我认为这也应该考虑在内。我假设我应该进行位图到位图的检查,而不是精灵到位图的检查?
我根本没有关于碰撞的工作代码,所以我不会提供任何代码。
如果需要提供更多信息,请告诉我。
预先感谢!
@EDIT
这是我为我的函数拥有的代码,它属于Room Class。
我加载了一个表示房间的位图 - 它有边界(墙壁),其余部分是透明的(地板)。然后我创建了一个带圆形内部的精灵。
我希望我的精灵可以在这些边界内移动,并在墙上停止,我能够实现这背后的逻辑,我要求的是一种检测与墙碰撞的方法,我的整个房间是一个位图,所以我猜我只需要检查与这个位图的碰撞,但不幸的是它也计算透明部分。
我已经在谷歌上研究过这个问题,但我只找到了非常复杂的系统,无论如何都无法工作。我正在进行学习目的,所以我想知道如何自己实现它。
因此,我想问是否有人能够提供给我一小段代码,仅检查我的位图的非透明部分的碰撞?(或者我应该将此png加载为矢量图形?如何做?)。
我还旋转了我的“圆形”,所以我认为这也应该考虑在内。我假设我应该进行位图到位图的检查,而不是精灵到位图的检查?
我根本没有关于碰撞的工作代码,所以我不会提供任何代码。
如果需要提供更多信息,请告诉我。
预先感谢!
@EDIT
这是我为我的函数拥有的代码,它属于Room Class。
public function detectCollisionWith(obj:Sprite):Boolean
{
var _bitmapData:BitmapData = new BitmapData(obj.width, obj.height, true, 0);
_bitmapData.draw(obj);
var _bitmap:Bitmap = new Bitmap(_bitmapData);
if (_bitmapData.hitTest(new Point(_bitmap.x, _bitmap.y), 255, this.bitmap, new Point(this.x, this.y), 255))
return true;
return false;
}