Плавное передвижение объекта

Программирование на Юнити.

Плавное передвижение объекта

Сообщение vebster23 07 фев 2020, 22:25

Доброго времени суток. Я недавно начал изучать Unity и решил сделать что-то для себя) Суть игры в следующем: игрок на начальном экране нажимает на кнопки с направлением движения, а после нажатия кнопки "Play" объект(главный герой) начинает двигаться в тех направлениях, в которых указал игрок нажимая на кнопки. Проблема в том, что когда объект начинает передвигаться, он это делает быстро(телепортируется), а мне нужно плавное перемещение. Пробовал Vector3.Lerp() и transform.Translate(), но всё безрезультатно, хотя Vector3.Lerp() в Update() работает. Так же переносил весь код из метода Play() в метод Update(), но тоже не работает.
Я сегодня потратил 5 часов в поисках решения этой проблемы в интернете и на офф. документации Unity. Уже руки опускаются))
Понимаю, с моим уровнем знаний, я многое не понимаю и чего-го мог упустить, но всё-же надеюсь на вашу помощь, ведь не хочется на самом начале изучения чего-то нового - разочароваться в этом и бросить)
Заранее благодарю за помощь.
Изображение
Синтаксис:
Используется csharp
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class PlayerController : MonoBehaviour
{

    List<string> PlayerMovement = new List<string>();
    public float speed;
 
    void Start()
    {

    }


    void Update()
    {

    }

        public void Forward()
        {
            PlayerMovement.Add("Forward");

        }
        public void Back()
        {
            PlayerMovement.Add("Back");

        }
        public void RotateLeft()
        {
            PlayerMovement.Add("RotateLeft");

        }
        public void RotateRight()
        {
            PlayerMovement.Add("RotateRight");

        }
        public void Play()
        {
       
            for (int i = 0; i < PlayerMovement.Count; i++)
            {
                switch (PlayerMovement[i])
                {

                    case "Forward":
                        print("Forward");
                        transform.position += transform.forward * (speed * Time.deltaTime);
                        break;

                    case "Back":
                        print("Back");
                        transform.position -= transform.forward * (speed * Time.deltaTime);
                        break;

                    case "RotateLeft":
                        print("RotateLeft");
                        transform.Rotate(0f, -90f, 0f);
                        break;

                    case "RotateRight":
                        print("RotateRight");
                        transform.Rotate(0, 90, 0);
                        break;
                }
            }
            PlayerMovement.Clear();
            print(PlayerMovement.Count);

        }
}
   
vebster23
UNец
 
Сообщения: 1
Зарегистрирован: 07 фев 2020, 21:05

Re: Плавное передвижение объекта

Сообщение Dio5555 12 фев 2020, 20:13

хз может у вас нечто иное своё; типо строим свой велосипед, но может поможет это.

https://www.youtube.com/watch?v=k0MKDPKp3ZI (Rigidbody)

https://www.youtube.com/watch?v=0PPCDqhksuU&t=8s (CharacterController)
Dio5555
UNIт
 
Сообщения: 83
Зарегистрирован: 06 сен 2018, 11:05


Вернуться в Скрипты

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

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