Страница 1 из 1

Как сделать постепенный набор скорости у игрока?

СообщениеДобавлено: 28 июн 2022, 10:32
Lurfin
Здравствуйте. Возникла проблема. Хочу чтобы чем дольше жмешь на кнопку движения по горизонтали (2д проект) тем больше скорость, при этом ограничения тоже должны быть.
Прикреплю свой скрипт управления персонажем.


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

public class Vergil_Character : MonoBehaviour
{
[SerializeField] private float speed = 3f; // скорость движения
[SerializeField] private int lives = 5; // количество жизней
[SerializeField] private float jumpForce = 15f; // сила прыжка
private bool isGrounded = false;

private Rigidbody2D rb;
private SpriteRenderer sprite;
float move;

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

private void Awake()
{
rb = GetComponent<Rigidbody2D>();
sprite = GetComponentInChildren<SpriteRenderer>();
}

private void FixedUpdate()
{
CheckGround();
move = Input.GetAxis("Horizontal");
rb.velocity = new Vector2(move * speed, rb.velocity.y);
}

private void Update()
{
if (Input.GetButton("Horizontal"))
Run();
if (isGrounded && Input.GetButtonDown("Jump"))
Jump();
}

private void Run()
{
Vector3 dir = transform.right * Input.GetAxis("Horizontal");
transform.position = Vector3.MoveTowards(transform.position, transform.position + dir, speed * Time.deltaTime);
sprite.flipX = dir.x < 0.0f;
}

private void Jump()
{
rb.AddForce(transform.up * jumpForce, ForceMode2D.Impulse);
}

private void CheckGround()
{
Collider2D[] collider = Physics2D.OverlapCircleAll(transform.position, 0.3f);
isGrounded = collider.Length > 1;
}
}

Re: Как сделать постепенный набор скорости у игрока?

СообщениеДобавлено: 29 июн 2022, 10:16
pantsurevolution
Может быть так:

В каждом кадре дополнительно проверять Инпут.ГеткейДаун на конкретную клавишу и постепенно наращивать множитель скорости, пока клавиша зажата... Когда клавиша не зажата сбрасывать множитель скорости на 1.