序言 最近因爲寫多了業務邏輯的軟件,讓人很煩悶啊。html
打算找點有意思的東西來研究下。算法
就這樣,我開始了SpriteKit 的深坑之旅。swift
國內SpriteKit 的資料真的是少之又少,遇到了不少問題,英語渣實在是很難受。可是一旦入手,感受真的仍是不錯的。測試
那用這個作swift 遊戲避免不了角色移動吧,移動就會須要虛擬搖桿。那如何實現呢?3d
基本介紹 1.節點 熟悉JS的同窗應該很瞭解節點這個東西,Node,在SpriteKit裏面爲SKNode,概念和JS類同,很少作解釋htm
2.精靈 在一個遊戲場景中,幾乎全部的內容都是由圖像實現的,如遊戲背景,敵人,玩家,每個圖像都被稱爲一個精靈。blog
我放棄了,東西太多了,介紹完的話,都要寫本書了,如下內容面向有基礎的童鞋遊戲
展現下Demo吧圖片
Demo 如何達到這種效果 彆着急,咱們先來看看原理 將GameScene中的場景修改尺寸,將錨點定位(0,0)it
如今生成一個圓,一個原點,錨點皆爲(100,100)
手機場景座標系 詳細座標圖 詳細錨點座標圖
大體思路講解 大家可能會以爲這個三角形要來幹嗎?彆着急,我用最簡單的語言來解釋一下。
想要移動中心點A,咱們會調用touchMove這個方法,這樣才能在你滑動的時候,得到你的觸點Position,再獎中心點A的Position設置爲觸點的Position便可將A實施移動。
如今咱們有兩種狀況 第一種 :觸點在紅色圓裏面移動
假設半徑爲50的狀況下,咱們只須要判斷觸點距離圓心的距離,是否小於50,就可斷定觸點是否在紅圓以內
第二種:觸點在紅色圈外面
這種狀況下,顯然咱們不能將中心點A移出紅圈,咱們須要將它沿着你的手指方向停在圓邊上,這是關鍵點。這時候咱們就須要利用這個三角形了。由上可知,咱們能夠經過方法獲取觸點的座標。如今咱們假設F爲你的觸點。 由此可知:
AF^2 = AC^2 + FC^2
AF/FC = AD/DB => DB = (AD * FC)/AF
AF/AC = AD/AB => AB = (AD * AC)/AF
將中心點設置爲(AB,DB),就將它沿着你的手指方向停在圓邊上了。
爲何須要這麼作呢,有人可能說畫蛇添足,通過本人測試,若是不這樣判斷,你在外面移動觸點時,中心點不會跟隨你的手指,會形成卡頓的感受。這樣的邏輯保證了,你的手指在圓外面也會跟隨你的觸點移動。
源代碼 方便起見就直接上圖片了,防止懶人直接複製黏貼
初始化界面 初始化界面 設置移動算法實現
設置移動 到此,搖桿已經實現,配合其餘精靈,就能作出多種多樣的遊戲啦 ps:(靈感來自於i.she.vc/yuanchuang/590880.html )
國內資料太少,有不足之處還望指出