public float CalculateSlopeAngle() { float dist = SkinBottomWidth * transform.localScale.y + 10f * SmartPlatformCollider.k_SkinMinWidth; for (int i = 0; i < BottomCheckPoints.Count; ++i) { Vector3 start = transform.TransformPoint(BottomCheckPoints[i]); Vector3 dir = -transform.up; SmartRaycastHit smartHit = SmartRaycast(start, dir, dist, LayerCollision | OneWayCollisionDown); if (smartHit != null) { return(Vector2.Angle(smartHit.normal, Vector2.right) - 90f);; } } return(0f); }
protected float _CalculateGroundDist() { float groundDist = float.MaxValue; for (int i = 0; i < m_smartCollider.BottomCheckPoints.Count; ++i) { SmartRaycastHit smartHit = m_smartCollider.SmartRaycast( transform.TransformPoint(m_smartCollider.BottomCheckPoints[i]), -transform.up, float.MaxValue, m_smartCollider.LayerCollision | m_smartCollider.OneWayCollisionDown); if (smartHit != null) { groundDist = Mathf.Min(groundDist, smartHit.distance - m_smartCollider.SkinBottomWidth); } } return(groundDist); }
public bool IsGrounded() { if (m_isOnMovingPlatform) { return(true); } float dist = SkinBottomWidth * transform.localScale.y + 10f * SmartPlatformCollider.k_SkinMinWidth; for (int i = 0; i < BottomCheckPoints.Count; ++i) { Vector3 start = transform.TransformPoint(BottomCheckPoints[i]); Vector3 dir = -transform.up; SmartRaycastHit smartHit = SmartRaycast(start, dir, dist, LayerCollision | OneWayCollisionDown); if (smartHit != null) { return(true); } } return(false); }