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

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
mmbb

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

#1

投稿記事 by mmbb » 15年前

マリオのようなだんだん加速していく動きが分かりません。。。
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は背景の画像です
加速後のジャンプ力の増加も実装したいのですが。。

dic

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

#2

投稿記事 by dic » 15年前

マリオのような動きが再現できるか試していませんが
左が y=x+b
右が y=x^2+b
です
だんだんと早くなる右の式を応用すればできるかな・・・?

mmbb

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

#3

投稿記事 by mmbb » 15年前

こんな感じでしょうか?

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

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

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

#4

投稿記事 by » 15年前

出先なので簡単に・・・
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;
試していないので動くかわかりませんが上記の様なかんじでどうでしょうか?

mmbb

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

#5

投稿記事 by mmbb » 15年前

>>蓮さん
うーん。。。思うように加速してくれないみたいです





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:マリオのような加速について

#6

投稿記事 by » 15年前

思い通りがどのようなことかはわかりませんが
値は自分で弄って下さい・・・

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

Justy

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

#7

投稿記事 by Justy » 15年前

 実際の前後のソースがないと細かいところはわかりませんが・

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

閉鎖

“C言語何でも質問掲示板” へ戻る