Страница 1 из 1

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

СообщениеДобавлено: 25 июл 2018, 18:20
noran
Нужно реализовать движение 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);
    }

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

СообщениеДобавлено: 03 авг 2018, 17:23
1100001001
Проанализируй какое значение принимает переменная 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);

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

СообщениеДобавлено: 06 авг 2018, 06:50
Rando_OM
Это бесконечно вправо
Синтаксис:
Используется csharp
obj.transform.position += Vector2.right * xPos;