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

  • Game Development with Swift
  • Stephen Haney
  • 288字
  • 2021-07-16 13:45:42

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:

主站蜘蛛池模板: 沽源县| 登封市| 汉阴县| 成都市| 揭东县| 连州市| 当涂县| 射阳县| 鄂尔多斯市| 南陵县| 佳木斯市| 襄垣县| 呈贡县| 成武县| 政和县| 嘉兴市| 牡丹江市| 楚雄市| 调兵山市| 抚顺市| 贡嘎县| 宁晋县| 璧山县| 苏尼特右旗| 秦安县| 当涂县| 柘城县| 类乌齐县| 将乐县| 岳阳县| 宕昌县| 铜山县| 常德市| 余江县| 水城县| 宣威市| 安达市| 南雄市| 托里县| 深州市| 开原市|