Fiz a modificação no sprite, mas mesmo quando ele morre ele fica no 'ar'
Fiz a modificação no sprite, mas mesmo quando ele morre ele fica no 'ar'
Boa noite!
manda o código completo
using UnityEngine;
public class PlayerBehavior : MonoBehaviour { [SerializeField] private float speed = 5; [SerializeField] private float jumpForce = 3;
[Header("Propriedades de ataque")]
[SerializeField] private float attackRange = 1f;
[SerializeField] private Transform attackPosition;
[SerializeField] private LayerMask attackLayer;
private Rigidbody2D rigidbody;
private IsGroundedChecker isGroundedChecker;
private void Awake()
{
rigidbody = GetComponent<Rigidbody2D>();
isGroundedChecker = GetComponent<IsGroundedChecker>();
GetComponent<Health>().OnDead += HandlePlayerDeath;
}
private void Start()
{
GameManager.Instance.InputManager.OnJump += HandleJump;
}
private void Update()
{
float moveDirection = GameManager.Instance.InputManager.Movement;
transform.Translate(moveDirection * Time.deltaTime * speed, 0, 0);
if (moveDirection < 0)
{
transform.localScale = new Vector3(-0.69f, 0.69f, 1);
}
else if (moveDirection > 0)
{
transform.localScale = new Vector3(0.69f, 0.69f, 1f);
}
}
private void HandleJump()
{
if (isGroundedChecker.IsGrounded() == false)
return;
rigidbody.linearVelocity += Vector2.up * jumpForce;
}
private void HandlePlayerDeath()
{
GetComponent<Collider2D>().enabled = false;
rigidbody.constraints = RigidbodyConstraints2D.FreezeAll;
GameManager.Instance.InputManager.DisablePlayerInput();
}
private void Attack()
{
Collider2D[] hittedEnemies = Physics2D.OverlapCircleAll(attackPosition.position, attackRange, attackLayer);
print("Making enemy take damage");
print(hittedEnemies.Length);
foreach (Collider2D hittedEnemy in hittedEnemies)
{
print("Checking enemy");
if (hittedEnemy.TryGetComponent(out Health enemyHealth))
{
print("Getting damage");
enemyHealth.TakeDamage();
}
}
}
private void OnDrawGizmos()
{
Gizmos.color = Color.yellow;
Gizmos.DrawWireSphere(attackPosition.position, attackRange);
}
}