我有一个物体,它的物理体是从一个路径创建出来的。
整个场景区域(= 整个屏幕)本身就是这个物体不能逃脱的边界。
这个场景的边界是由下面这些定义的:
self.physicsBody = [SKPhysicsBody bodyWithEdgeLoopFromRect:self.frame];
几乎一切正常。物体在边缘上碰撞并反弹,并大部分时间受到它们的限制,但如果您多次坚持,高冲量地向边缘发射物体,那么物体最终将不尊重边缘并逃脱,这可能是另一个SpriteKit的bug。
物体的类初始化如下:
self.physicsBody.dynamic = YES;
CGFloat offsetX = self.frame.size.width/2.0f;
CGFloat offsetY = self.frame.size.height/2.0f;
CGMutablePathRef path = CGPathCreateMutable();
CGPathMoveToPoint(path, NULL, 60 - offsetX, 79 - offsetY);
CGPathAddLineToPoint(path, NULL, 96 - offsetX, 69 - offsetY);
CGPathAddLineToPoint(path, NULL, 124 - offsetX, 44 - offsetY);
CGPathAddLineToPoint(path, NULL, 120 - offsetX, 23 - offsetY);
CGPathAddLineToPoint(path, NULL, 85 - offsetX, 0 - offsetY);
CGPathAddLineToPoint(path, NULL, 62 - offsetX, 3 - offsetY);
CGPathAddLineToPoint(path, NULL, 37 - offsetX, 19 - offsetY);
CGPathAddLineToPoint(path, NULL, 12 - offsetX, 29 - offsetY);
CGPathAddLineToPoint(path, NULL, 3 - offsetX, 39 - offsetY);
CGPathAddLineToPoint(path, NULL, 7 - offsetX, 58 - offsetY);
CGPathAddLineToPoint(path, NULL, 27 - offsetX, 46 - offsetY);
CGPathAddLineToPoint(path, NULL, 36 - offsetX, 61 - offsetY);
CGPathCloseSubpath(path);
self.physicsBody = [SKPhysicsBody bodyWithPolygonFromPath:path];
self.physicsBody.restitution = 0.0f;
self.physicsBody.usesPreciseCollisionDetection = YES;
我该采取哪些措施来检测并防止对象离开屏幕?
谢谢。