При смерти персонажа и одновременном прыжке персонаж начинает подниматься ровно по 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();
}