9.Direct2D 捕鱼游戏开发-子弹对象bullet.h的封装
环境:编辑器:VS2015系统:win10 专业版碰撞:aabb obb盒模型(obb采用分离轴进行判断)渲染:direct2d封装思路:这里我们将sprite对象当作是bullet对象的一个属性然后显示子弹的视图这样我们就可以给bullet对象扩展属性来操作这个视图从而达到子弹的一些特性调用流程我们再场景1(frame1.h)结构里面的计时器函数里面调用子弹对象的...
环境:
编辑器:VS2015
系统:win10 专业版
碰撞:aabb obb盒模型(obb采用分离轴进行判断)
渲染:direct2d
封装思路:
这里我们将sprite对象当作是bullet对象的一个属性然后显示子弹的视图这样我们就可以给bullet对象扩展属性来操作这个视图从而达到子弹的一些特性
调用流程
我们再场景1(frame1.h)结构里面的计时器函数里面调用子弹对象的相关操作
对象的相关方法说明:
changeType修改子弹显示状态的函数 (子弹分为炮弹类型和网状类型)
moveForword 让子弹向着子弹所面向的方向移动
frameFun 场景计时器每一帧调用的方法
createGold 创建金币的方法
inScreen判断子弹是不是再屏幕里面
removeScene 移出场景调用的方法
isTest 判断碰撞的方法
对象的相关属性说明:
view 显示视图的属性
bulletType 当前炮弹的显示状态
bt 显示炮弹的精灵
wang 显示网的精灵
speed 炮弹的移动速度
下面看详细的代码说明:
changeType 修改子弹显示类型的方法 bullet.cpp
在这个代码里面我们将我们的子弹对象的视图进行了修改。
moveForword 向前移动方法 bullet.cpp
在向前移动的方法里面我们先调用(colVec.h)的极坐标位移方法获取到下一个点的信息然后再将当前的子弹对象进行修改
frameFun 每一帧调用方法 bullet.cpp
先判断炮弹的显示状态根据状态进行不同的处理
如果炮弹在屏幕外就直接修改炮弹为网显示状态如果为网显示状态就直接判断网存活的帧输是不是小于0 如果是我们就调用移出场景的方法
移出场景的方法是在场景结构(frame1.h)里面写的
createGold创建金币方法 bullet.cpp
我们直接根据鱼对象的分数创建不同数量的金币对象并放入场景中
inScreen 判断子弹在不在场景里面
我们直接将我们的子弹的精灵对象和一个与屏幕宽度与高度相等的精灵传入到colObj进行判断
removeScene 移出场景的方法这个方法是在frame1.cpp里面赋值给bullet的实例对象的
这个方法就是将子弹给移出场景和绘制数组
isTest 判断子弹是否和鱼进行碰撞的方法
我们这里先判断子弹的显示状态为什么如果为wang显示状态我们就只需要在判断在碰撞的状态下鱼的死亡概率并且还要判断鱼是不是处于游动状态如果没有处于游动状态我们就不进行判断
如果子弹对象的显示状态为bt那么我们就给定一个极低的必死概率杀死鱼并将炮弹显示状态修改为wang状态
这是我们要做的目标:
项目开源地址:
https://github.com/yinhui1129754/fishing
游戏开发交流群:
859055710
更多推荐
所有评论(0)