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

Improving the camera

Our camera code works well; it follows the player wherever they fly. However, we can improve the camera to enhance the flying experience. In this section, we will add two new features:

  • Zoom the camera out as Pierre Penguin flies higher, reinforcing the feeling of increasing height.
  • Suspend vertical centering when the player drops below the halfway point of the screen. This means the ground never fills too much of the screen and adds the feeling of cutting upwards into the air when Pierre flies higher and the camera starts tracking him again.

Follow these steps to implement these two improvements:

  1. In GameScene.swift, create a new variable in the GameScene class to store the center point of the screen:
          var screenCenterY:CGFloat = 0 
  2. In the didMove function, set this new variable with the calculated center of the screen's height:
            // Store the vertical center of the screen: 
    screenCenterY = self.size.height / 2 
  3. We need to rework the didSimulatePhysics function significantly. Remove the existing didSimulatePhysics function and replace it with this code:
            override func didSimulatePhysics() { 
                // Keep the camera locked at mid screen by default: 
    var cameraYPos = screenCenterY
    cam.yScale = 1 
    cam.xScale = 1 
    
                // Follow the player up if higher than half the screen: 
                if (player.position.y>screenCenterY) { 
    cameraYPos = player.position.y
                    // Scale out the camera as they go higher: 
                    let percentOfMaxHeight = (player.position.y - 
    screenCenterY) / (player.maxHeight - 
    screenCenterY) 
                    let newScale = 1 + percentOfMaxHeight
    cam.yScale = newScale
    cam.xScale = newScale
                } 
    
                // Move the camera for our adjustment: 
    self.camera!.position = CGPoint(x: player.position.x, 
                    y: cameraYPos) 
            } 

Run the project and then fly up. The world scales smaller as you gain height. The camera also now allows Pierre to dive below the center of the screen when you fly close to the ground. The following screenshot illustrates the two extremes.

Notice the smaller sprites here; Pierre flies higher and the camera zooms out:

Improving the camera

In this screenshot, the camera stops following Pierre vertically as he approaches the ground:

Improving the camera

The combined effect adds a lot of polish to the game and increases the fun of flying. Our flying mechanic feels great. The next step is to move Pierre forward through the world.

主站蜘蛛池模板: 越西县| 枝江市| 和龙市| 桑植县| 元朗区| 惠州市| 濉溪县| 昔阳县| 滦南县| 克拉玛依市| 哈巴河县| 中牟县| 云龙县| 保定市| 上思县| 扶余县| 柳州市| 墨玉县| 顺义区| 旺苍县| 昌宁县| 县级市| 辰溪县| 武夷山市| 石狮市| 邓州市| 额济纳旗| 阳曲县| 陕西省| 冷水江市| 蒙城县| 蓝山县| 固阳县| 盐城市| 宁阳县| 兴和县| 克拉玛依市| 邻水| 江山市| 安宁市| 洪洞县|