老实说我的问题可能已经回答了,但是我没有大学学位,只懂基础数学和一些代数。我确实有很多使用as3和动画进行编码的经验,到目前为止已经阅读了很多答案和问题,但是我仍然迷路。
我知道如何对高尔夫游戏中为果岭制作的物体和图片进行hitTest。看来位图数据是我需要使用的,但是我是新手,并且从未使用过它。
当高尔夫球进入hitTestObject边界框并获取位图数据且仅查找颜色而不必担心透明像素时,Im的想法是。然后,当球停下时,它应该在果岭上?
到目前为止,我对如何执行此操作一无所知,还是这是最好的选择?
我附上了绿色和一些路线的图片,因此您可以查看并尝试了解发生了什么。陷阱是一个问题,但现在我要重点关注绿色。
答案 0 :(得分:0)
您要寻找的是BitmapData.hitTest。
首先,您需要具有绿草的BitmapData。您只需要这样做一次,因此在检查碰撞时不要将此部分包含在循环中。
import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.geom.Point;
private var bm:Bitmap;
private var bitmapData:BitmapData;
//after everything has instantiated:
bitmapData = new BitmapData(backhole1.green1.width, backhole1.green1.height);
bitmapData.draw(backhole1.greenMap);
bm = new Bitmap(bitmapData);
准备好后,检查是否存在碰撞:
if (bm.bitmapData.hitTest(new Point(backhole1.greenMap.x, backhole1.greenMap.y), 255, new Point(backhole1.golfball.x, backhole1.golfball.y), 255)) {
//collision detected, do stuffs
}
值255用于检查位图的不透明度。在这种情况下,任何不是100%模糊的东西都将被视为透明。