2013-12-23 80 views
1

如果您想將車輪安裝在汽車上,並且希望汽車在飛行時受到重力的影響。你如何爲這個車輪製造一個物理機構:「車輪是用彈簧連接在汽車上的,受到重力的影響。」?如何將SKPhysicsBody附加到類似彈簧的節點上?

我嘗試這樣做:

SKPhysicsBody *phys = [SKPhysicsBody bodyWithCircleOfRadius:20]; 

但隨後的車輪剛剛脫落的車。它沒有「附加」到汽車上。換句話說:如果你抓住一輛玩具車,由於重力拉動它們,車輪會稍稍下滑。但是他們不會跌倒在地板上。他們附在車上。

或想起一個重量的春天。當你搖晃時,體重會反彈。但它附着在春天,不會掉下來。

在Sprite Kit中模擬這種事情的正確方法是什麼?我發現有一種叫做SKPhysicsJointSpring的東西。我會在發現時發佈答案。

回答

2

好的,所以你需要SKPhysicsJointSpring。但錨點是有問題的,因爲它必須在世界座標中定義。

SKPhysicsBody *p = [SKPhysicsBody bodyWithCircleOfRadius:20]; 
p.affectedByGravity = NO; 
p.allowsRotation = NO; 
self.car.physicsBody = p; 

p = [SKPhysicsBody bodyWithCircleOfRadius:30]; 
p.affectedByGravity = NO; 
p.allowsRotation = NO; 
self.wheel.physicsBody = p; 

SKPhysicsJointSpring *spring = [SKPhysicsJointSpring jointWithBodyA:_car.physicsBody bodyB:_wheel.physicsBody anchorA:_car.position anchorB:_wheel.position]; 
spring.damping = 0.05; 
spring.frequency = 0.8; 
[self.rootNode.scene.physicsWorld addJoint:spring]; 

這看起來像它的作品,但只有當我不在汽車或車輪上執行操作。如果我這樣做,汽車和車輪抖動很多。

相關問題