2
respostas

[Dúvida] Gravidade na morte

Fiz a modificação no sprite, mas mesmo quando ele morre ele fica no 'ar' Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

2 respostas

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);
}

}