2016-04-04 10 views
0

Ich habe ein Problem mit der Unity2D-Kollisionserkennung. Ich bin neu in Unity und folge einem Tutorial, das dabei helfen soll. Ich habe die Objekte und Ebenen korrekt eingerichtet, aber ich habe ein Problem mit diesem Code. Ich verwende Raycast mit Kollisionsmaske. Ich habe versucht, eine Bitmask-Konvertierung auf der Ebene durchzuführen, aber das scheint auch nicht zu funktionieren. Hat jemand irgendwelche Ideen, was dieses Problem verursachen würde? Hier ist mein Code:Unity2D Kollisionserkennung

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

Was ist das Problem? Stößt der Raycast niemals auf die Collider? –

Antwort

0

Was ist falsch mit Ihrem Code? Wie auch immer, Sie könnten diese Kollisionen arbeiten lassen, ohne überhaupt Code zu schreiben. Ich machte meine Karte in Tiled, füllte am Ende die Teile der Map, die ich mit dem Player kollidieren wollte, konvertierte sie in Unity 2D, bekam in der Columns-Markierung im Map-Bereich, bekam die Farbe rendern und dann erstellen ein Starrkörper2d. Prost!