跑酷可以加什么fifa花式动作作?

cocos2d-x 3.0游戏实例学习笔记 《跑酷》第四步--地图循环&主角添加动作
这一步当中,我们主要完成以下功能:
1.地图的无限滚动---让主角看起来真的是在跑动
2.给主角添加Jump跳跃和crouch下蹲动作
那么首先来让背景滚动起来,在PlayScene.h中添加:
//初始化背景
void initBG();
//用update函数让地图滚动
virtual void update(float dt);
//背景精灵
cocos2d::Sprite* bgSprite1;
cocos2d::Sprite* bgSprite2;
cocos2d::Sprite* groundSprite1;
cocos2d::Sprite* groundSprite2;然后.Cpp文件中:
void PlayScene::initBG(){
auto visibleSize = Director::getInstance()->getVisibleSize();
bgSprite1 = Sprite::create("Map00.png");
bgSprite1->setPosition(visibleSize.width/2,visibleSize.height/2);
this->addChild(bgSprite1);
groundSprite1 = Sprite::create("Ground00.png");
groundSprite1->setPosition(visibleSize.width/2,groundSprite1->getContentSize().height/2);
this->addChild(groundSprite1);
bgSprite2 = Sprite::create("Map01.png");
bgSprite2->setPosition(bgSprite1->getContentSize().width+visibleSize.width/2,visibleSize.height/2);
this->addChild(bgSprite2);
groundSprite2 = Sprite::create("Ground01.png");
groundSprite2->setPosition(bgSprite1->getContentSize().width+visibleSize.width/2,groundSprite2->getContentSize().height/2);
this->addChild(groundSprite2);
void PlayScene::update(float dt){
int posX1 = bgSprite1->getPositionX();
int posX2 = bgSprite2->getPositionX();
posX1 -= 2;
posX2 -= 2;
auto mapSize = bgSprite1->getContentSize();
if(posX1 < -mapSize.width/2){
posX1 = mapSize.width + mapSize.width/2;
posX2 = mapSize.width/2;
if(posX2 setPositionX(posX1);
bgSprite2->setPositionX(posX2);
groundSprite1->setPositionX(posX1);
groundSprite2->setPositionX(posX2);
完成这些,我们就在PlayScene中的init函数:
bool PlayScene::init(){
if(!Layer::init()){
SimpleAudioEngine::getInstance()->playBackgroundMusic("background.mp3",true);
initPhysicWorld();
//开启update
this->scheduleUpdate();
m_runner = Runner::create();
m_runner->setPosition(runner_posX,ground_hight+m_runner->getRunJumpSize().height/2);
m_runner->Run();
this->addChild(m_runner);
这里要注意:我们应该把背景的初始化放置在主角创建的前面,因为先创建主角,就等于在屏幕上先画出主角,然后再画背景,那么主角就会被挡住。当然,这里也可以设置绘画的层次,那么运行如下图:
vcD4KPHA+1eLA78jOyLuyu8rHILavzKy1xL3YzbyjrMv50tS/tLK7s/a12M28ufa2r7XE0Ke5+6Osx/PWuLW8oaOho6GjPC9wPgo8cD48YnI+CjwvcD4KPHA+z8LD5sC0zqrW973HzOrF3LavtcTG5Mv7tq/X96O6PC9wPgo8cD7U2lJ1bm5lcrXEIGluaXRBY3Rpb25TZXS6r8r91tCjrM7Sw8fPyMztvNPG5Mv7tcTWobavu62jujwvcD4KPHA+PHByZSBjbGFzcz0="brush:">void Runer::initActionSet(SpriteFrameCache* frameCache){
SpriteFrame* frame = NULL;
//3.0中改用vector 而不是用Array
VectorframeV
/* 1.----------------加载跑动的Animation-----------------*/
for(int i = 0; i spriteFrameByName(String::createWithFormat("runner%d.png",i)->getCString());
frameVector.pushBack(frame);
//用vector里面的SpriteFrame列表创建Animation
以及设置一些参数
auto run_animation = Animation::createWithSpriteFrames(frameVector,0.1f,-1);
//将跑动的 Animation 取名为 running
AnimationCache::getInstance()->addAnimation(run_animation,"running");
/*4------------------加载跳跃过程中上升的动画---------------------------*/
frameVector.clear();
for(int i = 0; i spriteFrameByName(String::createWithFormat("runnerJumpUp%d.png",i)->getCString());
frameVector.pushBack(frame);
auto jumpUp_animation = Animation::createWithSpriteFrames(frameVector,0.2);//不设置无限循环
AnimationCache::getInstance()->addAnimation(jumpUp_animation,"jumpUp");
/*------------------加载跳跃过程中下落的动画----------------------------*/
frameVector.clear();
for(int i = 0; i spriteFrameByName(String::createWithFormat("runnerJumpDown%d.png",i)->getCString());
frameVector.pushBack(frame);
auto jumpDown_animation = Animation::createWithSpriteFrames(frameVector,0.3);
AnimationCache::getInstance()->addAnimation(jumpDown_animation,"jumpDown");
/*------------------加载下蹲-------------------------------------------*/
frameVector.clear();
frame = frameCache->spriteFrameByName("runnerCrouch0.png");
frameVector.pushBack(frame);
auto crouch_animation = Animation::createWithSpriteFrames(frameVector,0.3);//不设置无限循环
AnimationCache::getInstance()->addAnimation(crouch_animation,"crouch");
}添加Jump,Crouch函数,以及update函数:
void Jump();
void Crouch();
virtual void update(float dt);实现:
void Runner::Jump(){
//只有在跑动时才能起跳
if(m_state == running){
m_state = jumpUp;
auto mass = this->getPhysicsBody()->getMass()*150;// 力大小
this->getPhysicsBody()->applyImpulse(Vect(0,mass));
m_runner->stopAllActions();
doAction("jumpUp");
void Runner::update(float dt){
auto vel = this->getPhysicsBody()->getVelocity();
if(m_state == jumpUp){
if(vel.y stopAllActions();
doAction("jumpDown");
if(m_state == jumpDown){
CCLOG("%f",vel.y);
//不应该是 等于 0
if(vel.y > 0){
m_runner->stopAllActions();
doAction("running");
void Runner::Crouch(){
//只能在跑动的时候蹲下
if(m_state == running){
m_runner->stopAllActions();
initBody();
doAction("crouch");
这里的Jump 我们就给主角一个向上的力,并且这个力是瞬时力,这样主角就会上升,但是加速度向下,慢慢到达最高点然后 由于重力而下落;
这里的update函数用来做这个事: 当主角向上跳到最高点的时候,就应该下落,切换下落状态,执行下落帧动画,这里是借鉴了前辈的,首先在JumpUp状态下,如果y速度小于 0.1 那么我们认为它到了最高点,切换下落。在JumpDown状态下,y速度大于0,我们就认为它到达了地面,切换跑动状态。 前辈的判断中是 vel.y == 0 过程中我调试了,因为速度是float,== 0这种判断很不精确,然后我的主角就一直处于下落的那个动作状态啦。。。。。
Ok到这里,我们主角的动作都准备好了,下面就开始添加 按钮,来控制主角执行这些动作啦!!
个人愚昧观点,欢迎指正与讨论(好像也没人会和我讨论,,哎)
(window.slotbydup=window.slotbydup || []).push({
id: '2467140',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467141',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467143',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467148',
container: s,
size: '1000,90',
display: 'inlay-fix'跑酷牛人达米尔最强特技合集 危险动作切勿模仿 - null - 腾讯视频
看视频、登录、分享...多种方式都可以获得V币哦!
登录之后可以领V币换礼品喔~
专辑总数据(共61个视频)
今日播放量:127
总播放量:574.6万
通用代码支持视频在iPhone/iPad/Android上播放
扫码分享到微信
扫描二维码随身看视频
立即下载腾讯视频APP
请根据您的设备选择下载版本
<a href="javascript:void(0);"
class="btn_next "
r-on="{click: onNext}"
r-show="{page &#xe620;我是个刚入门的跑酷菜鸟,求高手给我介绍一下所有跑酷的基本动作及名称,还有啥时候能上街锻炼_百度知道跑酷动作名称_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
评价文档:
跑酷动作名称
上传于||文档简介
&&跑&#8203;酷&#8203;动&#8203;作&#8203;名&#8203;称
大小:3.12KB
登录百度文库,专享文档复制特权,财富值每天免费拿!
你可能喜欢

我要回帖

更多关于 fifaonline3花式动作 的文章

 

随机推荐