检测高尔夫游戏的颜色以知道球在果岭上等

时间:2019-03-04 23:51:37

标签: actionscript-3 flash collision-detection bitmapdata

老实说我的问题可能已经回答了,但是我没有大学学位,只懂基础数学和一些代数。我确实有很多使用as3和动画进行编码的经验,到目前为止已经阅读了很多答案和问题,但是我仍然迷路。

我知道如何对高尔夫游戏中为果岭制作的物体和图片进行hitTest。看来位图数据是我需要使用的,但是我是新手,并且从未使用过它。

当高尔夫球进入hitTestObject边界框并获取位图数据且仅查找颜色而不必担心透明像素时,Im的想法是。然后,当球停下时,它应该在果岭上?

到目前为止,我对如何执行此操作一无所知,还是这是最好的选择?

我附上了绿色和一些路线的图片,因此您可以查看并尝试了解发生了什么。陷阱是一个问题,但现在我要重点关注绿色。

golf green with bounding box

1 个答案:

答案 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%模糊的东西都将被视为透明。