Мне нужно определять есть ли что-то под объектом с помощью лучей, делаю так - на объекте бокс коллайдер, есть 4 точки которые крепятся к углам коллайдера (для того чтобы при поворотах они там оставались), далее из этих точек пускаю лучи вниз, вот так кодом это выглядит
private BoxCollider BotCollider;
public Transform GroundTouchpoint1;
public Transform GroundTouchpoint2;
public Transform GroundTouchpoint3;
public Transform GroundTouchpoint4;
private bool RayDown(Transform t){ return Physics.Raycast(t.position, Vector3.down, 0.1f); }
private void RayDownTest(Transform t){ Debug.DrawRay(t.position, Vector3.down * 0.1f, Color.red); }
private bool isGrounded{ get{
if(RayDown(GroundTouchpoint1) || RayDown(GroundTouchpoint2) || RayDown(GroundTouchpoint3) || RayDown(GroundTouchpoint4)){ return true; }else{ return false; }
}}
private void Awake(){
RB = GetComponent<Rigidbody>();
BotCollider = GetComponent<BoxCollider>();
GroundTouchpoint1.position = BotCollider.center + new Vector3(BotCollider.size.x, -BotCollider.size.y, BotCollider.size.z) * 0.5f;
GroundTouchpoint2.position = BotCollider.center + new Vector3(-BotCollider.size.x, -BotCollider.size.y, BotCollider.size.z) * 0.5f;
GroundTouchpoint3.position = BotCollider.center + new Vector3(-BotCollider.size.x, -BotCollider.size.y, -BotCollider.size.z) * 0.5f;
GroundTouchpoint4.position = BotCollider.center + new Vector3(BotCollider.size.x, -BotCollider.size.y, -BotCollider.size.z) * 0.5f;
}
Используя RayDownTest я вижу что лучи идут оттуда откуда нужно, даже при поворотах они всегда исходят из углов коллайдера.
Но вот isGrounded показывает не то что нужно, если стою то всегда False, а если поворачиваюсь или хожу то в разнобой False и True.
Подскажите в чём может быть проблема?
(дело происходит в 3D, объект движется по осям X и Z, по Y прыгает/падает)