掲題の件、ジャンプ時に敵キャラがtilemapにめり込む問題について、概ね解決致しましたのでご報告いたします。
対処方法といたしましては、落下中や上昇中に、Linecastメソッドを使ってめり込みそうか手動で確認し、めり込みそうなら失速させる(現在の実装では速度をゼロにする)ように致しました。
落下時の衝突確認メソッドを以下のように実装致しましたのでご確認ください。
ちなみに、clは敵キャラが持ってるBoxCollider2Dです。
protected bool CheckFallBump(float force)
{
if (force > 0.0f)
{
return false;
}
Vector2 bottomleft;
Vector2 bottomright;
bottomleft = (Vector2)cl.transform.position + cl.offset;
bottomright = (Vector2)cl.transform.position + cl.offset;
bottomleft.x -= cl.size.x / 2.0f;
bottomright.x += cl.size.x / 2.0f;
bottomleft.y -= cl.size.y / 2.0f - force;
bottomright.y -= cl.size.y / 2.0f - force;
Debug.DrawRay(bottomleft, bottomright - bottomleft);
return Physics2D.Linecast(bottomleft, bottomright, Ground);
}
このメソッドがtrueを返してきたらぶつかるので失速させます。ゲーム上ありえない高さから落下したとき、少し挙動が変になりますが、問題にはならない認識です。
引き続き、明日からはプレイヤーの操作について改善作業を行います。
新しい機能を実装するより、今発生している障害が最優先。
以上です。よろしくお願い致します。
0 コメント:
コメントを投稿