Проблема с наземной проверкой Unity3DC#

Место общения программистов C#
Anonymous
Проблема с наземной проверкой Unity3D

Сообщение Anonymous »

Итак, у меня есть наземный объект под названием Player, к которому прикреплены коллайдер и аниматор. Я пытаюсь успешно проверить, «заземлен» ли игрок, считывая столкновение игрока с плоскостью под названием (и помеченной) Ground.
Мой игрок имеет RigidBody, и мой коллайдер, прикрепленный к указанному игроку, имеет сетчатый коллайдер, прикрепленный к нему выпукло. Я использую приведенный ниже сценарий, прикрепленный к моему плееру, чтобы проверить, заземлен ли я или касаюсь земли. Он не возвращает игрока на землю, когда он стоит на вершине самолета.

Код: Выделить всё

void Update()
{
if(Physics.BoxCast(transform.position, boxSize, -player.up, out hit, Quaternion.Euler(collider.eulerAngles), distance, mask, QueryTriggerInteraction.Ignore))
{
if(hit.collider.tag == "Ground")
{
isGrounded = true;
groundNormal = hit.normal;
}
else
{
isGrounded = false;
groundNormal = Vector3.up;                          // if were in the air or not touching something then gravity is always set down.
}
}
else
{
isGrounded = false;
groundNormal = Vector3.up;
}
}
Я пробовал редактировать компоненты игрового объекта Player, чтобы проверить, нет ли проблем с размером или расстоянием моего поля, но ничего не помогает. Ниже я прикрепил снимок экрана с окном инспектора проигрывателя. Поле «Заземлено» должно быть отмечено, когда мой игрок касается плоскости земли, но это не так.
введите здесь описание изображения

Подробнее здесь: https://stackoverflow.com/questions/768 ... heck-issue

Вернуться в «C#»