地面に足を置いているときにだけキャラクターを飛びたい。私は彼が「空気ジャンプ」にできるようにしたくないので、私はこのソリューションに付属している:地面に触れるとキャラクターだけが飛ぶことができる
if (JumpButtonPressed()) {
if (GetComponent<BoxCollider2D>().IsTouchingLayers(LayerMask.NameToLayer("Ground"))) {
velocity.y = jumpForce;
}
}
アイデアは、「アース」層と接触して、それがジャンプすることができた場合にのみということです。しかし、これは何が起こるかです:
それはちょうど彼の足の仕事をdoesntの。彼が側面でプラットフォームに触れている場合、それは同様にジャンプすることができます。私は何ができますか?
おそらく複数のコライダーが必要です。キャラクター全体を囲む1つのボックスと、フィートのすぐ下の別のコライダー(ジャンプ用)を想像してください。だから体の側が壁に衝突し、あなたがそれに入るのを止めます。そして、 "ジャンプ"コライダーは、ボディーコライダーよりも幅が狭いので、壁に出会うことはありません。しかし、上から衝突すると、ジャンプコライダーは衝突する衝突コライダーになります。 – SimpleVar
別のアプローチは、レイキャストを文字の下に下向きに使用して、彼が接地されているかどうかを判断することです。単一のレイキャストが狭すぎる場合は、代わりに 'Physics2D.BoxCast()'を試して、キャラクターのコライダーの幅と同じ幅にして、キャラクターの隣のコライダーにヒットしないようにしてください。 – Serlite
ええ、それは良いです:) – SimpleVar