⑥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 できないわけです。
無限ジャンプを回避しているわけですね。
ジャンプ成功!
衝突判定の注意は、3Dの物体と2Dの物体はぶつからないということです。
Collision2D とCollision は当たらない。不便だ…どうにかならないかな。
ではまた!