cocos2dx update跳躍函數

在update函數中寫跳躍函數使主角沒幀跳躍一小段位移 可以讓跳躍動作看起來更加的自然 加入重力加速度等變量 運動更合理

首先在主角的初始化代碼中進行初始起跳速度和重力加速的初始化(PS.重力加速度和初始速度不能用現實世界中的標準進行初始化)

//這段代碼中設置了主角的起跳速度m_speedY 下落速度m_speedfall 重力加速度 m_speedGrivaty 並且調用了update函數this->scheduleUpdate();


bool Hero::init()

{   m_speedfall=0;

 m_speedGrivaty=-500.0f;

 m_speedY=250.0f;

 m_isJumping=false;

 this->scheduleUpdate();

 return true;

}

//這段代碼位於update函數中 功能是主角的相關位移 運用了運動公式 對位移和速度變化的計算 然後不斷重置主角的位置

if(myHero->m_isJumping==true)

 {  

 

  auto changeY=myHero->m_speedY*data+(1/2)*myHero->m_speedGrivaty*data*data;

  myHero->m_speedY=myHero->m_speedY+myHero->m_speedGrivaty*data;

     myHero->m_sprite->setPositionY(myHero->m_sprite->getPositionY()+changeY);

 }

//這段代碼也位於update函數中 主要用於跳躍結束後 重置主角數據並將跳躍狀態設置爲false

if(isCollideWithHeroX()==true&&myHero->m_isJumping==true&&myHero->m_speedY<0.0f)

 {  

  myHero->m_isJumping=false;

  myHero->m_sprite->stopAllActions();

  myHero->m_sprite->runAction(Hero::createAnimate());

  myHero->m_speedY=250.0f;

  return;

 }


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章