本文主要是介绍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进行一个比较
这是我们要做的目标:
项目开源地址:
https://github.com/yinhui1129754/fishing
游戏开发交流群:
859055710
这篇关于10.Direct2D 捕鱼游戏开发-鱼类fish.h的封装的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!