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

detecting color for a golf game to know that the ball is on the green, etc

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

我知道如何对我在高尔夫游戏中为果岭制作的对象和图片进行 hitTest。看来位图数据是我需要使用的,但我是新手,根本没用过。

我的想法是,当高尔夫球进入 hitTestObject 边界框并且为 true 时获取位图数据并且只寻找颜色而不用担心透明像素。那么当球停下来的时候应该是在果岭上了???

到目前为止我不知道该怎么做,或者这是最好的做法吗?

我附上了一张果岭和一些球场的照片,这样你可以看看并试着理解发生了什么。沙坑将是一个问题,但现在我想专注于果岭。

golf green with bounding box

您要查找的是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% 不透明的都将被视为透明。