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;
}
}
}
Was ist das Problem? Stößt der Raycast niemals auf die Collider? –