マリオ風アクションゲームでジャンプの細かい仕様を作りたいのですがただジャンプする以外の動作を作れませんどうすれば実装できるのでしょうか?
1,ジャンプして当たり判定に当たると落下する
2,ジャンプ中や落下中で空中に居る間はジャンプできない
3,足場のブロックがなくなると落下するこの時の空中に居るのでジャンプできない
この3つの動作を実装したいのですがどうすればいいのかわかりませんただジャンプするだけなら実装できますがジャンプボタンを押せばいくらでもジャンプできてしまいそれを防ぐと別のバグに遭遇し上手く作れません。
#include "Input.h" #include "Player.h" #include "DxLib.h" #include "Map.h" #define MOVE_SPD 5 /*コンストラクタ*/ Player::Player(const char* str, int xx, int yy) :pos{xx,yy} { LoadDivGraph(str,7,7,1,64,64,g_handle); } /*計算更新*/ void Player::Update() { input_key(); //gravity(); } /*描画更新*/ void Player::Draw_Update() { DrawFormatString(100,100,GetColor(255,255,255),"Debug"); DrawGraph(gPos_x(), gPos_y(), g_handle[0], true); } bool isJump = false;//ジャンプボタンを押したかどうか bool isJumpNow = false;//ジャンプ中かどうか /*キー入力*/ void Player::input_key() { if (keybord(KEY_INPUT_LEFT) > 0) { sPos_x(-MOVE_SPD); } if (keybord(KEY_INPUT_RIGHT) > 0) { sPos_x(+MOVE_SPD); } ////////////////////////////////////////////////////////////////////////////////// /*ジャンプ*/ if (keybord(KEY_INPUT_SPACE) > 0) { if(isJumpNow == false) { isJump = true; } Jump_up(isJump); gravity(isJump); } else { gravity(isJump); } ////////////////////////////////////////////////////////////////////////// } ///////////////////////////////////////////////////////////////////////////// void Player::Jump_up(bool jump) { if (jump == true) { n = (n - 2); if (j <= 0) { n = 0; } j = n; sPos_y(j); } } bool isCollision = false; /*重力効果*/ void Player::gravity(bool g)//ジャンプしてるかどうかと当たり判定を比較 { isCollision = Map::col(pos.x,pos.y); DrawFormatString(0, 200, GetColor(255, 255, 255), "jump: %d",jump); /*当たっていない時ジャンプボタンを押した時*/ if (isCollision == false) { sPos_y(-2); } else if (isCollision == true) { isJump = false; } if (jump == true) { DrawFormatString(0, 100, GetColor(255, 255, 255), "collsiion"); } } /////////////////////////////////////////////////////////////////////////////////
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/08/02 11:09