1. 程式人生 > >10.Direct2D 捕魚遊戲開發-魚類fish.h的封裝

10.Direct2D 捕魚遊戲開發-魚類fish.h的封裝

環境:

編輯器:VS2015

系統:win10 專業版

碰撞:aabb obb盒模型(obb採用分離軸進行判斷)

渲染:direct2d

相關知識說明:

魚的遊動:可以是一個連續的幀動畫(我們這裡採用的就是一個數組來儲存每一幀的動畫)

魚的曲線遊動:我們讓魚一直像前移動然後在移動的時候修改魚的面向角度這樣魚就會有一個非常完美的曲線遊動了又因為我們的魚在修改每一幀的顯示位置(根據儲存幀的陣列來的)從而達到一個魚遊動的效果

封裝思路:

我們給fish物件定義兩個陣列來儲存動畫資訊然後我們還應該又一個屬性來表示魚的狀態,然後就是魚的分數,死亡引數,最後還有一個魚的檢視屬性

我們通過在魚一直向前移動的時候修改魚的面向角度從而達到一個曲線遊動的目的

fish的相關說明:

主要方法有:

frameFun 每一幀呼叫的函式

moveForword 魚向前移動的函式

removeScene 移出場景的函式

changeType 修改魚顯示型別的函式

inScreen 判斷魚是不是在場景裡面

主要屬性有:

createClass 建立魚的建立例項物件

speed 魚的遊動速度

deathFrameTime 魚的死亡存活幀數

getGold 魚死亡了過後建立的金幣數量

minAngle 遊動的最小角度

maxAngle 遊動的最大角度

angleAdd 確認角度是應該增加還是應該減小

view 魚的檢視

swim 魚的游泳動畫幀資訊

death 魚的死亡動畫幀資訊

下面對主要方法說明:

frameFun 每一幀呼叫的函式 fish.cpp

在這裡我們先判斷魚的狀態是處於遊動狀態(swim)還是死亡狀態(death)

如果魚是處於死亡狀態我們就直接判斷魚在場景的存活幀(deathFrameTime)是不是小於0的如果是我們就直接移出掉魚不是的話就減一

如果處於遊動狀態 我們先呼叫魚的向前遊動然後我們就判斷魚的當前角度與最大角度和最小角度的大小關係如果魚的當前角度大於了魚的最大角度那麼魚的angleAdd就應該處於角度減小的狀態反之就是處於增加的狀態

moveForword 向前移動方法fish.cpp

還是和bullet物件是一樣的我們這裡也是通過(colObj)的極座標位移來進行修改魚的座標

removeScene 這個方法是在frame1.cpp裡面賦值給魚的 frame1.cpp

changeType 修改魚的顯示狀態 fish.cpp

我們直接將我們的檢視的動畫資訊修改為不同狀態下的動畫資訊

因為魚這裡的精靈物件是使用的動畫精靈所以我們這裡只需要賦值就可以了

inScreen 判斷魚是否在場景裡面 fish.cpp

還是和bullet物件是一樣的我們通過aabb進行一個比較

這是我們要做的目標:

專案開源地址:

遊戲開發交流群: