Swift4 Day86:Angry bird憤怒鳥1

Swift4 / iOS11 / 2018.03.21

Alice
Daily Swift
3 min readMar 21, 2018

--

dAngry Birds 1 — App Template

Angry Birds 2 — TileMap

放背景跟BirdTileSet.sks,建構基本地圖

Angry Birds 3 — Camera Node:遊戲鏡頭畫面移動

設定gameCamera

可以看到原本設定是aspectFill,在scaleMode的地方按著command在選擇jump to definition,可以看到鏡頭的多種選擇:fill、aspectFill、aspectFit、resizeFill

選擇鏡頭在.scaleMode = .resizeFill

原本的畫面大小
套用gameCamera之後縮小

Angry Birds 4 — Panning:拖曳移動

利用@objc func pan(sender:UIPanGestureRecognizer)跟func setupGestureRecognizers()兩個function讓gameCamera跟著手勢移動

在手勢移動時,frame的移動計算方式,+-的方式是跟拖曳的方向有關

出自:Stanford CS 193P Developing iOS 11 Apps with Swift — 5. Drawing 31:17

frame的原點在左上方(0,0),(500,35)則在右下側。

延伸閱讀資料:frame和bounds的区别

Angry Birds 5 — Camera Constraints

但是利用Panning拖曳移動時,會超出背景範圍,到黑色的背景。因此建立一個cocoa touch class選擇SKCameraNode,做客製化鏡頭。

到Angry Birds 5 — Camera Constraints的程式碼:在這

--

--