トップページ > 過去ログ > 記事閲覧
ジャンプについて
名前:西斗 日時: 2007/09/26 23:13

サイトにあったサンプルプログラムの、ジャンプ処理をやってみたんですが、そのままだと、キーを押しっぱなしにしていると何度もジャンプしてしまうので、 ttp://homepage2.nifty.com/natupaji/DxLib/lecture/lecture1_5.html に書いてあることを応用してキーを押しっぱなしにしてもジャンプしないようにしたのですが、それだとプレイヤーのY座標を15にしたにもかかわらず、 小さくジャンプしてしまいました。 普通にジャンプさせるにはどうすればいいのでしょうか。 教えてください。お願いします。

Page: 1 |

Re: ジャンプについて ( No.1 )
名前:後藤 日時:2007/09/27 04:01

どういう風に応用したのかを詳しく書かないと分からないと思うのですが
Re: ジャンプについて ( No.2 )
名前:西斗 日時:2007/09/27 18:29

すいません。説明が不足していました。 上キーを押しっぱなしにしてもジャンプできないようにしたいので、「JumpFulag」という変数を作って、上キーを押すとそれに1を代入するようにします。 そして「JumpFlag = 0」のときしかジャンプしないようにすれば、キーを押しっぱなしをしていてもジャンプしないようになると思ってビルドしてみたら、 キーを押しっぱなしにしていてもジャンプしないようになったのですが、ジャンプする高さにかかわらず、小刻みにジャンプするようになってしまったんです。 どうすればいいのか教えてください。お願いします。
Re: ジャンプについて ( No.3 )
名前:Will 日時:2007/09/27 19:30

ソースを貼ったほうが確実な回答得られると思いますよ。
Re: ジャンプについて ( No.4 )
名前:西斗 日時:2007/09/27 19:36

早い回答ありがとうございます。 ではソースを貼ります。何度もすいません。 #include "DxLib.h" int PlayerX, PlayerY ; int JumpPower ; int PlayerGraph ; int JumpFlag ; int Jump ; // WinMain関数 int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { SetGraphMode( 640 , 480 , 16 ) ; ChangeWindowMode( TRUE ) ; // ウインドウモードに変更 if( DxLib_Init() == -1 ) // DXライブラリ初期化処理 { return -1; // エラーが起きたら直ちに終了 } // 描画先画面を裏画面にセット SetDrawScreen( DX_SCREEN_BACK ) ; // グラフィックのロード PlayerGraph = LoadGraph( "Player.png" ) ; PlayerX = 30 ; PlayerY = 350 ; JumpPower =0 ; //ジャンプしているかどうかを保存している変数に0(ジャンプしていない)を代入する JumpFlag = 0 ; // 移動ルーチン while( 1 ) { // 画面を初期化する ClearDrawScreen() ; //プレイヤーの操作ルーチン { //→キーを押していたら右に移動 if( CheckHitKey( KEY_INPUT_RIGHT ) == 1 ) PlayerX += 3 ; //←キーを押していたら左に移動 if( CheckHitKey( KEY_INPUT_LEFT ) == 1 ) PlayerX -= 3 ; //↑キーを押していたらジャンプ if( CheckHitKey( KEY_INPUT_UP ) ) { //前フレームで↑ボタンを押したかが保存されている変数が0だったらジャンプ if( JumpFlag ==0 ) { //ジャンプの高さ PlayerY -= 15 ; } //ジャンプしているので変数に1を代入 JumpFlag = 1 ; } else { //↑キーが押されていなかったら //押されていないので変数に0を代入する JumpFlag = 0 ; } PlayerY -= JumpPower ; JumpPower -= 1 ; //もし地面に付いたら止まる if( PlayerY > 350 ) { PlayerY = 350 ; JumpPower = 0 ; } //プレイヤーを描画 DrawGraph ( PlayerX , PlayerY , PlayerGraph , TRUE ) ; // 裏画面の内容を表画面に反映させる ScreenFlip() ; // Windows 特有の面倒な処理をDXライブラリにやらせる // -1 が返ってきたらループを抜ける if( ProcessMessage() < 0 ) break ; // もしESCキーが押されていたらループから抜ける if( CheckHitKey( KEY_INPUT_ESCAPE ) ) break ; } } DxLib_End() ; // DXライブラリ使用の終了処理 return 0 ; // ソフトの終了 }
Re: ジャンプについて ( No.5 )
名前:aujourd'hui 日時:2007/09/27 20:33

こんにちは。 if(Jumpflg==0){ PlayerY-=15; } の部分のPlayerYをJumpPowerに変えて、 else{ Jumpflg=0; } の後の、 PlayerY -= JumpPower ; JumpPower -= 1 ; を PlayerY += JumpPower ; JumpPower += 1 ; に変えてみてください。
Re: ジャンプについて ( No.6 )
名前:西斗 日時:2007/09/27 20:45

aujourd'huiさんの言ったとおりにやったらできました! ありがとうございます。他の方もありがとうございました。

Page: 1 |