您的位置:首页 > 移动开发 > 微信开发

使用3.0实现微信打飞机——8.改变玩家技能

2014-08-21 15:31 337 查看
上篇博客添加了道具,针对于不同的道具玩家飞机应该有不同的表现,如果是UFO就应该改变发射子弹的数量,如果是炸弹玩家应该死掉,而这些逻辑的实现,首先需要进行碰撞检测,玩家飞机和道具的碰撞检测,这个碰撞检测与敌机和子弹的碰撞检测在同一个函数中,以下是相关的代码。

1
/*玩家飞机和UFO的碰撞检测*/
2
3
//判断是否添加了UFO,记得UFO要在init函数中初始化
4
if
(m_ufo != NULL)
5
{
6
auto rect = m_player->getBoundingBox();
7
auto point = m_ufo->getPosition();
8
//如何玩家和UFO碰撞到了
9
if
(rect.containsPoint(point))
10
{
11
//根据碰撞到的不同道具,做不同的处理
12
if
(m_ufo->getName() ==
"ufo1.png"
)
13
{
14
//设置子弹的名称
15
m_bulletName =
"bullet2.png"
;
16
}
17
else

if
(m_ufo->getName() ==

"ufo2.png"
)
18
{
19
m_bulletName =
"bullet1.png"
;
20
}
21
else
22
{
23
//碰到炸弹的处理和碰到敌机的处理是相同的,先放一下
24
25
}
26
//发射三发子弹,持续时间是4s
27
this
->schedule(SEL_SCHEDULE(&MainGame::addBulletByUfo),0.1f,40,0);
28
//如果碰撞检测到了,则设置这个UFO为不可见,因为移除的工作会在UFO执行完动作以后进行
29
m_ufo->setVisible(
false
);
30
//最后将成员变量设置为null
31
m_ufo = NULL;
32
}
33
//如果UFO离开了屏幕就设置为null
34
if
(m_ufo != NULL && point.y < -m_ufo->getContentSize().height/2)
35
{
36
m_ufo = NULL;
37
}
38
}
m_ufo是新添加的一个成员变量,道具的出现是每10s出现一次,也就是说在当前的主场景中只可能有一种道具的存在,所以用成员变量保存起来,方便判断,如果道具被玩家捕捉到或者是移出了屏幕这个引用就应该没有了,所以设置为null,关于获取道具名字的函数是新添加上去的,接下来是添加子弹的函数了。

1
//当玩家飞机和UFO碰撞以后添加子弹
2
void
MainGame::addBulletByUfo(
float

tm
)
3
{
4
//创建双发子弹
5
auto bullet1 = Bullet::create();
6
bullet1->initBullet(m_bulletName);
7
auto bullet2 = Bullet::create();
8
bullet2->initBullet(m_bulletName);
9
10
//设置位置
11
auto point1 = Point(m_player->getPositionX()-23,
12
m_player->getPositionY()+m_player->getContentSize().height/2);
13
bullet1->setPosition(point1);
14
auto point2 = Point(m_player->getPositionX()+23,
15
m_player->getPositionY()+m_player->getContentSize().height/2);
16
bullet2->setPosition(point2);
17
18
//添加子弹
19
this
->addChild(bullet1);
20
this
->addChild(bullet2);
21
//将子弹添加到管理器中
22
auto & vector = Manager::getInstance()->getBulletVector();
23
vector.pushBack(bullet1);
24
vector.pushBack(bullet2);
25
}




版权声明:本文由(
小塔 )原创,转载请保留文章出处!

本文链接:http://www.zaojiahua.com/change-player-skills.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: