⑥unity2Dの衝突判定について 無限ジャンプしないために

 

みなさまおはようございます。5時53分です。

月曜日はいやですね…本当に会社めんどくさい。あああ…

って言ってないで、やる気出すためにブログを更新しようかと

 

衝突判定ですが、簡単にメモします

地面との衝突判定

 

public class kihon : MonoBehaviour {

public bool ground = false; //と通常はfalseとしておいて

 

//2Dの物体がground Tag に接していると、

void OnCollisionStay2D(Collision2D collision)


 {
     
  if (collision.gameObject.tag == "ground" || collision.gameObject.tag == "Mono")
  {
  ground= true;
  }

 }

 

//2Dの物体がGround Tag から離れると

void OnCollisionExit2D(Collision2D collision)
  {
  {Animator myAnimator = GetComponent<Animator>();
   myAnimator.SetBool("Grounded",  false);}

  if (collision.gameObject.tag == "ground" || collision.gameObject.tag == "Mono" )
  {
   jump = false;
  }

}

 

と ground に OnCollisionStay2D (2Dの物体がふっついているとき)

”true” とする という内容です。はい。余裕でみなさん知っていますね。

ただ、ブログでこれを外すわけにもいかないので(笑)

で、これをどうつかうかというと、

 

//ジャンプ

public class kihon : MonoBehaviour {

public float jumpPower = 300f;

 

//guoundに接しているときにJumpぼたんを押すと
 if(Input.GetButtonDown("Jump") &&  ground ) ←ここでつかいます!

void Update () {
   {

  // jumpPower 分 上に力をあたえる

  rigidbody2D.AddForce(Vector2.up * jumpPower );
     Animator myAnimator = GetComponent<Animator>();
       myAnimator.SetTrigger("Jump");

 }

}

}

と ground に接しているときじゃないとJump できないわけです。

無限ジャンプを回避しているわけですね。 

f:id:loveyama1976:20150223063252p:plain

ジャンプ成功!

 

衝突判定の注意は、3Dの物体と2Dの物体はぶつからないということです。

Collision2D とCollision は当たらない。不便だ…どうにかならないかな。

 

ではまた!