Alex_Kuzen
@Alex_Kuzen

Как сделать слеш персонажа в юнити?

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

public class Move : MonoBehaviour
{
    public Rigidbody2D rb;
    [SerializeField]float speed = 0.10f;
    [SerializeField]float Jump_Force = 2f;
    [SerializeField]bool onGround = true;
    [SerializeField]bool force;
    // Start is called before the first frame update
    void Start()
    {
        rb = GetComponent<Rigidbody2D>();
    }

    // Update is called once per frame
    void Update()
    {
        var moveX = Input.GetAxis("Horizontal") * speed;
        transform.Translate(moveX, 0,0, Space.World);
        if (Input.GetKey(KeyCode.Space) && onGround == true)
        {
            rb.AddForce(Vector2.up * Jump_Force, ForceMode2D.Force);
        }
        if (Input.GetKeyDown(KeyCode.LeftShift) & Input.GetKey(KeyCode.A) )
        {
            rb.AddForce(Vector2.left * 10, ForceMode2D.Impulse);
            


        }
        if(Input.GetKeyDown(KeyCode.LeftShift) & Input.GetKey(KeyCode.D))
            {
            rb.AddForce(Vector2.right * -10, ForceMode2D.Impulse);
            
            


        }
    }
    private void OnCollisionStay2D(Collision2D collision)
    {
        onGround = true;
    }
    private void OnCollisionExit2D(Collision2D collision)
    {
        onGround = false;
    }
}


Вот в этом месте я хочу что бы персонаж резко сделал слеш\перекат в сторону, с ускорением.
}
        if (Input.GetKeyDown(KeyCode.LeftShift) & Input.GetKey(KeyCode.A) )
        {
            rb.AddForce(Vector2.left * 10, ForceMode2D.Impulse);

Но он мало того, что не делает резкий рывок, так еще и бесконечно двигается в определенном направлении. Как сделать, чтобы рывок был коротким?
  • Вопрос задан
  • 135 просмотров
Пригласить эксперта
Ответы на вопрос 1
@NIKROTOS
Начинающий программист.
var moveX = Input.GetAxis("Horizontal") * speed;// эту строку лучше написать в старт, или хотя-бы объявить переменную заранее, а не делать это каждый кадр)
transform.Translate(moveX, 0,0, Space.World);//вот здесь написано постоянно двигаться в одном направлении.

Если тебе нужно , чтоб он постоянно двигался вперёд и прыгал в стороны, продолжая бежать дальше(ранер), то тебе стоит сдвигать героя по координатам. Для управления скоростью переката, лучше использовать кривые (https://dtf.ru/gamedev/943158-alternativnye-metody...)
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы