cocos2d-x-3.0 alpha1与C++11练习五:飞镖忍者,如何检测碰撞

来源:未知 责任编辑:责任编辑 发表时间:2014-01-20 07:51 点击:
英雄现在可以发射子弹了,但仅仅只是装饰而已,如何才能杀掉怪物呢?将依碰撞检测来实现这一效果。 p> 

p>1,缓存怪物与子弹

p>首先,跟踪怪物和子弹是必需的。在游戏中,我们为这两种精灵加以不同的tag来区分它们。当tag=1时,表示这是怪物,而tag=2时,则表示这为子弹。由于在CCNode里面有m_nTag这个成员变量,并且有setTag和getTag方法,因此CCSprite就继承了这些方法,我们可以利用之。

p> 

p>在HelloWorldScene.h中,把以下两个成员变量加入到HelloWorld下,这两个成员变量用于缓存现有的怪物和子弹:

p> 

p> 

p>protected:

p>    cocos2d::Array *_targets;

p>    cocos2d::Array *_projectiles;

p> 

p> 

p>在HelloWorldScene.h中,声明构造函数与析构函数:

p> 

p> 

p>HelloWorld();

p>~HelloWorld();

p>接着,需要在init中初始化这两个Array变量:

p> 

p> 

p>... 

p>    this->_targets = Array::create();

p>    this->_projectiles = Array::create();

p>...

p>  

p> 

p>之后,在构造函数中初始化这两个变量,并在析构函数中release 它们。

p> 

p> 

p> 

p>HelloWorld::HelloWorld(){

p>    _targets = NULL;

p>    _projectiles = NULL;

p>}

p>HelloWorld::~HelloWorld(){

p>    CC_SAFE_RELEASE_NULL(_targets);

p>    CC_SAFE_RELEASE_NULL(_projectiles);

p>}

p> 

p> 

p>现在可以修改addTarget(),把新目标添加到目标数组中,并设置其tag为1,并在lambda中作相应逻辑移除:

p> 

p> 

p>...

p>    FiniteTimeAction *actionMoveDone = CallFuncN::create(

p>                                                  [this](Node *sender)->void{

p>                                                      //std::cout << "remove target" << std::endl;

p>                                                      <span style="color: #ff6600;">this->removeChild(sender);

p>                                                      _targets->removeObject(sender);</span>

p>                                                  });

p>    target->runAction(Sequence::create(actionMove,actionMoveDone, NULL));

p>     

p>    <span style="color: #ff6600;">target->setTag(1);

p>    _targets->addObject(target);</span><br>...
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
用户名: 验证码:点击我更换图片
最新评论 更多>>

推荐热点

  • cocos2d-x学习笔记(19)--label 、label atlas
  • cocos2d-x学习笔记(23)--地图的使用3--CCTMXLayer
  • Cocos2d-x学习(一):HelloWorld
  • cocos2dx在xcode下开发,编译到android上(2)
  • cocos2d 设置屏幕默认方向
  • Cocos2d-x 2.0 之 Actions “三板斧” 之一
  • cocos2d-x学习笔记(22)--地图的使用2(TMX) --Z-Order、AnchorPoi
  • cocos2d-x学习笔记(18)--游戏打包(windows平台)
  • cocos2d-x学习笔记(16)--spritesheet(精灵表单)
网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
Copyright © 2008-2015 计算机技术学习交流网. 版权所有

豫ICP备11007008号-1