检测高尔夫球比赛的颜色以了解球是否在果岭上等

问题描述 投票:1回答:1

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

我知道如何在我的高尔夫游戏中为绿色制作的物体和图片上做一个hitTest。看来位图数据是我需要使用的,但我是新手,从来没有使用它。

我想的是当高尔夫球进入hitTestObject边界框并且是真的获取位图数据并且只查找颜色并且不担心透明像素。然后当球停止时它应该在绿色???

到目前为止,我不知道如何做到这一点,还是这是最好的事情?

我附上了绿色和一些课程的图片,以便您可以查看并尝试了解最新情况。沙坑将是一个问题,但现在我想专注于绿色。

golf green with bounding box

actionscript-3 flash collision-detection bitmapdata
1个回答
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%opague的东西都将被视为透明。

© www.soinside.com 2019 - 2024. All rights reserved.