73 lines
1.6 KiB
C#
73 lines
1.6 KiB
C#
using UnityEngine;
|
|
|
|
[RequireComponent(typeof(Rigidbody))]
|
|
[RequireComponent(typeof(CapsuleCollider))]
|
|
public class vp_CapsuleController : vp_Controller
|
|
{
|
|
protected CapsuleCollider m_CapsuleCollider;
|
|
|
|
protected CapsuleCollider CapsuleCollider
|
|
{
|
|
get
|
|
{
|
|
if (m_CapsuleCollider == null)
|
|
{
|
|
m_CapsuleCollider = base.Collider as CapsuleCollider;
|
|
if (m_CapsuleCollider != null && m_CapsuleCollider.isTrigger)
|
|
{
|
|
m_CapsuleCollider = null;
|
|
}
|
|
}
|
|
return m_CapsuleCollider;
|
|
}
|
|
}
|
|
|
|
protected override float OnValue_Radius
|
|
{
|
|
get
|
|
{
|
|
return CapsuleCollider.radius;
|
|
}
|
|
}
|
|
|
|
protected override float OnValue_Height
|
|
{
|
|
get
|
|
{
|
|
return CapsuleCollider.height;
|
|
}
|
|
}
|
|
|
|
protected override void InitCollider()
|
|
{
|
|
m_NormalHeight = CapsuleCollider.height;
|
|
CapsuleCollider.center = (m_NormalCenter = m_NormalHeight * (Vector3.up * 0.5f));
|
|
CapsuleCollider.radius = m_NormalHeight * 0.25f;
|
|
m_CrouchHeight = m_NormalHeight * PhysicsCrouchHeightModifier;
|
|
m_CrouchCenter = m_NormalCenter * PhysicsCrouchHeightModifier;
|
|
base.Collider.transform.localPosition = Vector3.zero;
|
|
}
|
|
|
|
protected override void RefreshCollider()
|
|
{
|
|
if (base.Player.Crouch.Active && (!MotorFreeFly || base.Grounded))
|
|
{
|
|
CapsuleCollider.height = m_NormalHeight * PhysicsCrouchHeightModifier;
|
|
CapsuleCollider.center = m_NormalCenter * PhysicsCrouchHeightModifier;
|
|
}
|
|
else
|
|
{
|
|
CapsuleCollider.height = m_NormalHeight;
|
|
CapsuleCollider.center = m_NormalCenter;
|
|
}
|
|
}
|
|
|
|
public override void EnableCollider(bool isEnabled = true)
|
|
{
|
|
if (CapsuleCollider != null)
|
|
{
|
|
CapsuleCollider.enabled = isEnabled;
|
|
}
|
|
}
|
|
}
|