ページ 11

マリオのような加速について

Posted: 2010年8月14日(土) 11:10
by mmbb
マリオのようなだんだん加速していく動きが分かりません。。。
forループやspeed++等色々やってみましたが分かりませんでした

// もしプレイヤーが画面の350にきたら止まり、マップを左にスクロール
if( PlayerX > 350 )
{PlayerX = 350;
if( Key & PAD_INPUT_RIGHT )mapx -= 3; }




// もしプレイヤーが画面の左寄りにきたら右にマップスクロール
if( PlayerX < 200 )
{PlayerX = 200;
if( Key & PAD_INPUT_LEFT ) mapx += 3 ;
}
PlayerXは自機でmapxは背景の画像です
加速後のジャンプ力の増加も実装したいのですが。。

Re:マリオのような加速について

Posted: 2010年8月14日(土) 11:22
by dic
マリオのような動きが再現できるか試していませんが
左が y=x+b
右が y=x^2+b
です
だんだんと早くなる右の式を応用すればできるかな・・・?

Re:マリオのような加速について

Posted: 2010年8月14日(土) 12:13
by mmbb
こんな感じでしょうか?

double m = 2;
double x = ++m, y = 2.0;

if( PlayerX > 350 )
{PlayerX = 350;
if( Key & PAD_INPUT_RIGHT )mapx -= pow(x, y);}

Re:マリオのような加速について

Posted: 2010年8月14日(土) 13:23
by
出先なので簡単に・・・
float Px,Mx,Speed;

Px = 0; // 現在位置
Mx = 0; // 移動量
Speed = 0; // 加速

if(キーを押したら){
   Mx = 3;
   Speed += 0.2f;
   if(Speed >= 3) Speed = 3;
}else{
   Mx = 0;
   Speed -= 0.2f;
   if(Speed <= 0) Speed = 0;
}

// プレイヤーの位置の更新
Px += Mx + Speed;
試していないので動くかわかりませんが上記の様なかんじでどうでしょうか?

Re:マリオのような加速について

Posted: 2010年8月14日(土) 17:16
by mmbb
>>蓮さん
うーん。。。思うように加速してくれないみたいです





float Px,Mx,Speed;

Px = 0; // 現在位置
Mx = 0; // 移動量
Speed = 0; // 加速
if((Key & PAD_INPUT_RIGHT)){
Mx = 3;
Speed += 0.2f;
if(Speed >= 3) Speed = 3;
}else{
Mx = 0;
Speed -= 0.2f;
if(Speed <= 0) Speed = 0;
}



if( PlayerX > 350 )
{PlayerX = 350;
if( Key & PAD_INPUT_RIGHT )mapx -= Mx + Speed;}

Re:マリオのような加速について

Posted: 2010年8月14日(土) 20:51
by
思い通りがどのようなことかはわかりませんが
値は自分で弄って下さい・・・

ソースは上記の様な感じということです。
Mxは最低移動量
Speedは変動する加速量です。

Re:マリオのような加速について

Posted: 2010年8月14日(土) 23:56
by Justy
 実際の前後のソースがないと細かいところはわかりませんが・

・ メインループの中で毎フレーム Speedや Pxの 0初期化をしていませんか?
・ mapxへの加算は (Key & PAD_INPUT_RIGHT) を満たした時だけでなく常に行うようにしてみてください。