actionscript3中像素级别的碰撞

广告时间

精品荐!虎年童装-虎虎生威!
125.0元
特价科比战靴-最轻NBA冠军战靴
120.0元

在flash游戏当中,碰撞测试应该是会经常遇到的一个问题,使用hitTestObject可以检测影片剪缉之间的碰撞,虽然这个方法在测试两个矩形之间的碰撞是没有任何问题的,但是在一些不规则形状的碰撞测试当中,这种方法往往会出问题,对于透明像素没有办法进行忽略,这时候就要用到其他的办法,网上常见的就是使用BitmapData中的hitTest方法来进行了!

代码如下(写在帧上):



//snail为蛇头的影片剪辑,wall为墙的影片剪辑
var bmdSnail:BitmapData=new BitmapData(snail.width,snail.height,true,0);
var bmdWall:BitmapData=new BitmapData(wall.width,wall.height,true,0);
bmdSnail.draw(snail);
bmdWall.draw(wall);
snail.addEventListener(Event.ENTER_FRAME,moveHandle);
function moveHandle(e:Event):void{
snail.x+=10;
if(snail.hitTestObject(wall)){
trace("普通碰撞");
}
var point1:Point=new Point(snail.x,snail.y);
var point2:Point=new Point(wall.x,wall.y);
if (bmdSnail.hitTest(point1,0xFF,bmdWall,point2)) {
trace("像素级别碰撞");
snail.removeEventListener(Event.ENTER_FRAME,moveHandle);
}
}

效果如下:
e69caae591bde5908d-2

  • 暂无相关日志

Leave a Reply