using System.Collections.Generic; using UnityEngine; using Lightbug.Utilities; namespace Lightbug.CharacterControllerPro.Demo { public class Rope : MonoBehaviour { [Header("Debug")] [SerializeField] bool showGizmos = true; [Header("Properties")] [SerializeField] Vector3 topLocalPosition = Vector3.zero; [SerializeField] Vector3 bottomLocalPosition = Vector3.zero; public Vector3 TopPosition { get { return transform.position + transform.TransformVectorUnscaled(topLocalPosition); } } public Vector3 BottomPosition { get { return transform.position + transform.TransformVectorUnscaled(bottomLocalPosition); } } public Vector3 BottomToTop { get { return TopPosition - BottomPosition; } } public bool IsInRange(Vector3 referencePosition) { Vector3 bottomToReference = referencePosition - BottomPosition; if (Vector3.Angle(BottomToTop, bottomToReference) > 90f) return false; Vector3 topToReference = referencePosition - TopPosition; if (Vector3.Angle(BottomToTop, topToReference) < 90f) return false; return true; } void OnDrawGizmos() { if (!showGizmos) return; Gizmos.color = new Color(0f, 1f, 0f, 0.2f); Gizmos.DrawSphere(TopPosition, 0.25f); Gizmos.color = new Color(0f, 0f, 1f, 0.2f); Gizmos.DrawSphere(BottomPosition, 0.25f); } } }