Как сделать быстрый и резкий рывок в Unity 2D для игры в жанре bullet hell?

Я разрабатываю игру в жанре bullet hell в Unity 2D и хочу добавить механику рывка для игрока. Рывок должен быть быстрым и коротким, чтобы игрок мог эффективно избегать атак противников. Однако при текущей реализации рывок кажется слишком медленным, даже когда я увеличиваю значение dashingPower.

вот весь код для движения:

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

public class PlayerController : MonoBehaviour
{
    public float speed;
    private float h;
    private float v;
    private Rigidbody2D _rb;
    private bool canDash = true;
    private bool isDashing;
    public float dashingPower = 24f;
    private float dashingTime = 0.5f;
    private float dashingCoolDown = 0.3f;
    private Vector2 dashingDirection;

    private void Start()
    {
        if (gameObject.GetComponent<Rigidbody2D>() != null)
        {
            _rb = gameObject.GetComponent<Rigidbody2D>();
        }
        else
        {
            Debug.LogError("Player doesnt have rigidbody component");
        }
    }

    private void Update()
    {
        if (isDashing)
        {
            return;
        }

        h = Input.GetAxisRaw("Horizontal");
        v = Input.GetAxisRaw("Vertical");

        if (Input.GetKeyDown(KeyCode.Space) && canDash && (h != 0 || v != 0))
        {
            Debug.Log("Dash");
            dashingDirection = new Vector2(h, v).normalized;
            StartCoroutine(Dash());
        }
    }

    private void FixedUpdate()
    {
        Vector2 movement = new Vector2(h, v) * speed * Time.deltaTime;
        _rb.velocity = movement;
    }

    private IEnumerator Dash()
    {
        canDash = false;
        isDashing = true;

        _rb.AddForce(dashingDirection * dashingPower, ForceMode2D.Impulse);

        yield return new WaitForSeconds(dashingTime);

        isDashing = false;
        _rb.velocity = Vector2.zero;

        yield return new WaitForSeconds(dashingCoolDown);
        canDash = true;     
    }
}

Я увеличил dashingPower до очень больших значений (например, 1e+19), но рывок по-прежнему ощущается медленным.

Я также пробовал менять dashingTime на более короткое значение, чтобы сделать рывок резким, но это не помогло.

Параметры Rigidbody2D у игрока: Mass = 0.1736139, Angular Drag = 0.05, Linear Drag = 0


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