Meu personagem parou de se mexer, a animação vai só que ele não se move.
segue o codigo abaixo:
public class PlayerBehavior : MonoBehaviour
{
public float speed = 5;
public float JumpStrengh = 5;
[Header("Propriedades de ataque")]
[SerializeField] float attackRange = 1f;
[SerializeField] Transform attackPosition;
[SerializeField] LayerMask attackLayer;
[SerializeField]private int damage = 5;
private Rigidbody2D rigidbody2D;
private IsGroundedChecker isGroundedChecker;
float moveDirection;
Health health;
private void Awake()
{
health.GetComponent<Health>();
rigidbody2D = GetComponent<Rigidbody2D>();
isGroundedChecker = GetComponent<IsGroundedChecker>();
health.OnDead += HandlePlayerDeath;
health.OnHurt += PlayHurtSound;
}
private void Start()
{
GameManeger.Instance.InputManeger.OnJump += HandleJump;
}
private void Update()
{
MovePlayer();
flipPlayer();
}
private void HandleJump()
{
if (isGroundedChecker.IsGrounded() == false) return;
GameManeger.Instance.AudioManegar.PlaySFX(SFX.PlayerJump);
rigidbody2D.linearVelocity += Vector2.up * JumpStrengh;
}
private void MovePlayer()
{
moveDirection = GameManeger.Instance.InputManeger.Movement * Time.deltaTime * speed * 10;
Vector2 vectorMoveDirection = new Vector2(moveDirection, rigidbody2D.linearVelocity.y);
rigidbody2D.linearVelocity = vectorMoveDirection;
}
private void flipPlayer()
{
if (moveDirection < 0)
{
transform.localScale = new Vector3(-1, 1, 1);
}
else if (moveDirection > 0)
{
transform.localScale = Vector3.one;
}
}
void PlayHurtSound()
{
GameManeger.Instance.AudioManegar.PlaySFX(SFX.PlayerHurt);
}
void HandlePlayerDeath()
{
GameManeger.Instance.AudioManegar.PlaySFX(SFX.PlayerDeath);
GetComponent<Collider2D>().enabled = false;
rigidbody2D.constraints = RigidbodyConstraints2D.FreezeAll;
GameManeger.Instance.InputManeger.DisablePlayerInput();
}
void attack()
{
GameManeger.Instance.AudioManegar.PlaySFX(SFX.PlayerAttack);
Collider2D[] hittedEnemis = Physics2D.OverlapCircleAll(attackPosition.position, attackRange, attackLayer);
print("Dano dado");
print(hittedEnemis);
foreach (Collider2D hittedEnemy in hittedEnemis)
{
print("Cheking enemy");
if (hittedEnemy.TryGetComponent(out Health enemyHealth))
{
enemyHealth.TakeDamage(damage);
print("tomando dano");
}
}
}
void OnDrawGizmos()
{
Gizmos.color = Color.yellow;
Gizmos.DrawWireSphere(attackPosition.position, attackRange);
}
}