Перемещение игрока по грид сетке

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

Перемещение игрока по грид сетке

Сообщение VlaDrozd 29 окт 2019, 00:01

Здравствуйте. Пишу игру, где герой двигается по клеткам. Движение разрешено вверх, вниз, влево, вправо на одну клетку(но не по диагонали).Игрок кликает на клетку(грид сетка) -> отслеживается координата клетки -> если персонаж может перейти на клетку, то он переходит. Получаю координату клетки вот так:

Синтаксис:
Используется csharp
    public Grid grid;

    void Update()
    {
        if (Input.GetMouseButtonDown(0))
        {
            Vector3 pos = Camera.main.ScreenToWorldPoint(Input.mousePosition); // координата клика
            Vector3Int posInt = grid.LocalToCell(pos); // координата ячейки
            Vector3 cell = posInt + new Vector3(0.5f, 0.5f, 0); // координата центра ячейки (сюда должен попасть игрок)
        }
    }
 

Вопрос только в том, как отследить, что клетка подходит для хода и передвинуть персонажа туда(не телепортировать)? Отследить, что подходит я то могу, но песле первого передвижения координата персонажа становится не 5.5 а 5.500001 и проверка не работает. Двигаю с помощью Vector3.Lerp(). Заранее спасибо за помощь)
VlaDrozd
UNец
 
Сообщения: 1
Зарегистрирован: 28 окт 2019, 11:53

Re: Перемещение игрока по грид сетке

Сообщение 1max1 29 окт 2019, 05:34

Флоаты сравнивать только через погрешность, типа:
Синтаксис:
Используется csharp
if ((myPos - cellPos).sqrMagnitude < 1.0f) // Уже на стоим на клетке
Аватара пользователя
1max1
Адепт
 
Сообщения: 5505
Зарегистрирован: 28 июн 2017, 10:51


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

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

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