ジャンプが分からない
Posted: 2011年7月21日(木) 00:14
DXライブラリ置き場のサンプルプログラムで疑問になったことがあります
初心者です
ジャンプ処理の項目なのですが
このようなコードでした
ジャンプボタンが押されたらy座標から数がひかれてどんどん上昇していくんですよね
でも20が代入されたら、いきなり座標が‐20されちゃってワープしちゃう気がするんです
何か根本的なことが間違っていたら指摘してください
どのように処理がなされていっているのか教えてください
初心者です
ジャンプ処理の項目なのですが
// ジャンプ
#include "DxLib.h"
int PlayerX , PlayerY ;
int JumpPower ;
int PlayerGraph ;
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow )
{
int Key ;
SetGraphMode( 640 , 480 , 16 ) ;
if( DxLib_Init() == -1 ) // DXライブラリ初期化処理
{
return -1; // エラーが起きたら直ちに終了
}
// 描画先画面を裏画面にセット
SetDrawScreen( DX_SCREEN_BACK ) ;
// グラフィックのロード
PlayerGraph = LoadGraph( "Player.bmp" ) ;
// キャラクターの初期データをセット
PlayerX = 0 ;
PlayerY = 0 ;
JumpPower = 0 ;
// ループ
while( ProcessMessage() == 0 && CheckHitKey( KEY_INPUT_ESCAPE ) == 0 )
{
// キー入力取得
Key = GetJoypadInputState( DX_INPUT_KEY_PAD1 ) ;
if( Key & PAD_INPUT_UP ) PlayerY -= 3 ; // 上を押していたら上に進む
if( Key & PAD_INPUT_DOWN ) PlayerY += 3 ; // 下を押していたら下に進む
if( Key & PAD_INPUT_RIGHT ) PlayerX += 3 ; // 右を押していたら右に進む
if( Key & PAD_INPUT_LEFT ) PlayerX -= 3 ; // 左を押していたら左に進む
// 落下処理
PlayerY -= JumpPower ;
// 落下加速度を加える
JumpPower -= 1 ;
// もし地面についていたら止まる
if( PlayerY > 300 )
{
PlayerY = 300 ;
JumpPower = 0 ;
}
// ジャンプボタンを押していて、地面についていたらジャンプ
if( ( Key & PAD_INPUT_A ) && PlayerY == 300 ) JumpPower = 20 ;
// 画面を初期化する
ClearDrawScreen() ;
// プレイヤーを描画する
DrawGraph( PlayerX , PlayerY , PlayerGraph , TRUE ) ;
// 裏画面の内容を表画面に反映させる
ScreenFlip() ;
}
DxLib_End() ; // DXライブラリ使用の終了処理
return 0 ; // ソフトの終了
}
ジャンプボタンが押されたらy座標から数がひかれてどんどん上昇していくんですよね
でも20が代入されたら、いきなり座標が‐20されちゃってワープしちゃう気がするんです
何か根本的なことが間違っていたら指摘してください
どのように処理がなされていっているのか教えてください