Как сделать быстрый и резкий рывок в 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