Итак, у меня есть простой объект (камера), и я не хочу, чтобы она прошла сквозь стену. То, что я сделал, это простое кодирование Raycast с этим:
RaycastHit hit;
if (Physics.Raycast(myCamera.transform.position, Vector3.down, out hit, distanceFromMesh))
{
currPos.y = hit.point.y + distanceFromMesh;
}
if (Physics.Raycast(myCamera.transform.position, Vector3.up, out hit, distanceFromMesh))
{
currPos.y = hit.point.y - distanceFromMesh;
}
if (Physics.Raycast(myCamera.transform.position, Vector3.left, out hit, distanceFromMesh))
{
currPos.x = hit.point.x - distanceFromMesh;
}
if (Physics.Raycast(myCamera.transform.position, Vector3.right, out hit, distanceFromMesh))
{
currPos.x = hit.point.x + distanceFromMesh;
}
Это хорошо работает, когда я медленно двигаю камеру к стене (как обычный человек), но когда я ударю ее по стене, она проходит и застревает внутри (из-за проверки радиопередачи на предмет движения другой стороны.
Что я могу сделать, чтобы остановить это. Мой distanceFromMesh = 0.2f