前提・実現したいこと
Android Studioを使ってアンドロイドで動作するマリオのような2Dアクションゲームを制作しています。
キャラクターの移動やジャンプ、ブロックとの当たり判定などゲームのベースとなる機能は一通り完成しました。
しかしジャンプの仕様を変更したくて、考えているのですが、詰まってしまっています。
完成してあるジャンプの機能というのは、ボタンを押した時の時間をボタンを離した時間から引いて、その時間の長さに応じてジャンプが高さが決まるというものです。
これだと、ボタンを離した時にジャンプが始まるため、なんだか違和感があります。
そのため、マリオのようにボタンを押した瞬間にジャンプが始まり、ジャンプを始めてからジャンプボタンを押している時間に応じて高さが変わるように変更したいです。
調べて見ても、unityの記事ばかりで何から手をつけていいのかわからなくなってしまいました。
そもそもあのジャンプがどういう仕組みで実現できているのかがわからないです。
まる投げ質問のようになってしまって大変申し訳ないのですが、少しアドバイスをいただきたいです。
全てのコードを載せてもわかりずらくなるだけだと思うので、
現在のジャンプ機能の部分に当たるコードを下に書きます。
どうぞ、よろしくお願いいたします。
該当のソースコード
java
1imageButtonJump.setOnTouchListener(new ImageButton.OnTouchListener() { // タッチされた時に受ける関数を設定 2 3 @Override 4 public boolean onTouch(View v, MotionEvent event){ 5 int action = event.getAction(); 6 switch(action){ 7 case MotionEvent.ACTION_DOWN:{ // ボタンに触った時にここに来る 8 touchDownStartTime = System.currentTimeMillis(); 9 return true; 10 } 11 case MotionEvent.ACTION_UP:{ // 指がボタンから離れたらここに来る 12 float time = System.currentTimeMillis() - touchDownStartTime; 13 gameView2.jumpDroid(time); 14 touchDownStartTime = 0; 15 break; 16 } 17 } 18 return false; 19 } 20 }); 21
java
1public void jumpDroid(float time){ 2 if(droidCallback.getDistanceFromGround(droid) > 0){//キャラが空中にいるときはジャンプできないようにする 3 return; 4 } 5 droid.jump(Math.min(time,MIN_TOUCH_TIME)/MAX_TOUCH_TIME);//ジャンプの上限を決めています 6 }
java
1public void jump(float power){//powerに応じて高さが決まる 2 velocity = (power * WEIGHT); 3 }
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/07/10 01:37