using UnityEngine; namespace DoomBreakers { public class PlayerIdle : BaseState//, IPlayerIdle { private const string _animNameStr = "Idle"; private const string _animNameStr2 = "Swim"; private bool _isWater; public PlayerIdle(StateMachine s, Vector3 v) : base(velocity: v)//=> _stateMachine = s; { //Declaring new keyword Constructor isn't allowed in Unity and causes issues. //We use Setup() instead and Object Pool the states. } public void Setup(StateMachine s, Vector3 v, bool isWater) //: base(velocity: v) { base.BaseSetup(v); _stateMachine = s; _velocity = v; _isWater = isWater; } public override void IsIdle(ref Animator animator,ref IPlayerSprite playerSprite) { if (!_isWater) animator.Play(_animNameStr);//, 0, 0.0f); if (_isWater) animator.Play(_animNameStr2);//, 0, 0.0f); _velocity.x = 0f; if (Mathf.Abs(_velocity.y) >= 3.0f) { //_stateMachine.SetState(new PlayerFall(_stateMachine, _velocity, null, ref playerSprite)); _stateMachine.SetState(PlayerStatePool._instance.GetPlayerFallObjState(_stateMachine, _velocity, null, ref playerSprite, false, false)); } //base.UpdateBehaviour(); } } }