Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Draw the capsule shape traversed by a spherecast.
- void DrawSphereCast(Ray ray, float radius, float length, Color32 color, float duration) {
- Matrix4x4 frame = Matrix4x4.TRS(
- ray.origin,
- Quaternion.LookRotation(ray.direction),
- radius * Vector3.one);
- float scaledLength = length / radius;
- // Using a pythagorean triple here to pick intermediate points on the sphere.
- float a = 33f / 65f;
- float b = 56f / 65f;
- // Right side.
- Debug.DrawLine(frame * new Vector3(0, 0, -1), frame * new Vector3(a, 0, -b), color, duration);
- Debug.DrawLine(frame * new Vector3(a, 0, -b), frame * new Vector3(b, 0, -a), color, duration);
- Debug.DrawLine(frame * new Vector3(b, 0, -a), frame * new Vector3(1, 0, 0), color, duration);
- Debug.DrawLine(frame * new Vector3(1, 0, 0), frame * new Vector3(1, 0, scaledLength), color, duration);
- Debug.DrawLine(frame * new Vector3(1, 0, scaledLength), frame * new Vector3(b, 0, scaledLength + a), color, duration);
- Debug.DrawLine(frame * new Vector3(b, 0, scaledLength + a), frame * new Vector3(a, 0, scaledLength + b), color, duration);
- Debug.DrawLine(frame * new Vector3(a, 0, scaledLength + b), frame * new Vector3(0, 0, scaledLength + 1), color, duration);
- // Left side.
- Debug.DrawLine(frame * new Vector3(0, 0, -1), frame * new Vector3(-a, 0, -b), color, duration);
- Debug.DrawLine(frame * new Vector3(-a, 0, -b), frame * new Vector3(-b, 0, -a), color, duration);
- Debug.DrawLine(frame * new Vector3(-b, 0, -a), frame * new Vector3(-1, 0, 0), color, duration);
- Debug.DrawLine(frame * new Vector3(-1, 0, 0), frame * new Vector3(-1, 0, scaledLength), color, duration);
- Debug.DrawLine(frame * new Vector3(-1, 0, scaledLength), frame * new Vector3(-b, 0, scaledLength + a), color, duration);
- Debug.DrawLine(frame * new Vector3(-b, 0, scaledLength + a), frame * new Vector3(-a, 0, scaledLength + b), color, duration);
- Debug.DrawLine(frame * new Vector3(-a, 0, scaledLength + b), frame * new Vector3(0, 0, scaledLength + 1), color, duration);
- // Top side.
- Debug.DrawLine(frame * new Vector3(0, 0, -1), frame * new Vector3(0, a, -b), color, duration);
- Debug.DrawLine(frame * new Vector3(0, a, -b), frame * new Vector3(0, b, -a), color, duration);
- Debug.DrawLine(frame * new Vector3(0, b, -a), frame * new Vector3(0, 1, 0), color, duration);
- Debug.DrawLine(frame * new Vector3(0, 1, 0), frame * new Vector3(0, 1, scaledLength), color, duration);
- Debug.DrawLine(frame * new Vector3(0, 1, scaledLength), frame * new Vector3(0, b, scaledLength + a), color, duration);
- Debug.DrawLine(frame * new Vector3(0, b, scaledLength + a), frame * new Vector3(0, a, scaledLength + b), color, duration);
- Debug.DrawLine(frame * new Vector3(0, a, scaledLength + b), frame * new Vector3(0, 0, scaledLength + 1), color, duration);
- // Bottom side.
- Debug.DrawLine(frame * new Vector3(0, 0, -1), frame * new Vector3(0, -a, -b), color, duration);
- Debug.DrawLine(frame * new Vector3(0, -a, -b), frame * new Vector3(0, -b, -a), color, duration);
- Debug.DrawLine(frame * new Vector3(0, -b, - a), frame * new Vector3(0, -1, 0), color, duration);
- Debug.DrawLine(frame * new Vector3(0, -1, 0), frame * new Vector3(0, -1, scaledLength), color, duration);
- Debug.DrawLine(frame * new Vector3(0, -1, scaledLength), frame * new Vector3(0, -b, scaledLength + a), color, duration);
- Debug.DrawLine(frame * new Vector3(0, -b, scaledLength + a), frame * new Vector3(0, -a, scaledLength + b), color, duration);
- Debug.DrawLine(frame * new Vector3(0, -a, scaledLength + b), frame * new Vector3(0, 0, scaledLength + 1), color, duration);
- // Close ring.
- Debug.DrawLine(frame * new Vector3(1, 0, 0), frame * new Vector3(b, a, 0), color, duration);
- Debug.DrawLine(frame * new Vector3(b, a, 0), frame * new Vector3(a, b, 0), color, duration);
- Debug.DrawLine(frame * new Vector3(a, b, 0), frame * new Vector3(0, 1, 0), color, duration);
- Debug.DrawLine(frame * new Vector3(0, 1, 0), frame * new Vector3(-a, b, 0), color, duration);
- Debug.DrawLine(frame * new Vector3(-a, b, 0), frame * new Vector3(-b, a, 0), color, duration);
- Debug.DrawLine(frame * new Vector3(-b, a, 0), frame * new Vector3(-1, 0, 0), color, duration);
- Debug.DrawLine(frame * new Vector3(-1, 0, 0), frame * new Vector3(-b, -a, 0), color, duration);
- Debug.DrawLine(frame * new Vector3(-b, -a, 0), frame * new Vector3(-a, -b, 0), color, duration);
- Debug.DrawLine(frame * new Vector3(-a, -b, 0), frame * new Vector3(0, -1, 0), color, duration);
- Debug.DrawLine(frame * new Vector3(-0, -1, 0), frame * new Vector3(a, -b, 0), color, duration);
- Debug.DrawLine(frame * new Vector3(a, -b, 0), frame * new Vector3(b, -a, 0), color, duration);
- Debug.DrawLine(frame * new Vector3(b, -a, 0), frame * new Vector3(1, 0, 0), color, duration);
- // Far ring.
- Debug.DrawLine(frame * new Vector3(1, 0, scaledLength), frame * new Vector3(b, a, scaledLength), color, duration);
- Debug.DrawLine(frame * new Vector3(b, a, scaledLength), frame * new Vector3(a, b, scaledLength), color, duration);
- Debug.DrawLine(frame * new Vector3(a, b, scaledLength), frame * new Vector3(0, 1, scaledLength), color, duration);
- Debug.DrawLine(frame * new Vector3(0, 1, scaledLength), frame * new Vector3(-a, b, scaledLength), color, duration);
- Debug.DrawLine(frame * new Vector3(-a, b, scaledLength), frame * new Vector3(-b, a, scaledLength), color, duration);
- Debug.DrawLine(frame * new Vector3(-b, a, scaledLength), frame * new Vector3(-1, 0, scaledLength), color, duration);
- Debug.DrawLine(frame * new Vector3(-1, 0, scaledLength), frame * new Vector3(-b, -a, scaledLength), color, duration);
- Debug.DrawLine(frame * new Vector3(-b, -a, scaledLength), frame * new Vector3(-a, -b, scaledLength), color, duration);
- Debug.DrawLine(frame * new Vector3(-a, -b, scaledLength), frame * new Vector3(0, -1, scaledLength), color, duration);
- Debug.DrawLine(frame * new Vector3(-0, -1, scaledLength), frame * new Vector3(a, -b, scaledLength), color, duration);
- Debug.DrawLine(frame * new Vector3(a, -b, scaledLength), frame * new Vector3(b, -a, scaledLength), color, duration);
- Debug.DrawLine(frame * new Vector3(b, -a, scaledLength), frame * new Vector3(1, 0, scaledLength), color, duration);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement