我想使用applyImpulse方法以基於physicsBody旋轉的方向移動physicsBody。例如,physicsBody是一個正方形,我稱之爲「移動」,它將應用脈衝使其向上垂直移動。然後我調用一個方法來旋轉右側的物理體45度。如果我再次調用「移動」方法,那麼physicsBody將向右和向上對角移動。SpriteKit使用applyImpulse移動旋轉physicsBody
任何人都可以幫忙嗎?
我想使用applyImpulse方法以基於physicsBody旋轉的方向移動physicsBody。例如,physicsBody是一個正方形,我稱之爲「移動」,它將應用脈衝使其向上垂直移動。然後我調用一個方法來旋轉右側的物理體45度。如果我再次調用「移動」方法,那麼physicsBody將向右和向上對角移動。SpriteKit使用applyImpulse移動旋轉physicsBody
任何人都可以幫忙嗎?
我建議你關注Sprite Kit的座標和旋轉約定。具體來說,您的精靈圖像應該朝向零度(默認值),而正值是逆時針旋轉。這就是說,這裏是適用的脈衝在方向上的精靈正面臨一個辦法:
// Specify the force to apply to the SKPhysicsBody
CGFloat r = 5;
// Create a vector in the direction the sprite is facing
CGFloat dx = r * cos (sprite.zRotation);
CGFloat dy = r * sin (sprite.zRotation);
// Apply impulse to physics body
[sprite.physicsBody applyImpulse:CGVectorMake(dx,dy)];
更新:
修正了以下感謝@ 0x141E
-(void)characterJump {
CGFloat radianFactor = 0.0174532925;
CGFloat rotationInDegrees = _body.zRotation/radianFactor;
CGFloat newRotationDegrees = rotationInDegrees + 90;
CGFloat newRotationRadians = newRotationDegrees * radianFactor;
CGFloat r = 500;
CGFloat dx = r * cos(newRotationRadians);
CGFloat dy = r * sin(newRotationRadians);
[_body.physicsBody applyImpulse:CGVectorMake(dx, dy)];
}
好像在每次都從左邊衝動?!你有空嗎? – shahidaltaf 2014-09-03 08:13:25
在應用衝動之前是否旋轉了精靈? – 0x141E 2014-09-03 08:34:46
現在工作,上面的示例代碼。謝謝 – shahidaltaf 2014-09-05 15:55:00