今回も質問です
ぶっちゃけプログラム的な事なのですが…
宜しくお願いします
m_ _m
【ソース解説・質問】
上下左右に、「PNG画像」を2D的に動かしてます
(ぶっちゃけここの「サンプルプログラム」から
拝借してますが……2D的?)
そこでジャンプ処理を入れているのですが…
「上下の移動量」が変になってしまいました
(左右よりも早く移動してます。しかもジャンプしなくても…)
よろしく御教授お願いします
(汗汗
#include "DxLib.h"
char key[256]; //キー入力用バッファ
int i=0,x=0;
int PlayerX=0 , PlayerY=0 ;
int JumpPower=0 ;
int Y_STOP=0;
int image[3];
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow )
{
if( ChangeWindowMode(TRUE)!= DX_CHANGESCREEN_OK ||
SetGraphMode( 800 ,600, 16 ) ||
DxLib_Init() == -1 ) return -1; //初期化処理
LoadDivGraph( 所定の画像ファイル名 ,3, 3, 1, 36,36, image);
SetDrawScreen( DX_SCREEN_BACK );//裏画面に設定
//ゲームループ//
while(!ProcessMessage() && //メッセージ処理
!ClearDrawScreen() && //画面をクリア
!GetHitKeyStateAll(key)&& //キーボード入力状態取得
!(key[KEY_INPUT_ESCAPE]))//ESCが押されていない
{
i++ ;//画像ループカウンタ
if(!key[KEY_INPUT_RIGHT] == 0)//右入力
{
PlayerX=PlayerX+5;
}
else
if(!key[KEY_INPUT_LEFT] == 0)//左入力
{
PlayerX=PlayerX-5;
}
else
if(!key[KEY_INPUT_DOWN] == 0)//下入力
{
PlayerY=PlayerY+5;
}
else
if(!key[KEY_INPUT_UP] == 0)//上入力
{
PlayerY=PlayerY-5;
}
// ジャンプボタンを押していて、地面についていたらジャンプ
if( ( key[KEY_INPUT_SPACE] )&& Y_STOP == PlayerY) JumpPower = 20 ;
//* 落下処理
Y_STOP -= JumpPower ;
// 落下加速度を加える
JumpPower -= 1 ;
// もし地面についていたら止まる
if( Y_STOP > PlayerY )
{
Y_STOP = PlayerY ;
JumpPower = 0 ;
}
//アニメーション
if( i == 3 ) i = 0 ;//3枚の画像をぶるぶる…w
DrawGraph(PlayerX ,PlayerY+Y_STOP , image[ i ] , TRUE ) ;
ScreenFlip() ; //裏画面データを表画面へ反映
}
DxLib_End();
}