У меня проблема с обнаружением столкновения Unity2D. Я новичок в Unity и следую учебному пособию, чтобы помочь в этом. Я правильно настроил объекты и слои, но у меня проблема с этим кодом. Я использую raycast с маской столкновения. Я пробовал оба делать преобразование битмаски на слое, но это, похоже, не работает. Кто-нибудь есть идеи о том, что может вызвать эту проблему? Вот мой код:Unity2D Обнаружение столкновений
void VerticalCollisions(ref Vector3 velocity) {
float directionY = Mathf.Sign (velocity.y);
float rayLength = Mathf.Abs (velocity.y) + skinWidth;
for (int i = 0; i < verticalRayCount; i ++) {
Vector2 rayOrigin = (directionY == -1)?raycastOrigins.bottomLeft:raycastOrigins.topLeft;
rayOrigin += Vector2.right * (verticalRaySpacing * i + velocity.x);
RaycastHit2D hit = Physics2D.Raycast(rayOrigin, Vector2.up * directionY, rayLength, collisionMask);
Debug.DrawRay(rayOrigin, Vector2.up * directionY * rayLength,Color.red);
if (hit) {
velocity.y = (hit.distance - skinWidth) * directionY;
rayLength = hit.distance;
}
}
}
В чем проблема? Разве raycast никогда не ударяет коллайдеров? –