При смерти персонажа и одновременном прыжке персонаж начинает подниматься ровно по y . Unity 2D


using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Player : MonoBehaviour
{
    public Rigidbody2D rb;

    void Start()
    {
        rb = GetComponent<Rigidbody2D>();
    }

    void Update()
    {
        Jump();
        Walk();
        CheckGround();
    }

    private void Flip()
    {
        horizontalMove = !horizontalMove;
        Vector3 theScale = transform.localScale;
        theScale.x *= -1;
        transform.localScale = theScale;
    }

    int die = 1;
    public float speed;
    private bool horizontalMove = true;
    private void Walk()
    {
        float move = Input.GetAxis("Horizontal");
        rb.velocity = new Vector2(die * move * speed, rb.velocity.y);

        if (die == 1)
        {
            if (move > 0 && !horizontalMove)
            {
                Flip();
            }
            else if (move < 0 && horizontalMove)
            {
                Flip();
            }
        }
    }

    public float jump;
    void Jump()
    {
        if (Input.GetKeyDown(KeyCode.Space) && OnGround)
        {
            rb.AddForce(Vector2.up * jump);
        }
    }

    public bool OnGround;
    public Transform GroundCheck;
    public float CheckRadius = 0.5f;
    public LayerMask Ground;
    public void CheckGround()
    {
        OnGround = Physics2D.OverlapCircle(GroundCheck.position, CheckRadius, Ground);
    }

    public int Hp;
    private void OnTriggerEnter2D(Collider2D collision)
    {
        if (collision.tag == "Enemy")
        {
            Hp--;
            if (Hp == 0)
            {
                rb.isKinematic = true;
                die = 0;
            }
        }
    }
}        

Вот код Делал все на unity 2020 года


Ответы (1 шт):

Автор решения: Алексей Шиманский

Опустим момент, что die у вас число. Должно быть как минимум булевым. В целом, обычно делают так: перед всеми необходимыми методами делаем проверку на смерть. Если true, то сразу return

void Update() {
    if (die == 1)
        return; 

    Jump();
    Walk();
    CheckGround();
}
→ Ссылка