public static ArrowHandleCap ( int controlID, Vector3 position, |
||
controlID | int | The control ID for the handle. |
position | Vector3 | The world-space position of the handle's start point. |
rotation | The rotation of the handle. | |
size | float | The size of the handle in world-space units. |
eventType | EventType | Event type for the handle to act upon. By design it handles EventType.Layout and EventType.Repaint events. |
Résultat | void |
private void DrawSingleCollision(PhysicsDebugDraw.VisContactPoint contactPoint, Color impulseColor, bool useRandomColor) { var primaryColor = useRandomColor ? GetHashedColor(contactPoint.thisColliderInstanceID) : PhysicsVisualizationSettings.contactColor; var inverseColor = useRandomColor ? GetInverseColor(primaryColor) : PhysicsVisualizationSettings.contactSeparationColor; var colliderScale1 = GetColliderScale(contactPoint.thisCollider); var colliderScale2 = GetColliderScale(contactPoint.otherCollider); var colliderScale = Mathf.Min(colliderScale1, colliderScale2); Handles.color = primaryColor; Handles.ArrowHandleCap(0, contactPoint.point, Quaternion.LookRotation(contactPoint.normal), colliderScale, EventType.Repaint); if (PhysicsVisualizationSettings.showContactSeparation && contactPoint.separation > 0.01f) { Vector3 p2 = contactPoint.point - (contactPoint.normal * contactPoint.separation); Handles.color = inverseColor; // The line that displays the separation Handles.DrawLine(p2, contactPoint.point, 2f); Handles.Disc(Quaternion.identity, contactPoint.point , contactPoint.normal, contactPoint.separation / 2f, false, 1f); // Looks really good but maybe computationally too expensive? var discFillingColor = inverseColor; discFillingColor.a = 0.2f; Handles.color = discFillingColor; Handles.DrawSolidDisc(contactPoint.point, contactPoint.normal, contactPoint.separation / 2f); } // Impulse arrow if (PhysicsVisualizationSettings.showContactImpulse && contactPoint.impulse.sqrMagnitude > 0.001f) { Handles.color = impulseColor; Handles.ArrowHandleCap(0, contactPoint.point, Quaternion.LookRotation(contactPoint.impulse), contactPoint.impulse.magnitude, EventType.Repaint); } }