2016-04-04 6 views
0

У меня проблема с обнаружением столкновения 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; 
     } 
    } 
} 
+0

В чем проблема? Разве raycast никогда не ударяет коллайдеров? –

ответ

0

Что не так с кодом? В любом случае, вы можете сделать это столкновение без написания кода вообще. Я сделал свою карту в Tiled, в конце заполнил части карты, которые я хотел столкнуться с игроком, преобразовал ее в Unity 2D, попал в маркер коллизий в разделе карты, получил выделение цвета, а затем создал жесткое тело2d. Приветствия!

Смежные вопросы