to new git
This commit is contained in:
68
Assets/Scripts/Character/NpcState.cs
Normal file
68
Assets/Scripts/Character/NpcState.cs
Normal file
@ -0,0 +1,68 @@
|
||||
using UnityEngine;
|
||||
|
||||
public enum NpcEnumState
|
||||
{
|
||||
InCover,
|
||||
InDirectPoint,
|
||||
InRunning,
|
||||
}
|
||||
|
||||
public enum NpcBodyState
|
||||
{
|
||||
Crouching,
|
||||
Standing,
|
||||
}
|
||||
|
||||
public class NpcCrouchingState : INpcBaseBodyState
|
||||
{
|
||||
public NpcBodyState State => NpcBodyState.Crouching;
|
||||
|
||||
public Vector3 GetPointToHit(GameObject go)
|
||||
{
|
||||
MeshRenderer meshRenderer;
|
||||
go.TryGetComponent<MeshRenderer>(out meshRenderer);
|
||||
return meshRenderer.bounds.center;
|
||||
}
|
||||
}
|
||||
|
||||
public class NpcStandingState : INpcBaseBodyState
|
||||
{
|
||||
public NpcBodyState State => NpcBodyState.Standing;
|
||||
|
||||
public Vector3 GetPointToHit(GameObject go)
|
||||
{
|
||||
MeshRenderer meshRenderer;
|
||||
go.TryGetComponent<MeshRenderer>(out meshRenderer);
|
||||
return meshRenderer.bounds.center;
|
||||
}
|
||||
}
|
||||
|
||||
public class NpcDirectPointState : INpcBaseState
|
||||
{
|
||||
public bool InCover => false;
|
||||
public bool IsRunning => false;
|
||||
public bool InDirectPoint => false;
|
||||
public float HitChance => SettingsReader.Instance.GetSettings.GetHitChanceInDirectPoint;
|
||||
public float DoDamageChance => SettingsReader.Instance.GetSettings.DoDamageChanceInDirectPoint;
|
||||
public NpcEnumState State => NpcEnumState.InDirectPoint;
|
||||
}
|
||||
|
||||
public class NpcRunningState : INpcBaseState
|
||||
{
|
||||
public bool InCover => false;
|
||||
public bool IsRunning => true;
|
||||
public bool InDirectPoint => false;
|
||||
public float HitChance => SettingsReader.Instance.GetSettings.GetHitChanceInRunning;
|
||||
public float DoDamageChance => SettingsReader.Instance.GetSettings.DoDamageChanceInRunning;
|
||||
public NpcEnumState State => NpcEnumState.InRunning;
|
||||
}
|
||||
|
||||
public class NpcInCoverState : INpcBaseState
|
||||
{
|
||||
public bool InCover => true;
|
||||
public bool IsRunning => false;
|
||||
public bool InDirectPoint => false;
|
||||
public float HitChance => SettingsReader.Instance.GetSettings.GetHitChanceInCover;
|
||||
public float DoDamageChance => SettingsReader.Instance.GetSettings.DoDamageChanceInCover;
|
||||
public NpcEnumState State => NpcEnumState.InCover;
|
||||
}
|
Reference in New Issue
Block a user