思路:从鼠标单击处创建一个很小范围的边界盒,查找是否有刚体与此边界盒相交,如果有相交,则记下此刚体,在此刚体不是休眠状态时,检查鼠标单击点是否在此刚体所包含的区域。具体代码如下: function getBodyAtMouse():b2Body { //根据鼠标单击位置创建向量 mouseVec = new b2Vec2(stage.mouseX / physScale, stage.mouseY / physScale); //定一个鼠标单击位置为中心的很小的一个边界盒 var aabb:b2AABB = new b2AABB(); aabb.lowerBound.Set(mouseVec.x - 0.001, mouseVec.y - 0.001); aabb.upperBound.Set(mouseVec.y + 0.001, mouseVec.y + 0.001); //所要查找形状的数量 var maxCount:int = 10; //保存查找到与已知边界盒相交的形状 var shapes:Array = new Array(maxCount); //在世界中查找与边界盒相交的maxCount个形状,并返回形状的个数 var count:int = world.Query(aabb, shapes, maxCount); var body:b2Body = null; for (var i:int = 0; i < count;i++ ) { if (!shapes[i].m_body.IsStatic()) { var tempShape:b2Shape = shapes[i] as b2Shape; var intersect:Boolean = tempShape.TestPoint(tempShape.m_body.GetXForm(), mouseVec); if (intersect) { body = tempShape.m_body; break; } } } return body; } 原文地址:http://space.flash8.net/space/?628770/viewspace-432196.html