Плавное начало перемещение персонажа.

Форум для самых маленьких, а так же тех, кому недосуг читать справку самостоятельно.

Плавное начало перемещение персонажа.

Сообщение Max29 23 апр 2023, 15:04

Здравствуйте друзья. Такой вопрос как реализовать плавное начало передвижения персонажа платформера?

Мой пример кода:
Синтаксис:
Используется csharp
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class MoveHero : MonoBehaviour
{
    public bool idle = true;
    public bool walk = false;
    public float heroSpeed = 5f;
    Animator anim;
    SettingMain set;

    private void Awake()
    {
        anim = GetComponent<Animator>();
        set = new SettingMain();
    }

    private void Start()
    {
        HeroIdle();
    }

    private void Update()
    {
        if (Input.GetKey(set.moveRightKey))
        {
            HeroMove();
        }
        else
        {
            HeroIdle();
        }
    }

    private void HeroMove()
    {
        anim.speed = heroSpeed;
        anim.Play("walk_foot");
        anim.Play("walk_hand");

        transform.position += new Vector3(0, 0, 1) * heroSpeed * Time.deltaTime;

        idle = false;
        walk = true;
    }

    private void HeroIdle()
    {
        anim.speed = heroSpeed;
        anim.Play("idle_foot");
        anim.Play("idle_hand");

        idle = true;
        walk = false;
    }
}
 


Хочется реализовать чтоб персонаж не резко с места стартовал, а плавно разгонялся.
Max29
UNец
 
Сообщения: 23
Зарегистрирован: 20 ноя 2022, 14:17

Re: Плавное начало перемещение персонажа.

Сообщение 1max1 23 апр 2023, 15:57

Нужно использовать это https://docs.unity3d.com/ScriptReferenc ... tAxis.html
Аватара пользователя
1max1
Адепт
 
Сообщения: 5505
Зарегистрирован: 28 июн 2017, 10:51

Re: Плавное начало перемещение персонажа.

Сообщение Max29 23 апр 2023, 16:18

1max1 писал(а):Нужно использовать это https://docs.unity3d.com/ScriptReferenc ... tAxis.html

Спасибо, действительно. А то я полез в лерпы.
Синтаксис:
Используется csharp
    private void Update()
    {
        if(Input.GetAxis("Horizontal") != 0)
        {
            HeroMove();
        }
        else
        {
            HeroIdle();
        }
    }

    private void HeroMove()
    {
        float speed = Input.GetAxis("Horizontal");
        anim.speed = speed;
        anim.Play("walk_foot");
        anim.Play("walk_hand");

        transform.position += new Vector3(0, 0, speed) * heroSpeed * Time.deltaTime;

        idle = false;
        walk = true;

        print(speed);
    }

    private void HeroIdle()
    {
        anim.speed = heroSpeed;
        anim.Play("idle_foot");
        anim.Play("idle_hand");

        idle = true;
        walk = false;
    }


Возникает еще один вопрос, как сделать плавный переход анимационых роликов. А то смена с движения на покой какая то дерганая.
Max29
UNец
 
Сообщения: 23
Зарегистрирован: 20 ноя 2022, 14:17

Re: Плавное начало перемещение персонажа.

Сообщение 1max1 23 апр 2023, 16:24

Аватара пользователя
1max1
Адепт
 
Сообщения: 5505
Зарегистрирован: 28 июн 2017, 10:51


Вернуться в Почемучка

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 33