我有這個對象,有一個從路徑創建的physicsBody。SpriteKit - physicsBody不尊重邊
整個場景區域(=整個屏幕)本身就是這個物體不應該逃離的邊界。作品幾乎如預期
這一幕的邊界由
self.physicsBody = [SKPhysicsBody bodyWithEdgeLoopFromRect:self.frame];
一切定義。物體在邊緣碰撞並跳動,並且大部分時間受到它們的約束,但是如果你堅持多次,以高衝擊力將物體發射到邊緣,物體最終不會尊重邊緣並逃離,可能是什麼還有一個SpriteKit錯誤。
對象的類初始化是這樣的:
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;
我能做些什麼措施來檢測並防止物體離開畫面?
謝謝。
你已經能夠解決這個問題?我遇到了與圓體和邊緣類似的問題。一些嘗試使用強制之後,該對象逃離邊緣,永遠不能回到屏幕......不知道它是否真的是SpriteKit的錯誤。 – Khanh
是的,但這並不適用於我的情況。我有圈子物理身體和問題仍然發生... – Khanh
@Khanh SpriteKit是越野車作爲地獄。六個月前,我直接向蘋果公司提供了15個關於SpriteKit的bug報告,但蘋果公司並沒有給出解決方案。但是另一個物體的碰撞形狀呢? – SpaceDog