[xcode] 相機 動畫 模擬pokemon go

最近很夯的Pokemon go,遊戲內容是玩家要實際在地圖上行走,然後可以捕獲神奇寶貝

,由於捕獲的畫面,啟動了相機辨識呈現VR影像,另外也有結合陀螺儀去做方位,

所以就簡單的來介紹一下相機的使用方式,順便簡單的模擬一下pokemon的畫面。

完成會如下面這樣,這裡跟pokemon go 不同的是採用的是2d圖檔呈現而已,

pokemon go使用的是Unity去建立體模型。







未碰觸寶貝球時候,會有跳動旋轉效果。


拖拉寶貝球,可以移動。



拋物線路徑並且縮小圖檔,接著將人像縮小,完成捕獲的動作。



viewcontroller.h

arrayball 陣列,用來放寶貝球旋轉圖檔檔名。
button 寶貝球按鈕。
viewball 寶貝球動畫圖。
ani 計時器
poke 被捕獲的圖檔
name 顯示圖檔資訊

下面的session ,videoinput,stillimageoutput,previewlayer,camerashowview
都是用來啟動相機的。


viewcontroller.m

啟動相機,底下這一長串,session先初始化。
接下來videoinput 設定為後方的鏡頭
然後設定stillimageoutput 。
接著將videoinput 何stillimageoutput加入到session中
接著就是將鏡頭的畫面放到camerashowview 中顯示並且加到畫面中。



arrayball 放入圖檔檔名 用來呈現動畫

name 為顯示資訊 

poke 為捕獲的圖檔

arrayimageball 為圖檔陣列,使用一個迴圈將arrayball的檔案做成uiimage

viewball 設定動畫陣列,然後設定時間。

button 寶貝球的初始狀態按鈕,並且把剛剛的viewball 加到button中。

ani 往上拋的動畫,每6秒重複一次。



每6秒重複一次的往上拋球動作,播放viewball 轉動動畫,接著執行往上拋當完成的時候

執行落下的動作,當落下完成停止viewball動畫。



接著用來判斷 是否有觸碰

touchesbegan
當觸碰的時候 將ani計時器停止。

touchesmoved
拖移將寶貝球移動到畫面的位置。


touchesended
執行捕獲的動畫。



這裡的ani 跟ani計時器不同,不要搞混了。

啟動viewball 旋轉的動畫,並且設定拋物線移動,然後縮小寶貝球。



這裡是動畫的delegate 用來判斷上面的拋物線是否執行完畢。

當執行完畢就將按鈕圖案換成寶貝球開啟的圖檔,接著將捕獲的圖檔做縮小並且移動。

當捕獲圖檔完成動畫,就可以將捕獲圖檔隱藏,接著把按鈕換回一般的寶貝球圖檔。

開啟圖檔
正常


以下為旋轉








捕獲的圖檔,是誰就不解釋惹。


算是一個比較復合型的練習範例,使用到相機,動畫,圖檔移動等等。

不過相機單純只有啟動,並沒有任何的後續處理,像是影像的判斷或者拍照儲存照片,

如果要做到像是pokemon go當中的拋擲碰撞與物理運算,還是需要繪圖引擎來做開發。

沒有留言:

張貼留言