gologiusの巣

プログラミングなどの技術メモです。誰かの役に立てるとうれしいです。

Unity 簡単な地面との接触判定

SphereCastやらRaycastやら調べたら色々ありました。

しかし私は新しくLayerを作るのが気に入らなかった。

そこで私は考えた

Rigidbodyがアタッチされているなら、速度のy要素が(ほぼ)0になったとき、でよいのではなかろうか???

bool isGround = Mathf.Abs(rbody.velocity.y) < 0.001f ? true : false;

y要素が

  • 負なら重力による落下
  • 正ならジャンプ中など
  • (ほぼ)0なら地面に着くか、空中で静止している状態か

となる。

これでよくね?

追記(10/08)

ずっと平面なら別にいいんだけど、坂道があったらこの前提は崩壊します。

素直にSphereCastとか使いましょうね

おしまい