Я пытаюсь реализовать движение игрока таким образом, чтобы игрок не мог сталкиваться с другими объектами, которые могут встречаться, например с плитками, но используемые мной преобразования не регистрируют никакой другой коллайдер, когда оно явно должно быть
Итак, проблема, которую я пытаюсь решить, состоит в том, чтобы проверить, нет ли столкновения с радиопередачей, точно определяющей, насколько далеко будет двигаться игрок, и получить информацию об объекте, с которым столкнулся.После этого я бы соответствующим образом скорректировал движение игрока, чтобы игрок не сталкивался с объектом после того, как радиопередача обнаружит, что он может столкнуться.Вот исходный код:
// Move body towards a certain direction, by a certain value
protected void MoveBody(Vector3 direction, float speed)
{
Vector3 newPos = transform.position + (direction * speed * Time.deltaTime);
//int layerMask = 1 << 8; // bit sequence 1000 0000 - Only 'collidable' layer
RaycastHit hit;
Vector3 ySize = new Vector3(0, GetComponent<BoxCollider2D>().size.y/2, 0);
Vector3 startPos = transform.position - ySize;
if (Physics.Raycast(startPos, direction, out hit, speed * Time.deltaTime))
{
Debug.DrawRay(startPos, direction * speed * Time.deltaTime, Color.yellow);
Debug.Log("Did Hit");
}
else
{
Debug.DrawRay(startPos, direction * speed * Time.deltaTime, Color.yellow);
Debug.Log("Did Not Hit");
}
// Update gameObject's transform.position here based on whether a collidable was found
}
Когда я запускаю игру, первый кадр гарантирует, что raycast сталкивается с другим коллайдером коробки, как показано на этом изображении:
Ожидаемый Debug.Log будет "Удар", но это журнал "Не попал".Желтая линия показывает полный raycast, и он явно пересекает коллайдер коробки плитки под фиолетовым человечком.
Функция MoveBody запускается каждый кадр для имитации гравитации (я опустил часть, где объект падает так,объект игрока просто остается на месте все время), но, как вы можете видеть, raycast никогда не регистрирует столкновения.И игрок, и Tile1 имеют коробочный коллайдер, поэтому я не понимаю, что происходит.Буду очень признателен за любую помощь, которую я могу получить!Спасибо!