Остановить объект с помощью Raycast - PullRequest
0 голосов
/ 07 мая 2018

Итак, у меня есть простой объект (камера), и я не хочу, чтобы она прошла сквозь стену. То, что я сделал, это простое кодирование 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

...