var redRect:Rectangle = redClip.getBounds(this);
var redClipBmpData = new BitmapData(redRect.width, redRect.height, true, 0);
redClipBmpData.draw(redClip);
var blueRect:Rectangle = blueClip.getBounds(this);
var blueClipBmpData = new BitmapData(blueRect.width, blueRect.height, true, 0);
blueClipBmpData.draw(blueClip);
addEventListener(Event.ENTER_FRAME, enterFrame);
function enterFrame(e:Event):void
{
blueClip.x = mouseX;
blueClip.y = mouseY;
if(redClipBmpData.hitTest(new Point(redClip.x, redClip.y),
255,
blueClipBmpData,
new Point(blueClip.x, blueClip.y),
255
))
{
trace("hit");
redClip.filters = [new GlowFilter()];
}
else
{
redClip.filters = [];
}
}
渲染版
addEventListener(Event.ENTER_FRAME, enterFrame);
function enterFrame(e:Event):void
{
blueClip.x = mouseX;
blueClip.y = mouseY;
redClip.rotation++;
var blueRect:Rectangle = blueClip.getBounds(this);
var blueOffset:Matrix = blueClip.transform.matrix;
blueOffset.tx = blueClip.x - blueRect.x;
blueOffset.ty = blueClip.y - blueRect.y;
var blueClipBmpData = new BitmapData(blueRect.width, blueRect.height, true, 0);
blueClipBmpData.draw(blueClip, blueOffset);
var redRect:Rectangle = redClip.getBounds(this);
var redClipBmpData = new BitmapData(redRect.width, redRect.height, true, 0);
var redOffset:Matrix = redClip.transform.matrix;
redOffset.tx = redClip.x - redRect.x;
redOffset.ty = redClip.y - redRect.y;
redClipBmpData.draw(redClip, redOffset);
var rLoc:Point = new Point(redRect.x, redRect.y);
var bLoc:Point = new Point(blueRect.x, blueRect.y);
if(redClipBmpData.hitTest(rLoc,
255,
blueClipBmpData,
bLoc,
255
))
{
trace("hit");
redClip.filters = [new GlowFilter()];
}
else
{
redClip.filters = [];
}
blueClipBmpData.dispose();
redClipBmpData.dispose();
}
分享到:
相关推荐
像素碰撞检测是游戏开发中的一个重要概念,特别是在2D游戏领域,用于判断两个物体是否相互接触或重叠。Cocos2d-x是一个流行的开源2D游戏引擎,它使用C++作为主要编程语言,提供了丰富的功能来支持游戏开发。在这个...
一种矩形返回矩形大小 一种矩形 返回是否 一种像素级碰撞
以下是一个基本的像素碰撞检测示例: ```csharp private unsafe bool PixelCollision(Bitmap img1, Bitmap img2, Point pos1, Point pos2) { Rectangle rect1 = new Rectangle(pos1, img1.Size); Rectangle rect2...
在游戏开发和图形编程中,矩形像素碰撞检测是一个重要的技术环节,特别是在2D游戏中,它用于检测游戏对象之间的交互,比如角色是否碰撞到障碍物、敌人或道具。本主题将深入探讨如何利用向量来实现高效且精确的矩形...
在Flash开发中,像素碰撞检测是一种常见的技术,用于检测两个对象是否相交。它通过比较对象在屏幕上的像素颜色来判断是否发生碰撞,而非依赖于形状或边界框。这种技术在游戏开发、动画制作以及交互设计中都有广泛的...
2. **精确像素碰撞检测**:遍历两个图形的所有像素,如果存在颜色相同的像素,则认为发生碰撞。 3. **包围盒检测**:先检查物体的包围盒是否相交,如果相交,再进行更精确的检测,如像素碰撞。 在实际应用中,为了...
像素碰撞检测是最精确但也是最耗时的方法,它需要遍历两个图形的每个像素来确定是否有重叠。这种方法适用于复杂形状的游戏对象,如带有透明部分的图像。由于需要检查的像素数量庞大,通常只在必要时使用,例如对于...
使用像素碰撞检测法算是最精确的算法了,当然,带来的代价也是比较明显的,那就是效率上的低下。除非是在极为特殊的情况下,要求使用非常精确的碰撞,否则,一般情况下在游戏中是不建议使用这种算法,特别是在运行...
四、像素碰撞检测 像素级碰撞检测是一种精确的碰撞检测方法,它通过比较两个对象在像素级别上的重叠情况来判断是否发生碰撞。在GDI中,可以使用位图操作函数,例如`BitBlt`,配合颜色查找表(Color Table)或者Alpha...
位图的碰撞检测是Flash开发中的一个重要技术,尤其在游戏制作和交互式应用程序中不可或缺。在AS3.0中,提供了多种碰撞检测方法,包括基本的`hitTestObject`和`hitTestPoint`,以及更高级的`BitmapData.hitTest`方法...
在这个"XNA像素级碰撞侦测的实例2.0 3.0版本"中,我们将深入探讨如何在XNA环境中实现精确的像素级碰撞检测。 首先,我们要理解碰撞检测的基本概念。碰撞检测是指在游戏世界中,检测两个或多个物体是否发生接触的...
在ActionScript 3.0(AS3.0)中,像素级别的精确碰撞检测是一种高级技术,用于游戏开发或任何需要精确交互的项目。通常,AS3.0中的基本碰撞检测基于对象的边界框,但这种方法可能无法处理非矩形形状或具有透明度的...
6. **像素碰撞**(J2ME 中的): - 在J2ME这样的移动平台开发中,可能需要像素级别的碰撞检测,这通常涉及到逐像素比较两个图像或颜色区域。 7. **直线与矩形碰撞**: - 检测一条直线是否与矩形的边界有任何交点...
2. **精确碰撞检测**:如果需要更精确的碰撞检测,可以使用像素级碰撞检测。这通常涉及将对象的图像转换为Alpha遮罩,然后逐像素比较两个遮罩的重叠部分。虽然这种方法更准确,但计算量较大,可能会降低游戏性能。 ...
固定功能管线处理大部分图形渲染,而可编程管线允许程序员自定义顶点和像素处理,这在碰撞检测中可能更有优势,因为可以灵活地进行几何操作和计算。 "pengzhuang"和"A11_碰撞检测"可能是源代码文件,其中包含了具体...
它不仅支持透明度,还能够高效地检测两个位图数据对象之间的像素重叠,为复杂场景下的碰撞检测提供了有力的支持。在未来的游戏开发和交互式应用程序设计中,BitmapData.hitTest将发挥更加重要的作用。
在计算机图形学领域,"碰撞检测mouse OpenGL" 是一个关键的概念,主要涉及到用户交互与3D场景中的物体交互。在本场景中,我们关注的是如何使用OpenGL库来实现鼠标与屏幕内3D对象的碰撞检测,并且是用C++语言进行编程...
- **像素着色器**:在像素着色阶段进行更精细的碰撞检测。 #### 碰撞检测算法的优化 为了提高游戏的实时性和流畅性,对碰撞检测算法进行优化至关重要。以下是一些常用的优化策略: - **层次包围盒**:使用多层...