当前位置: 首页 > news >正文

北京市昌平区社会建设网站/设计培训班学费一般多少

北京市昌平区社会建设网站,设计培训班学费一般多少,域名那个网站最靠谱,省技能大赛网站开发方案在2d游戏中,如何对不需要的动画子画面进行自动隐藏或删除?例如,当一个爆炸子画面的帧动画结束后,需要对此子画面进行删除操作。另外对此前的游戏引擎中,除了对边界动作为BA_DIE的子画面可以对其删除外,还没…

在2d游戏中,如何对不需要的动画子画面进行自动隐藏或删除?例如,当一个爆炸子画面的帧动画结束后,需要对此子画面进行删除操作。另外对此前的游戏引擎中,除了对边界动作为BA_DIE的子画面可以对其删除外,还没有提供一个在一些特定时刻需对子画面对象进行删除操作的方法,比如碰撞时需要删除互相碰撞的两个子画面。

首先向Sprite.h中添加2个成员变量。

  1.   BOOL          m_bDying;     //标记一个子画面是否删除
  2.   BOOL          m_bOneCycle;  //标记是否显示所有帧之后删除子画面

Sprite()构造函数对其初始化

 

  1.   m_bDying = FALSE;
  2.   m_bOneCycle = FALSE;

给出一个访问方法,这个方法是删除任何子画面的一种简单有效的方法。

  1.   void                  Kill()      { m_bDying = TRUE; };            //任何子画面对象调用此方法,都会对删除该子画面做好准备
  1. //Sprite.cpp
  2. SPRITEACTION Sprite::Update()
  3. {
  4.   // 查看是否需要删除子画面
  5.   if (m_bDying)
  6.     return SA_KILL;
  7.   // Update the frame
  8.   UpdateFrame();
  9.   ...
  10. }

在对子画面进行更新时,若子画面已经调用过Kill()方法,则返回子画面的SA_KILL行为,在GameEngine.cpp中会做出相应的删除子画面操作,该操作已经在前面的引擎中给出,这里不再赘述。

另外一种情况是子画面在一次循环绘制帧动画后自动消失。修改代码如下:

 

  1. //Sprite.h
  2. inline void Sprite::UpdateFrame()
  3. {
  4.   if ((m_iFrameDelay >= 0) && (--m_iFrameTrigger <= 0))
  5.   {
  6.     // Reset the frame trigger;
  7.     m_iFrameTrigger = m_iFrameDelay;
  8.     // Increment the frame
  9.     if (++m_iCurFrame >= m_iNumFrames)
  10.     {
  11.       // If it's a one-cycle frame animation, kill the sprite
  12.       if (m_bOneCycle)
  13.         m_bDying = TRUE;
  14.       else
  15.         m_iCurFrame = 0;
  16.     }
  17.   }
  18. }

成员变量m_bOneCycle在SetNumFrames()方法中设置

  1. //Sprite.h
  2. inline void Sprite::SetNumFrames(int iNumFrames, BOOL bOneCycle)
  3. {
  4.   ...
  5.   m_bOneCycle = bOneCycle;
  6.   ...
  7. }

该方法的声明修改如下:

  1.   void    SetNumFrames(int iNumFrames, BOOL bOneCycle = FALSE);

对其余须设置帧数的方法没有影响,只对需要一次循环后消失的子画面有效,传入的第2个参数为TRUE即可。

最后新增1个游戏函数:

  1. //GameEngine.h
  2. void SpriteDying(Sprite* pSpriteDying);   //新增游戏函数

在对子画面删除前调用它,为什么要这样做呢?可以看作是破坏子画面的后果。比如当导弹子画面撞上行星子画面,行星子画面消失后会产生爆炸声及爆炸子画面,所以在这个函数中就可以进行这些操作。

以下是调用:

  1. //GameEngine.cpp
  2. void GameEngine::UpdateSprites()
  3. {
  4.     ...
  5.     if (saSpriteAction & SA_KILL)
  6.     {
  7.       // Notify the game that the sprite is dying
  8.       SpriteDying(*siSprite);
  9.       // Kill the sprite
  10.       delete (*siSprite);
  11.       m_vSprites.erase(siSprite);
  12.       siSprite--;
  13.       continue;
  14.     }
  15.     ...
  16. }

定义该函数的操作在特定的游戏代码中。

 

http://www.jmfq.cn/news/5107465.html

相关文章:

  • 广州app网站建设/宁波谷歌seo推广
  • 网站建设与管理资料下载/百度问一问付费咨询
  • 建筑设计院/提高seo排名
  • 网站是怎么盈利的/模板建站和开发网站区别
  • 德化规划与建设局网站/抖音优化公司
  • 做网站开发怎么接单/百度推广登陆平台登录
  • 有回定ip怎么做网站/网络销售 市场推广
  • 自己做网站除了域名还要买什么/网站联盟营销
  • 电子商务网站建设的概要设计/百度网址提交入口平台
  • 贵州网站开发公司/网络营销成功的案例及其原因
  • 一家只做正品的网站/品牌宣传策略有哪些
  • 网站建设所需物资/关键词收录查询工具
  • 牛二网站建设/网站运营包括哪些内容
  • 网站开发公司创业策划/济南网络推广网络营销
  • 中国最近军事新闻视频/seo规则
  • seo做得好的企业网站/营销活动策划方案
  • 海南网站搭建/石家庄百度快照优化
  • 素材网站的素材可以商用吗/百度统计代码安装位置
  • 监控摄像机网站建设/深圳百度百科
  • 鲅鱼圈网站开发/企业课程培训
  • 网站建设优化哪家好/推广普通话手抄报模板可打印
  • 做网站建设费用预算/怎样申请网站注册
  • 做电影资源网站有哪些内容/seo兼职外包
  • 向网站服务器上传网页文件下载/广告策划书
  • 可信网站认证有必要吗/免费的短视频app大全下载
  • 野望是什么意思/衡阳seo外包
  • 常见的网站建设技术/广告推广软文案例
  • 做网站前台步骤/爱链接网如何使用
  • 网站优化预算/seo优化行业
  • html5做动态网站建设/北京seo地址