KraGenDeveloper
@KraGenDeveloper
Unity Developer

Как сделать статическое движение в сторону?

Привет всем, в общем игра по типу флапи берд. Нужно что бы игрок постоянно двигался в сторону (для игрока это прямо) делаю я это так
void FixedUpdate(){
        rb.AddForce(target.right * 0.06f, ForceMode.Impulse);  
    }

но вот когда я прыгаю
public void Move(){
        if(Energy > 0){
            rb.AddForce(target.up * jumpForce,ForceMode.Impulse);
            if(!Nimb)Energy--;
        }

то эта скорость в сторону увеличивается и если прыгнуть несколько раз подряд то игрок набирает большую скорость что вообще не нужно. Как это можно исправить? помогите пожалуйста
  • Вопрос задан
  • 119 просмотров
Решения вопроса 1
K0TlK
@K0TlK
Буллю людей.
Использовать нормальное перемещение, а не через AddForce.

Используйте velocity у Rigidbody, чтобы задавать конкретную скорость, а не какую-то силу.

Вот пример:

using UnityEngine;

[RequireComponent(typeof(Rigidbody2D))]
public class Bird : MonoBehaviour
{
    [SerializeField] private float _speed;
    [SerializeField] private float _jumpSpeed;

    private Rigidbody2D _rb;

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

    private void Update()
    {
        Move();
        if (Input.GetKeyDown(KeyCode.Space))
        {
            Jump();
        }
    }

    private void Jump()
    {
        var velocity = _rb.velocity;
        velocity.y = _jumpSpeed;
        _rb.velocity = velocity;
    }

    private void Move()
    {
        var velocity = _rb.velocity;
        velocity.x = _speed;
        _rb.velocity = velocity;
    }

}


В методе Move устанавливаем скорость по оси Х, тем самым персонаж двигается вправо. В методе Jump устанавливаем скорость по оси Y и персонаж прыгает. Это лишь пример того, как можно делать движение через velocity, реализуйте все под свои нужды. Используя перемещение через velocity, куда проще будет отбалансить игру, просто изменив скорость на нужную, нежели гадать какую силу нужно приложить к объекту, чтобы он прыгал выше.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы