
220
|
第
7
章
sprite.position = CGPoint(x: self.frame.midX, y: self.frame.midY)
sprite.physicsBody = SKPhysicsBody(rectangleOf:sprite.size)
scene.addChild(sprite)
讨论
当我们将一个
SKPhysicsBody
关联到一个
SKSpriteNode
时,
Sprite Kit
会让精灵的
运动符合物理学特征。
这会导致以下几个影响:
•
物理引擎开始跟踪施加在这个物体上的一切外力,如重力。
•
每一帧,都会根据这些外力修改物体的位置和旋转角度。
•
该物体会和其他
SKPhysicsBody
发生碰撞。
当我们运行示例代码时,会发现精灵会垂直下落并跌出屏幕底部。这是因为精灵下
方没有设置任何障碍物,在整个屏幕中仅有这个物体是接受物理模拟的。要了解如
何让一个精灵物体能够落在地上,请参见
7.3
节。
7.3
静止物体和运动物体
问题
我们需要创建一个固定物,它是静止不动的,以便其他物体能够撞在它上面。
解决方案
将
SKPhysicsBody
的
dynamic
属性设置为
false
:
let staticSprite = SKSpriteNode(color:SKColor.yellow,
size:CGSize(width: 200, height: 25))
staticSprite.position = CGPoint(x: self.frame.midX, ...