Видео пример того чего я должен добиться.
Я пытаюсь сделать перемещение фишки равное её диаметру, перемещение происходит мгновенно и только на свободном пространстве. Чтобы улучшить отображение такого перемещения мы решили сделать обводку на которую он сможет сходить.
Physics.SphereCast хороший метод, метод почти подошёл но один нюанс мешает игровому процессу.
В этой ситуации, фишка не может сходить в свободную клетку отмеченной черной обводкой, по причине того, что SphereCast сталкивается с объектом в окрашенной зелёным пространстве.
Мне нужно найти другое решение этой проблемы, либо использовать костыли для SphereCast.
Вот код:
origin = transform.position;
direction = transform.forward * (-1);
RaycastHit hit;
if(Physics.SphereCast(origin, sphereRadius, direction, out hit, maxDistance, layerMask, QueryTriggerInteraction.UseGlobal)){
currentHitObject = hit.transform;
currentHitDistance = hit.distance;
} else {
currentHitDistance = maxDistance;
advanceDisplay.position = transform.position + (transform.forward * (-1) * currentHitDistance);
currentHitObject = null;
}