DXライブラリのジャンプの改良で作っているのですが。
スーパーマリオブラザーズは穴があって上にいったら落ちるじゃないですか。
しかしおちるようなプログラムを書くと落ちてくる位置がちがったりしてうまくいきません。
どうすればいいでしょうか?私的にはif( 200<=PlayerX<=240 && PlayerY==355 ){PlayerY = 355 ;JumpPower = -1 ;}のところだと思っているのですが。PlayerYの値を変更したら落ちてくる位置がちがくなってしまうんです。どうすればいいでしょうか?
// ジャンプ
#include "DxLib.h"
int PlayerX , PlayerY ;
int JumpPower ;
int PlayerGraph ;
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
ChangeWindowMode(TRUE);
if (DxLib_Init() == -1) return -1;
char Key[256];
SetGraphMode( 640,480,16 ) ;
// 描画先画面を裏画面にセット
SetDrawScreen( DX_SCREEN_BACK ) ;
// グラフィックのロード
PlayerGraph = LoadGraph( "star1.bmp" ) ;
// キャラクターの初期データをセット
PlayerX = 0 ;
PlayerY = 0 ;
JumpPower = 0 ;
int White;
White = GetColor( 255 , 255 , 255 ) ; // 白色の値を取得
// ループ
while(!ProcessMessage() && !ClearDrawScreen() && !GetHitKeyStateAll( Key ) && !Key[KEY_INPUT_ESCAPE])
{
//↑メッセージ処理 ↑画面をクリア ↑キーボード入力状態取得 ↑ESCが押されていない
if (Key[KEY_INPUT_UP]== 1) PlayerY -= 3; // 上を押していたら上に進む
if (Key[KEY_INPUT_DOWN]== 1) PlayerY += 3 ; // 下を押していたら下に進む
if (Key[KEY_INPUT_RIGHT]== 1) PlayerX += 3 ; // 右を押していたら右に進む
if (Key[KEY_INPUT_LEFT]== 1) PlayerX -= 3 ; // 左を押していたら左に進む
PlayerY -= JumpPower ;// 落下処理
JumpPower -= 1 ;// 落下加速度を加える
// もし地面についていたら止まる
if( PlayerY > 355 )
{
PlayerY = 355 ;
JumpPower = 0 ;
}
if( 200<=PlayerX<=240 && PlayerY==355 )
{
PlayerY = 355 ;
JumpPower = -1 ;
}
// ジャンプボタンを押していて、地面についていたらジャンプ
if ((Key[KEY_INPUT_A]==1) && PlayerY == 355 ) JumpPower = 20 ;
ClearDrawScreen() ;// 画面を初期化する
DrawGraph( PlayerX , PlayerY , PlayerGraph , TRUE ) ;// プレイヤーを描画する
DrawBox ( 0 , 384 , 200 , 480 , White , TRUE ) ;
DrawBox ( 240, 384 , 640 , 480 , White , TRUE ) ;
// 裏画面の内容を表画面に反映させる
ScreenFlip() ;
}
DxLib_End() ; // DXライブラリ使用の終了処理
return 0 ; // ソフトの終了
}
よろしくお願いします。