![]() |
1
1
如果使用具有透明度的BitmapData对象,则可以使用 BitmapData.hitTest(firstPoint:Point, firstAlphaThreshold:uint, secondObject:Object, secondBitmapDataPoint:Point = null, secondAlphaThreshold:uint = 1):Boolean . 您将不得不从全局坐标转换为局部位图数据坐标,这将需要一点数学知识,如果它是旋转的。这很容易实现(在wiki上查找仿射变换以获取更多信息):
|
![]() |
2
1
flash中像素完美碰撞检测的一个经典参考是 Grant Skinner's article . 它是AS2,但是AS3的逻辑是相同的(如果您稍微搜索一下,就有可用的端口)。
关于位图数据
|
![]() |
3
1
我以前使用过Troy Gilbert的像素完美碰撞检测类(改编自Andre Michelle、Grant Skinner和Boulevart),它工作得非常好(处理旋转、不同的父对象等):
http://troygilbert.com/2007/06/pixel-perfect-collision-detection-in-actionscript3/
从那以后,他还联系到了这个项目(我没用过,但看起来真的令人印象深刻): |
![]() |
4
0
我终于做到了,而且我已经为碰撞检测、碰撞角度和其他附加功能编写了类。 最令人困惑的过程可能是正确对齐位图以进行比较。当我们把一个movieclip()绘制成位图数据时,如果我们把child()添加到相应的位图中,我们可以看到它的一部分是不可见的。它似乎是从中心到右和向下只绘制,留下顶部和左侧部分远离beeing绘制。解决方案是在draw方法的第二个参数中给出一个变换矩阵,它对齐位图并使其全部被绘制出来。 这是我的类中创建位图以进行比较的函数的示例:
为了使用它,如果你在时间线上,你需要:
此方法与此处显示的非常相似 http://www.mikechambers.com/blog/2009/06/24/using-bitmapdata-hittest-for-collision-detection/ 顺便说一句,如果你对这件事感兴趣的话,请检查一下我的另一个问题,我一会儿就贴出来。 |
|
Niko · 边框css更改速度快于变换旋转 7 年前 |
![]() |
NOOBAF · 将数组传递给函数(C) 7 年前 |
![]() |
Nikolay Baranenko · Kafka循环垃圾收集日志 7 年前 |
|
user9187461 · 管线旋转30度 7 年前 |