83 lines
1.7 KiB
C#
83 lines
1.7 KiB
C#
using UnityEngine;
|
|
|
|
[RequireComponent(typeof(CharacterController))]
|
|
public class vp_CharacterController : vp_Controller
|
|
{
|
|
private CharacterController m_CharacterController;
|
|
|
|
public CharacterController CharacterController
|
|
{
|
|
get
|
|
{
|
|
if (m_CharacterController == null)
|
|
{
|
|
m_CharacterController = base.gameObject.GetComponent<CharacterController>();
|
|
}
|
|
return m_CharacterController;
|
|
}
|
|
}
|
|
|
|
protected virtual float OnValue_StepOffset
|
|
{
|
|
get
|
|
{
|
|
return CharacterController.stepOffset;
|
|
}
|
|
}
|
|
|
|
protected virtual float OnValue_SlopeLimit
|
|
{
|
|
get
|
|
{
|
|
return CharacterController.slopeLimit;
|
|
}
|
|
}
|
|
|
|
protected override float OnValue_Radius
|
|
{
|
|
get
|
|
{
|
|
return CharacterController.radius;
|
|
}
|
|
}
|
|
|
|
protected override float OnValue_Height
|
|
{
|
|
get
|
|
{
|
|
return CharacterController.height;
|
|
}
|
|
}
|
|
|
|
protected override void InitCollider()
|
|
{
|
|
m_NormalHeight = CharacterController.height;
|
|
CharacterController.center = (m_NormalCenter = m_NormalHeight * (Vector3.up * 0.5f));
|
|
CharacterController.radius = m_NormalHeight * 0.25f;
|
|
m_CrouchHeight = m_NormalHeight * PhysicsCrouchHeightModifier;
|
|
m_CrouchCenter = m_NormalCenter * PhysicsCrouchHeightModifier;
|
|
}
|
|
|
|
protected override void RefreshCollider()
|
|
{
|
|
if (base.Player.Crouch.Active && (!MotorFreeFly || base.Grounded))
|
|
{
|
|
CharacterController.height = m_NormalHeight * PhysicsCrouchHeightModifier;
|
|
CharacterController.center = m_NormalCenter * PhysicsCrouchHeightModifier;
|
|
}
|
|
else
|
|
{
|
|
CharacterController.height = m_NormalHeight;
|
|
CharacterController.center = m_NormalCenter;
|
|
}
|
|
}
|
|
|
|
protected virtual void OnMessage_Move(Vector3 direction)
|
|
{
|
|
if (CharacterController.enabled)
|
|
{
|
|
CharacterController.Move(direction);
|
|
}
|
|
}
|
|
}
|