我希望使用“相交”(来自Starling)来创建碰撞,但我不知道如何将我的Quad“player”和我的Quad“block”转换为Rectangles。 有人可以帮忙吗?
答案 0 :(得分:0)
Quad
包含一个getBounds
公共方法,它返回一个新的矩形(如果在第二个参数上传入,则返回更新的矩形),所以:
var playerRect:Rectangle = quadPlayer.getBounds(this);
var blockRect:Rectangle = blockPlayer.getBounds(this);
if (playerRect.intersects(blockRect)) {
trace("Collision!");
}
现在,我正在使用this
,因为我不知道您的显示列表层次结构,并且这不知道您的四边形所在的坐标系,因此请相应调整。
http://doc.starling-framework.org/current/starling/display/DisplayObject.html
转换坐标
在显示树中,每个对象都有自己的局部坐标系。如果旋转容器,则旋转该坐标系 - 从而旋转容器的所有子项。
有时您需要知道某个点相对于另一个坐标系的位置。这就是getTransformationMatrix方法的目的。它将创建一个矩阵,表示一个坐标系中一个点到另一个坐标系的转换。
http://doc.starling-framework.org/current/starling/display/Quad.html
getBounds(targetSpace:DisplayObject,out:Rectangle = null):Rectangle [override]返回一个矩形,该矩形完全包围对象,因为它出现在另一个坐标系中。