Движение спрайта

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

Движение спрайта

Сообщение noran 25 июл 2018, 18:20

Нужно реализовать движение 2д объекта по горизонтали независимо от физики, иными словами он не должен падать. Пишу этот скрипт, (range - преодолеваемое расстояние) но после отпуска клавиши объект возвращается на начальное место. Как сделать так, чтобы он не только не возвращался а и продолжал двигаться при нажатии а после отпуска останавливался на расстоянии, кратном range?
Синтаксис:
Используется csharp
 public GameObject obj;
    public float range = 5f;

    void Update()
    {
        float h = Input.GetAxis("Horizontal");
        float xPos = h * range;

        obj.transform.position = new Vector2(xPos, 0);
    }
noran
UNец
 
Сообщения: 1
Зарегистрирован: 25 июл 2018, 18:06

Re: Движение спрайта

Сообщение 1100001001 03 авг 2018, 17:23

Проанализируй какое значение принимает переменная xPos при отпускании клавиши?

Синтаксис:
Используется csharp
float h = Input.GetAxis("Horizontal"); // h=0 - т.к. клавиша не нажата
float xPos = h * range;
 


Это причина возврата объекта в координату с точкой x=0 когда ты отпускаешь клавишу

Немного изменим код. Замени одну строку:

Синтаксис:
Используется csharp
obj.transform.position = new Vector2(obj.transform.position.x + xPos, 0);
_https://vk.ru/belovedtoy
Аватара пользователя
1100001001
UNITрон
 
Сообщения: 276
Зарегистрирован: 26 сен 2012, 05:34
  • Сайт

Re: Движение спрайта

Сообщение Rando_OM 06 авг 2018, 06:50

Это бесконечно вправо
Синтаксис:
Используется csharp
obj.transform.position += Vector2.right * xPos;
Мои игры доступны онлайн на Kongregate.com! ---->>
Rando_OM
UNIт
 
Сообщения: 94
Зарегистрирован: 22 дек 2015, 03:44
Откуда: Россия
Skype: gorodok402
  • Сайт


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

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

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