官术网_书友最值得收藏!

Exploring the physics system

SpriteKit simulates physics with physics bodies. We attach physics bodies to all the nodes that need physics computations. We will set up a quick example before exploring all of the details.

Dropping like flies

Our bees need to be part of the physics simulation, so we will add physics bodies to their nodes. Open your Bee.swift file and locate the spawn function. Add the following code at the bottom of the function:

// Attach a physics body, shaped like a circle
// and sized roughly to our bee.
self.physicsBody = SKPhysicsBody(circleOfRadius: size.width / 2)

It is that easy to add a node to the physics simulation. Run the project. You will see our three Bee instances drop off the screen. They are now subject to gravity, which is on by default.

Solidifying the ground

We want the ground to catch falling game objects. We can give the ground its own physics body so the physics simulation can stop the bees from falling through it. Open your Ground.swift file, locate the spawn function, and then add this code at the bottom of the function:

// Draw an edge physics body along the top of the ground node.
// Note: physics body positions are relative to their nodes.
// The top left of the node is X: 0, Y: 0, given our anchor point.
// The top right of the node is X: size.width, Y: 0
let pointTopRight = CGPoint(x: size.width, y: 0)
self.physicsBody = SKPhysicsBody(edgeFromPoint: CGPointZero, 
    toPoint: pointTopRight)

Run the project. The bees will now quickly drop and then stop once they collide with the ground. Notice how bees that fall farther bounce more energetically. After the bees land, your simulator will look like this:

主站蜘蛛池模板: 射洪县| 鄱阳县| 武隆县| 马山县| 海城市| 蒙自县| 古交市| 桐城市| 广南县| 增城市| 布尔津县| 枣阳市| 若尔盖县| 育儿| 涿鹿县| 康平县| 太谷县| 延津县| 广汉市| 西乡县| 新晃| 子洲县| 谢通门县| 宜章县| 鸡西市| 安图县| 五峰| 紫云| 团风县| 浦城县| 北票市| 金秀| 惠东县| 五峰| 莲花县| 静宁县| 凤台县| 陇南市| 武义县| 富锦市| 双牌县|