天天看點

《iOS和tvOS 2D遊戲開發教程》——第2章,第2.3節旋轉僵屍

本節書摘來自異步社群《ios和tvos 2d遊戲開發教程》一書中的第2章,第2.3節旋轉僵屍,作者 【美】raywenderlich.com教程開發組,更多章節内容可以通路雲栖社群“異步社群”公衆号檢視

2.3 旋轉僵屍

僵屍移動的很不錯,但是它總是朝着相同的方向。實際上,它是“亡靈”,但是,這個僵屍總是對什麼都好奇,它很想在移動的時候轉身到處看看。

我們已經有了一個向量指向僵屍所要朝向的方向,這就是速度向量。隻需要找出一個旋轉角度,讓僵屍朝向該方向就可以了。

再一次,把方向向量當做是直角三角形的斜邊,就可以找到這個角度,如圖2-22所示。

《iOS和tvOS 2D遊戲開發教程》——第2章,第2.3節旋轉僵屍

圖2-22

你可能還記得,三角學中所謂的正切函數,表示為:

既然有了對邊和鄰邊的長度,可以将上面的公式重寫為如下的形式,來得到需要旋轉的角度:

如果回憶不起來任何三角學的知識,也不要擔心。隻要把這當做是計算角度的一個公式就可以了,隻需要知道這些就夠了。

嘗試使用這個公式,添加如下的新的方法:

這裡用到了上面的公式。它包括很多的強制轉型,因為cgfloat在64位的機器上定義為一個double,而在32位的機器上則定義為一個float。

這能夠有效,是因為僵屍圖像本身是朝向右邊的。如果僵屍圖像是朝向螢幕上方的,還必須添加一個額外的旋轉來進行補償,因為角度0本來是指向右邊的。

現在,在update()方法的末尾調用這個新的方法。

編譯并運作,僵屍已經旋轉到面朝它移動的方向了,如圖2-23所示。

《iOS和tvOS 2D遊戲開發教程》——第2章,第2.3節旋轉僵屍

圖2-23 

恭喜你,已經讓僵屍具有了生命了!這個精靈現在在iphone和ipad上都能夠平滑地移動,可以從螢幕彈回并且會旋轉,是開始玩這個遊戲的最佳時機了。但是,我們還沒有大功告成。應該自己嘗試一些内容,以确定已經學到了知識。

繼續閱讀