2019年6月26日 星期三

接球遊戲

接球遊戲
介紹 : 
        透過手指與視訊擷取裝置之間的互動,來控制籃子左右移動,以接住上方掉落下來的物品(如圖1)
圖1 - 用手指控制籃子移動,來接住上方的球。

        為了增加遊戲難度,掉落下來的物品分為兩大類(球、炸彈),接到可以提高分數,反之,接到炸彈則會扣除分數;且球的部分也分為兩大類(藍球、特殊球),藍球是基本球,只會依照固定速度掉落,而特殊球在每次移動時都會變更速度,產生變速球的感覺,使玩家更難接到球;球的部分還有一個特殊設計,球的移動方式是隨機左右移動,而不是常見的垂直掉落,且當兩球彼此碰觸時,球還會互相反彈,以此增加遊戲的趣味性。

        
        為了滿足想要挑戰困難模式的玩家,另外設計關卡難度(如圖2)新手模式(Easy)中,物品掉落速度都較慢,且產生物品的速度也偏低,讓新手可以輕鬆的接到正確的物品,而在地獄模式(Hell)中,物品掉落速度大幅提升,讓高手可以更享受遊戲

圖2 - 可自行選擇遊戲難度
功能 :

1. 控制籃子左右移動 : 

膚色偵測計算其中心點(所有膚色pixel其座標之和 / 所有膚色pixel個數和),
將籃子的中心點移到膚色偵測的中心點,以此方式實現籃子的操控。


2. 的左右移動 :


每個球都多一個方向變數,若此變數為"1"代表每次移動的值為正,也就是說球會往右邊移動,反之,變數為"-1"代表每次移動的值為負,也就是說球會往左移動

假設delta為方向變數,d為每次移動的距離,(x, y)為目前球的座標,則球的新座標為(x + d * delta , y)。

3. 球與球之間的碰撞 :

當兩個球彼此重疊時,則將兩球的方向變數都乘上"-1"即可。

假設delta為方向變數,當球碰撞時,新的方向變數為delta*-1,下次球計算新座標時,就會往反方向進行移動。

4. 其他 : 

接球 : 當籃子與物品彼此重疊時,代表接球成功。

變速球 : 每次移動後亂數取得新的移動距離即可。

設置關卡難度 : 調整放球頻率(若frame為N時,新增一個物品,則調整N即可)與依照難度設定球的速度(難度越高,球速越快)即可。


製作上碰到的問題 : 

物品移動速度太快,使移動感覺就像瞬間消失一樣,因此設計高難度模式時,還是要適當調整速度。

有時候接球判定會怪怪的,明明看到的物件與籃子已經重疊了,但是卻沒有正確判斷已成功接到球,但發生機率不太大,就不特地去修bug了。

成果 :










沒有留言: