マリオのようなだんだん加速していく動きが分かりません。。。
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:マリオのような加速について
マリオのような動きが再現できるか試していませんが
左が y=x+b
右が y=x^2+b
です
だんだんと早くなる右の式を応用すればできるかな・・・?
左が y=x+b
右が y=x^2+b
です
だんだんと早くなる右の式を応用すればできるかな・・・?
Re:マリオのような加速について
こんな感じでしょうか?
double m = 2;
double x = ++m, y = 2.0;
if( PlayerX > 350 )
{PlayerX = 350;
if( Key & PAD_INPUT_RIGHT )mapx -= pow(x, y);}
double m = 2;
double x = ++m, y = 2.0;
if( PlayerX > 350 )
{PlayerX = 350;
if( Key & PAD_INPUT_RIGHT )mapx -= pow(x, y);}
Re:マリオのような加速について
出先なので簡単に・・・
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:マリオのような加速について
>>蓮さん
うーん。。。思うように加速してくれないみたいです
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;}
うーん。。。思うように加速してくれないみたいです
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:マリオのような加速について
思い通りがどのようなことかはわかりませんが
値は自分で弄って下さい・・・
ソースは上記の様な感じということです。
Mxは最低移動量
Speedは変動する加速量です。
値は自分で弄って下さい・・・
ソースは上記の様な感じということです。
Mxは最低移動量
Speedは変動する加速量です。
Re:マリオのような加速について
実際の前後のソースがないと細かいところはわかりませんが・
・ メインループの中で毎フレーム Speedや Pxの 0初期化をしていませんか?
・ mapxへの加算は (Key & PAD_INPUT_RIGHT) を満たした時だけでなく常に行うようにしてみてください。
・ メインループの中で毎フレーム Speedや Pxの 0初期化をしていませんか?
・ mapxへの加算は (Key & PAD_INPUT_RIGHT) を満たした時だけでなく常に行うようにしてみてください。