cocos2d-x 3.2 |飞机大战:技能

本文介绍了使用cocos2d-x 3.2开发飞机大战游戏时,如何设计和实现各种技能,包括无敌状态和加血等效果,详细讲解了技能级别和触发机制。
摘要由CSDN通过智能技术生成

cocos2d-x 3.2|飞机大战:技能

前情提要:飞机大战第四篇 实现敌机掉落技能
如下: 新建类----->Tool
第一步:技能类
Tool.h
#include <stdio.h>
#include "cocos2d.h"
using namespace cocos2d;
class Tool:public Node
{
public:
    Sprite * sp;
    CREATE_FUNC(Tool);
    bool init();
    static Tool * newTool(int type,int x,int y);
    int tx,ty;
    int type;
    int times;
    bool dirH,dirV;
    void moveTo(int x,int y);
    void update(float t);
};
Tool.cpp
#include "Tool.h"

Tool * Tool::newTool(int type,int x,int y)
{
    Tool * nt=Tool::create();
    switch (type) {
        case 1://加血
            nt->sp=Sprite::create("hp_2.png");
            break;
        case 2://炸雷
            nt->sp=Sprite::create("hp_2.png");
            break;
        case 3://激光
            nt->sp=Sprite::create("hp_2.png");
            break;
        case 4://散弹
            nt->sp=Sprite::create("hp_2.png");
            break;
    }
    nt->type=type;
    nt->addChild(nt->sp);
    nt->moveTo(x, y);
    return nt;
}
void Tool::moveTo(int x,int y)
{
    this->sp->setPosition(Vec2(x,y));
    this->tx=x;
    this->ty=y;
}
bool Tool::init()
{
    if (!Node::init())
    {
        return false;
    }
    //计划任务 技能移动
    dirH=true;
    dirV=true;
    times=0;
    this->scheduleUpdate();
    
    return true;
}
void Tool::update(float t)
{   //移动道具 每一帧都检测其所处位置 
    if (dirH) {
        this->moveTo(tx+8, ty);
    }else
    {
        this->moveTo(tx-8, ty);
    }
    if (dirV) {
        this->moveTo(tx, ty+8);
    }else
    {
        this->moveTo(tx, ty-8);
    }
    //出了最大或者最小宽度 其方向反向
    if (tx<0 || tx>Director::getInstance()->getWinSize().width)
    {
        dirH=!dirH;
        times++;
    }
    //出了最大或者最低高度 其方向反向
    if (ty<0 || ty>Director::getInstance()->getWinSize().height)
    {
        dirV=!dirV;
        times++;
    }
    if (times>4) {
        this->removeFromParentAndCleanup(true);
    }
    
}

总结:实现敌机掉落的技能类型



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值