mirror of
https://github.com/tym1116/BH3.git
synced 2025-12-16 08:25:20 +01:00
75 lines
1.7 KiB
C#
75 lines
1.7 KiB
C#
using UnityEngine;
|
|
|
|
namespace MoleMole
|
|
{
|
|
public class FollowRotateToAvatarFacing : BaseFollowShortState
|
|
{
|
|
private float _polar;
|
|
|
|
private float _targetPolar;
|
|
|
|
public FollowRotateToAvatarFacing(MainCameraFollowState followState)
|
|
: base(followState)
|
|
{
|
|
base.isSkippingBaseState = true;
|
|
}
|
|
|
|
public bool CanRotate()
|
|
{
|
|
float f = Miscs.AngleFromToIgnoreY(-_owner.cameraForward, -_owner.avatar.FaceDirection);
|
|
float num = Mathf.Abs(f);
|
|
return num > 10f;
|
|
}
|
|
|
|
public override void Enter()
|
|
{
|
|
if (_owner.followAvatarControlledRotate.active)
|
|
{
|
|
_owner.followAvatarControlledRotate.SetExitingControl(false);
|
|
}
|
|
float num = Miscs.AngleFromToIgnoreY(-_owner.cameraForward, -_owner.avatar.FaceDirection);
|
|
float num2 = Mathf.Abs(num);
|
|
if (num2 < 10f)
|
|
{
|
|
_targetPolar = _owner.anchorPolar;
|
|
}
|
|
else if (num2 > 90f && !_owner.avatar.IsAnimatorInTag(AvatarData.AvatarTagGroup.Stable))
|
|
{
|
|
_targetPolar = _owner.anchorPolar - Mathf.Sign(num) * 90f;
|
|
}
|
|
else
|
|
{
|
|
_targetPolar = _owner.anchorPolar - num;
|
|
}
|
|
_polar = _owner.anchorPolar;
|
|
}
|
|
|
|
public override void PostUpdate()
|
|
{
|
|
if (Mathf.Abs(_polar - _targetPolar) < 2f)
|
|
{
|
|
End();
|
|
}
|
|
else
|
|
{
|
|
_polar = Mathf.Lerp(_polar, _targetPolar, Time.deltaTime * 5f);
|
|
_owner.anchorPolar = _polar;
|
|
}
|
|
_owner.needLerpPositionThisFrame = false;
|
|
_owner.needLerpForwardThisFrame = false;
|
|
}
|
|
|
|
public override void Exit()
|
|
{
|
|
if (_owner.followAvatarControlledRotate.active)
|
|
{
|
|
_owner.followAvatarControlledRotate.SetExitingControl(true);
|
|
return;
|
|
}
|
|
_owner.forwardLerpRatio = 8f;
|
|
_owner.posLerpRatio = 8f;
|
|
_owner.recoverState.TryRecover();
|
|
}
|
|
}
|
|
}
|