9.Direct2D 捕鱼游戏开发-子弹对象bullet.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
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值