質問編集履歴

3 詳細の追加

Z_Silver

Z_Silver score 25

2019/05/15 23:29  投稿

Unity ContactFilter2Dを使用したジャンプ処理でなぜか(2回)連続でジャンプできてしまいます。
###前提・実現したいこと
前回質問した
URL:teratail.com/questions/189192
と類似した問題になるのですが・・
以下のソースに
ContactFilter2Dを追加しジャンプ処理を行ったのですが、クリック(タップ)でジャンプした後
キャラクターが地面に着地する前に、もう一度クリックを行うとジャンプができてしまい連続で
飛んでいる状態になってしまいます。
Debug.Logで確認したり、フィルターの項目のチェックを外したりしましたが改善しなかったため
再度こちらで質問することにしました。
回答よろしくお願いします。
フィルター画像
![イメージ説明](98aa488cf3c5f5e2d68a8ee3384faa7a.png)
###該当のソースコード
``````
   // コライダーのフィルター(追加)
   [SerializeField] ContactFilter2D filter2d = default;
void Update () {
---省略---
   //地面レイヤー判定(LineCastの処理を以下に変更)
   if (GetComponent<Rigidbody2D>().IsTouching(filter2d))
   {
      isGroud = true;
   }
   //ボタンをクリック(タップ)した時
   if (isGroud && Input.GetMouseButtonDown(0))
   {
---省略---
       animator.SetBool("isDash", false);     //ダッシュアニメフラグ
       animator.SetTrigger("Jump");           //ジャンプトリガー
       rd2D.AddForce(Vector2.up * JumpPower); //ジャンプ力分上に加速
       isGroud = false;//←2回目のジャンプでようやくfalseになる?
   }
}
```
###補足情報(言語/FW/ツール等のバージョンなど)
Unity 2018.3.11f1
言語:C#
2DキャラのPivotはbottom centerになります。
isGroudの値は1回目のクリックでは[true]のままで  
着地前に2回目クリックすると[false]になります。  
2回目で[false]になるので3回目以降のクリックではジャンプはしません。  
 
参考:
http://tsubakit1.hateblo.jp/entry/2018/04/07/234028
  • C#

    12571 questions

    C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

  • Unity

    8526 questions

    Unityは、ユニティテクノロジーが開発したゲームエンジンです。 主にモバイルやブラウザ向けのゲーム製作に利用されていましたが、3Dの重力付きゲームが簡単に作成できることから需要が増え、現在はマルチプラットフォームに対応しています。 言語はC言語/C++で書かれていますが、C#、JavaScript、Booで書かれたコードにも対応しています。

  • Unity2D

    2086 questions

2 修正

Z_Silver

Z_Silver score 25

2019/05/15 23:22  投稿

Unity ContactFilter2Dを使用したジャンプ処理でなぜか(2回)連続でジャンプできてしまいます。
###前提・実現したいこと
前回質問した
URL:teratail.com/questions/189192
と類似した問題になるのですが・・
以下のソースに
ContactFilter2Dを追加しジャンプ処理を行ったのですが、クリック(タップ)でジャンプした後
キャラクターが地面に着地する前に、もう一度クリックを行うとジャンプができてしまい連続で
飛んでいる状態になってしまいます。
フィルターの項目のチェックを外したり、if文を増やしたりしましたが改善しなかったため
Debug.Logで確認したり、フィルターの項目のチェックを外したりしましたが改善しなかったため
再度こちらで質問することにしました。
回答よろしくお願いします。
フィルター画像
![イメージ説明](98aa488cf3c5f5e2d68a8ee3384faa7a.png)
###該当のソースコード
``````
   // コライダーのフィルター(追加)
   [SerializeField] ContactFilter2D filter2d = default;
void Update () {
---省略---
   //地面レイヤー判定(LineCastの処理を以下に変更)
   if (GetComponent<Rigidbody2D>().IsTouching(filter2d))
   {
      isGroud = true;
   }
   //ボタンをクリック(タップ)した時
   if (isGroud && Input.GetMouseButtonDown(0))
   {
---省略---
       animator.SetBool("isDash", false);     //ダッシュアニメフラグ
       animator.SetTrigger("Jump");           //ジャンプトリガー
       rd2D.AddForce(Vector2.up * JumpPower); //ジャンプ力分上に加速
       isGroud = false;//←2回目のジャンプでようやくfalseになる?
   }
}
```
###補足情報(言語/FW/ツール等のバージョンなど)
Unity 2018.3.11f1
言語:C#
2DキャラのPivotはbottom centerになります。
参考:
http://tsubakit1.hateblo.jp/entry/2018/04/07/234028
  • C#

    12571 questions

    C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

  • Unity

    8526 questions

    Unityは、ユニティテクノロジーが開発したゲームエンジンです。 主にモバイルやブラウザ向けのゲーム製作に利用されていましたが、3Dの重力付きゲームが簡単に作成できることから需要が増え、現在はマルチプラットフォームに対応しています。 言語はC言語/C++で書かれていますが、C#、JavaScript、Booで書かれたコードにも対応しています。

  • Unity2D

    2086 questions

1 追加

Z_Silver

Z_Silver score 25

2019/05/15 23:20  投稿

Unity ContactFilter2Dを使用したジャンプ処理でなぜか(2回)連続でジャンプできてしまいます。
###前提・実現したいこと
前回質問した
URL:teratail.com/questions/189192
と類似した問題になるのですが・・
以下のソースに
ContactFilter2Dを追加しジャンプ処理を行ったのですが、クリック(タップ)でジャンプした後
キャラクターが地面に着地する前に、もう一度クリックを行うとジャンプができてしまい連続で
飛んでいる状態になってしまいます。
フィルターの項目のチェックを外したり、if文を増やしたりしましたが改善しなかったため
再度こちらで質問することにしました。
回答よろしくお願いします。
フィルター画像
![イメージ説明](98aa488cf3c5f5e2d68a8ee3384faa7a.png)
###該当のソースコード
``````
   // コライダーのフィルター(追加)
   [SerializeField] ContactFilter2D filter2d = default;
void Update () {
---省略---
   //地面レイヤー判定(LineCastの処理を以下に変更)
   if (GetComponent<Rigidbody2D>().IsTouching(filter2d))
   {
      isGroud = true;
   }
   //ボタンをクリック(タップ)した時
   if (isGroud && Input.GetMouseButtonDown(0))
   {
---省略---
       animator.SetBool("isDash", false);     //ダッシュアニメフラグ
       animator.SetTrigger("Jump");           //ジャンプトリガー
       rd2D.AddForce(Vector2.up * JumpPower); //ジャンプ力分上に加速
       isGroud = false;//←2回目のジャンプでようやくfalseになる?
   }
}
```
###補足情報(言語/FW/ツール等のバージョンなど)
Unity 2018.3.11f1
言語:C#
2DキャラのPivotはbottom centerになります。
2DキャラのPivotはbottom centerになります。
参考:
http://tsubakit1.hateblo.jp/entry/2018/04/07/234028
  • C#

    12571 questions

    C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

  • Unity

    8526 questions

    Unityは、ユニティテクノロジーが開発したゲームエンジンです。 主にモバイルやブラウザ向けのゲーム製作に利用されていましたが、3Dの重力付きゲームが簡単に作成できることから需要が増え、現在はマルチプラットフォームに対応しています。 言語はC言語/C++で書かれていますが、C#、JavaScript、Booで書かれたコードにも対応しています。

  • Unity2D

    2086 questions

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る