游戏开发引擎Cocos2dx自定义血条及其美化之游戏开发《赵云要格斗》4Word下载.docx
- 文档编号:19451074
- 上传时间:2023-01-06
- 格式:DOCX
- 页数:11
- 大小:17.93KB
游戏开发引擎Cocos2dx自定义血条及其美化之游戏开发《赵云要格斗》4Word下载.docx
《游戏开发引擎Cocos2dx自定义血条及其美化之游戏开发《赵云要格斗》4Word下载.docx》由会员分享,可在线阅读,更多相关《游戏开发引擎Cocos2dx自定义血条及其美化之游戏开发《赵云要格斗》4Word下载.docx(11页珍藏版)》请在冰豆网上搜索。
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
#ifndef
__PROGRESSVIEW_H__
#define
#include
"
cocos2d.h"
using
namespace
cocos2d;
class
ProgressView
:
public
CCNode
{
public:
ProgressView();
//设置血条背景
void
setBackgroundTexture(const
char
*pName);
//设置血条前景
setForegroundTexture(const
//设置总血量
setTotalProgress(float
total);
//设置当前血量
setCurrentProgress(float
progress);
//得到当前血量
float
getCurrentProgress()
const;
//得到总血量
getTotalProgress()
private:
//设置前景血条显示的长度
setForegroundTextureRect(const
CCRect
&
rect);
CCSprite
*m_progressBackground;
//背景血条
*m_progressForeground;
//前景血条
m_totalProgress;
//总血量
m_currentProgress;
//当前血量
m_scale;
//放大倍数
};
#endif
实现文件ProgressView.cpp:
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
ProgressView.h"
ProgressView:
ProgressView()
m_progressBackground(NULL)
m_progressForeground(NULL)
m_totalProgress(0.0f)
m_currentProgress(0.0f)
m_scale(1.0f)
}
setBackgroundTexture(
const
*pName
)
m_progressBackground
=
CCSprite:
create(pName);
this->
addChild(m_progressBackground);
setForegroundTexture(
m_progressForeground
m_progressForeground->
setAnchorPoint(ccp(0.0f,
0.5f));
//设置锚点
setPosition(ccp(-m_progressForeground->
getContentSize().width
*
0.5f,
0));
addChild(m_progressForeground);
setTotalProgress(
total
if
(m_progressForeground
==
NULL)
{return;
m_scale
/
total;
m_totalProgress
setCurrentProgress(
progress
(progress
<
0.0f)
{progress
0.0f;
>
m_totalProgress)
m_currentProgress
progress;
rectWidth
CCPoint
from
getTextureRect().origin;
rect
CCRectMake(from.x,
from.y,
rectWidth,
getContentSize().height);
setForegroundTextureRect(rect);
setForegroundTextureRect(
setTextureRect(rect);
const
return
好了,这个血条类就定义好了,编译下没报错,可以移值了。
二、使用自定义血条类并进行美化
首先然要用到的地方,就是HelloWorldScene.h中添加头文件
然后定义成员变量:
HRocker*
rocker;
//摇杆,第一篇摇杆文章中定义的
Hero*
hero;
///精灵,<
span
style="
font-family:
Arial,
Helvetica,
sans-serif;
第一篇摇杆文章中定义的<
/span>
ControlButton*
btn;
//按钮控件变量,第二篇自定义按钮定义的
Map*
mymap;
//地图
,第三篇定义的
*m_pProgressView;
//血条
然后就在init()函数中初始化:
//设置英雄的血条
m_pProgressView
new
m_pProgressView->
setPosition(ccp(150,
450));
setScale(2.2f);
setBackgroundTexture("
xue_back.png"
);
setForegroundTexture("
xue_fore.png"
setTotalProgress(100.0f);
setCurrentProgress(100.0f);
addChild(m_pProgressView,
2);
效果:
半血
感觉好丑啊,想想再给血条加个框,再加个小头像。
将上面改为:
setCurrentProgress(50.0f);
//下面两个是为了让血条更好好看
*xuekuang=CCSprite:
create("
kuang.png"
//添加血条的框架
xuekuang->
setPosition(ccp(m_pProgressView->
getPositionX(),m_pProgressView->
getPositionY()));
*touxiang=CCSprite:
touxiang.png"
//添加英雄的左上角的小头像
touxiang->
getPositionX()-120,m_pProgressView->
addChild(touxiang,2);
addChild(xuekuang,2);
下面再来看看效果:
事实再次证明,美工是多么重要啊!
这样子明显好看多了,这时血条有了。
三、改变英雄血量
其实这里改变血量很简单了,
setCurrentProgress(改动);
这一句就可以了,那我们要怎么来验证了,我想到了一个方法,攻击一次,血条让它自己少1(初始是100);
voidHelloWorld:
update(floatdelta)函数中改动:
HelloWorld:
update(float
delta)
//判断是否按下摇杆及其类型
CCSize
visibleSize1
CCDirector:
sharedDirector()->
getVisibleSize();
//得到窗口大小
switch(rocker->
rocketDirection)
case
1:
hero->
SetAnimation("
run_animation.plist"
"
run_animation.png"
run_"
8,rocker->
rocketRun);
//"
为run_animation.png集合图片中每张图片的公共名称部分
if(hero->
getPositionX()<
=visibleSize1.width-8)//不让精灵超出右边,8可以改成你喜欢的
if(!
JudgePositona(visibleSize1)||mymap->
JudgeMap(hero,visibleSize1))
//精灵没到达窗口中间位置或者地图已经移动到边缘了,精灵才可以移动,否则只播放动画
setPosition(ccp(hero->
getPosition().x+1,hero->
getPosition().y));
//向右走
//下面是移动地图
mymap->
MoveMap(hero,visibleSize1);
break;
2:
getPosition().x,
getPosition().y+1));
//向上走
3:
getPositionX()>
=8)//不让精灵超出左边,8可以改成你喜欢的
getPosition().x-1,hero->
//向左走
4:
getPosition().x,hero->
getPosition().y-1));
//向下走
0:
StopAnimation();
//停止所有动画和运动
//判断是否出动攻击
if(btn->
isTouch)
IsAttack)//英雄没在攻击
return;
AttackAnimation("
attack1_animation.plist"
attack1_animation.png"
attack_"
6,rocker->
setCurrentProgress(m_pProgressView->
getCurrentProgress()-1);
//更改血量
每次减少1:
每次减少10:
源码下载:
Cocos2d-x自定义血条及其美化
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 赵云要格斗 游戏 开发 引擎 Cocos2dx 自定义 及其 美化 赵云要 格斗
![提示](https://static.bdocx.com/images/bang_tan.gif)