Cocos2d-x扣血飘字特效用完你就消失--之游戏开发
来源:互联网 发布:赵公明 知乎 编辑:程序博客网 时间:2024/06/11 20:29
本文这里将要实现的一个功能是怪物受伤血量减少时,会出现一个扣了多少血量的数字从怪物中间飘到头顶,然后消失。然后有两种方式,一种是每次都扣同样的数字,一种是每次在一定范围内的数字随机,本文上接博主的文章www.2cto.com
cocos2d-x版本:2.2.5
工程环境:windows7+VS2010
打开方式:将工程放在cocos2d-x安装目录下的project文件夹下用VS打开
目录
一、自定扣血飘字特效类FlyWord
二、使用方法
三、思路总结
一、自定扣血飘字特效类FlyWord
其实这里这里就是一个CCLabelTTF的类型来执行动画CCMoveBy的一个过程
下面来看看我自己定义,头文件FlyWord.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#ifndef __FLYWORD_H__
#define __FLYWORD_H__
#include cocos2d.h
#include cocos-ext.h
USING_NS_CC;
USING_NS_CC_EXT;
class
FlyWord:
public
CCNode{
public
:
//创建文字飘动,create 和 init 是连在一起的,调用create的时候必然会调用init
static
FlyWord* create(
const
char
*word,
const
int
fontSize,CCPoint begin);
//init方法接受3个参数,分别是飘入的字符串,字体大小,从哪里开始飘入,init方法的作用主要是初始化FloatWord内置的Label
bool init(
const
char
*word,
const
int
fontSize,CCPoint begin);
//文字从下到上飘动
void
Flying();
//文字飘动后删除所有对象
void
Flyend();
private
:
int
_fontSize;
//字体大小
CCPoint _begin;
//要添加到的怪物的中心点
CCLabelTTF* m_plabel;
//字体类型
};
#endif
// __FLYWORD_H__
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
#include FlyWord.h
FlyWord* FlyWord::create(
const
char
*word,
const
int
fontSize,CCPoint begin){
FlyWord* ret =
new
FlyWord();
//这样写更安全一些
if
(ret && ret->init(word,fontSize,begin)){
ret->autorelease();
return
ret;
}
CC_SAFE_DELETE(ret);
//安全删除
return
nullptr;
}
bool FlyWord::init(
const
char
*word,
const
int
fontSize,CCPoint begin){
if
(!CCNode::init()){
return
false
;
}
//初始化
_begin = begin;
m_plabel = CCLabelTTF::create(word,Marker Felt,fontSize);
//设置颜色
ccColor3B RGB;
RGB.r=
255
;
RGB.g=
0
;
RGB.b=
0
;
m_plabel->setColor(RGB);
this
->addChild(m_plabel);
this
->setPosition(ccp(begin.x,begin.y));
//初始化完成后就开始飘字了
Flying();
return
true
;
}
//文字从下到上飘动
void
FlyWord::Flying()
{
CCMoveBy* moveact=CCMoveBy::create(
0
.5f,CCPointMake(
0
,
70
));
//0.5秒向上移动70
//创建回调动作,文字飘动完后
CCCallFunc* callFunc=CCCallFunc::create(
this
,callfunc_selector(FlyWord::Flyend));
//创建连续动作
CCActionInterval* act=CCSequence::create(moveact,callFunc,NULL);
//setVisible(true);
this
->runAction(act);
}
void
FlyWord::Flyend()
{
//完成之后把该对象从内存中删除掉
this
->removeAllChildrenWithCleanup(
true
);
this
->removeFromParentAndCleanup(
true
);
}
二、使用方法
在Monster.h或Monster.cpp中添加头文件#include FlyWord.h
下面是每次随机产生10-30的一个要减少的血量,这也是游戏中比较常见的,怪物每次的受伤量可能不一样。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
//受伤动画结束
void
Monster::HurtEnd()
{
IsHurt=
false
;
//产生10-30一个随机掉血的量
srand((UINT)GetCurrentTime());
int
x = rand()%
30
+
10
;
//转成字符
char
szName[
100
] = {
0
};
sprintf(szName,-%d,x);
//怪物掉血
Monster_xue->setCurrentProgress(Monster_xue->getCurrentProgress()-x);
//扣血飘字
FlyWord *wen_zi=FlyWord::create(szName,
30
,CCPointMake(
0
,
0
));
//放在当前怪物的(0,0)位置,这里的(0,0)是它的中心,具体可以看看锚点
this
->addChild(wen_zi,
2
);
if
(Monster_xue->getCurrentProgress()==
0
)
{
//播放怪物死亡动画
DeadAnimation(monster_dead,
2
,MonsterDirecton);
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
//受伤动画结束
void
Monster::HurtEnd()
{
IsHurt=
false
;
////产生10-30一个随机掉血的量
//srand((UINT)GetCurrentTime());
//int x = rand()%30+10;
//转成字符
char
szName[
100
] = {
0
};
sprintf(szName,-%d,
10
);
//怪物掉血
Monster_xue->setCurrentProgress(Monster_xue->getCurrentProgress()-
10
);
//扣血飘字
FlyWord *wen_zi=FlyWord::create(szName,
30
,CCPointMake(
0
,
0
));
//放在当前怪物的(0,0)位置,这里的(0,0)是它的中心,具体可以看看锚点
this
->addChild(wen_zi,
2
);
if
(Monster_xue->getCurrentProgress()==
0
)
{
//播放怪物死亡动画
DeadAnimation(monster_dead,
2
,MonsterDirecton);
}
}
1.10-30随机掉血。文字从下到上
2.固定掉血,文字从下到上
三、思路总结
主要是这个文字类的设计,这里我的思路的得到英雄的位置,然后CCLabelTTF对像就从英雄的中间位置开始向上移动,执行动画CCMoveBy的一个过程移动写成后它就自己释放了(removeAllChildrenWithCleanup(true)和removeFromParentAndCleanup(true);)。用完一次就扔了,然后等到怪物掉血了,再用,用完再扔,多方便~游戏开发过程中有时思路真的很重要啊! 0 0
- Cocos2d-x扣血飘字特效用完你就消失--之游戏开发《赵云要格斗》(8)
- Cocos2d-x扣血飘字特效用完你就消失--之游戏开发
- 开发cocos2d-x 游戏 实战篇(6)之 绚丽的魔法特效
- Cocos2d-X游戏开发之3D晃动特效参数详解
- 21、Cocos2dx 3.0游戏开发找小三之Cocos2d-x中的动画与场景特效
- [cocos2d-x][游戏开发]通过cocos2d-x实现简易飞机大战 10.游戏界面 特效
- 跟着BOY学习开发cocos2d-x 游戏 实战篇(6)之 游戏主界面 -----绚丽的魔法特效
- 跟着BOY学习开发cocos2d-x 游戏 实战篇(6)之 游戏主界面 -----绚丽的魔法特效
- cocos2d-x游戏引擎开发之流程
- Cocos2d-x游戏开发之图片元素
- cocos2d-x游戏开发之二
- Cocos2d-X游戏开发之CCTouchDelegate
- cocos2d-x游戏开发之三
- Cocos2d-x游戏开发之CC_SAFE_RELEASE
- Cocos2d-x游戏开发之随机数使用
- Cocos2d-x游戏开发之音效使用
- Cocos2d-x游戏开发之Lua
- Cocos2d-x游戏开发之jsoncppdemo
- Head First PHP&MySQL学习笔记(六)
- 日志系统的搭建(collectd + logstash + influxdb)
- JAVA 设计模式之单例模式
- C++程序设计必知:友元
- Vim使用技巧
- Cocos2d-x扣血飘字特效用完你就消失--之游戏开发
- hostapd源代码分析(一):网络接口和BSS的初始化
- POJ2386 Lake Counting 图DFS
- 高效使用你的Xcode
- cocos2dx 3.2 触摸机制
- init.rc的执行顺序
- java编程思想-异常处理-学习摘要
- key-value数据库
- poj3233矩阵的幂的和