Форум программистов, компьютерный форум, киберфорум
Unity, Unity3D
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.95/55: Рейтинг темы: голосов - 55, средняя оценка - 4.95
 Аватар для LamerOnLine
0 / 0 / 0
Регистрация: 23.01.2009
Сообщений: 37
1

Координаты тайла в Tilemap

08.02.2019, 16:51. Показов 11134. Ответов 7

Author24 — интернет-сервис помощи студентам
Имеется два тайлмапа, один для пола и второй для стен. Персонаж перемещается четко по тайлам при помощи transform.position. Пробовал это делать при помощи физики, коллайдеров и velocity, но там начинаются смещения и при движении в стену персонаж часто пролезает между двумя коллайдерами стен. В итоге сделал движение без физики и по тайлам персонаж ходит просто замечательно. Но возник вопрос - как понять когда персонаж хочет шагнуть в стену? Можно ли, зная в какие координаты собирается шагнуть персонаж, определить - какой тайл находится в тайлмапе по этим координатам? Есть какие-нибудь примеры работы с координатами тайлов в тайлмапе?
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
08.02.2019, 16:51
Ответы с готовыми решениями:

Как сделать так, чтобы кусок "карты" брался из файла? (SFML, tilemap)
Имеется "карта" в виде массива: const int H = 12; const int W = 40; String TileMap = { ...

Даны целочисленные координаты трех вершин прямоугольника, найти координаты четвертой
Даны целочисленные координаты трех вершин прямоугольника, стороны которого параллельны координатным...

Даны координаты вершин треугольника и координаты некоторой точки внутри него
Даны координаты вершин треугольника и координаты некоторой точки внутри него. Найти расстояние от...

Даны координаты вершин треугольника и координаты некоторой точки внутри него
Даны координаты вершин треугольника и координаты некоторой точки внутри него. Найти расстояние от...

7
 Аватар для Prog_maker
459 / 403 / 153
Регистрация: 23.01.2011
Сообщений: 1,054
08.02.2019, 22:42 2
https://docs.unity3d.com/Scrip... tTile.html
https://docs.unity3d.com/Scrip... lemap.html
1
 Аватар для Cr0c
753 / 600 / 204
Регистрация: 06.08.2015
Сообщений: 2,432
09.02.2019, 00:08 3
https://docs.unity3d.com/ScriptReference/Grid.html
В самих тайлах нет координат, они в гриде считаются
1
 Аватар для Prog_maker
459 / 403 / 153
Регистрация: 23.01.2011
Сообщений: 1,054
09.02.2019, 13:33 4
Лучший ответ Сообщение было отмечено LamerOnLine как решение

Решение

В самих тайлах нет координат, они в гриде считаются
Public Tilemaps.TileBase GetTile(Vector3Int position);
1
 Аватар для Cr0c
753 / 600 / 204
Регистрация: 06.08.2015
Сообщений: 2,432
09.02.2019, 15:23 5
Prog_maker, это не мировые координаты, вообще-то
1
 Аватар для LamerOnLine
0 / 0 / 0
Регистрация: 23.01.2009
Сообщений: 37
11.02.2019, 13:36  [ТС] 6
Цитата Сообщение от Cr0c Посмотреть сообщение
это не мировые координаты, вообще-то
Как оказалось, вполне можно обойтись относительными координатами самого тайлмапа. При помощи WorldToCell(transform.position) я получаю текущий тайл на котором находится персонаж, а потом, перед перемещением, проверяю при помощи GetTile(Vector3Int position) - чем является тайл в который шагает персонаж, просто прибавив перемещение к координате текущего тайла. Для простого пошагового перемещения такое решение вполне подходит, а вот для каких-нибудь телепортаций, наверное надо будет пользоваться мировыми координатами.
0
0 / 0 / 0
Регистрация: 20.10.2019
Сообщений: 9
17.03.2022, 18:27 7
можете скинуть свою доработку? я уже неделю сижу и не втупляю, у меня похожая конфигурация игры, как сделать, чтобы на определенные клетки не кликалось?
0
 Аватар для Cr0c
753 / 600 / 204
Регистрация: 06.08.2015
Сообщений: 2,432
17.03.2022, 23:45 8
LamerOnLine, вообще надо делать абстрактную систему, в которой и происходят все события (перемещение, взаимодействие, атака), а сам грид/тайлмап только для визуала использовать, либо через физику и коллайдеры без абстракции (но это хуже для ИИ и поиска пути, к примеру). Можно совместить абстракцию с физикой, но там могут быть подводные камни.
0
17.03.2022, 23:45
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
17.03.2022, 23:45
Помогаю со студенческими работами здесь

Vb.net directx, slimdx преобразовать экранные координаты мыши в 3d координаты
vb.net directx, slimdx преобразовать экранные координаты мыши в 3d координаты необходимо...

Вычислить декартовы координаты точки, имеющую следующие полярные координаты
Помгите пожалуйста с этими вопросами!

Пусть даны координаты трех вершин прямоугольника. Определить координаты четвертой вершины
Доброго вечера. Написал программу для вычисления координаты 4 вершины треугольника через скалярное,...

Заданы координаты трех вершин прямоугольника. Необходимо определить координаты четвертой вершины
Здравствуйте, задача: Заданы координаты трех вершин прямоугольника. Необходимо определить...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Откуда у float лишние цифры в конце дробной части. Представление чисел с плавающей точкой
bytestream 25.01.2025
При разработке программного обеспечения часто возникает необходимость работать с вещественными числами, которые содержат дробную часть. В современных компьютерных системах такие числа представляются. . .
Как использовать глобальную переменную в функции в Python
bytestream 25.01.2025
В программировании на Python глобальные переменные представляют собой особый тип переменных, которые доступны для использования во всех частях программы, включая различные функции, классы и модули. . . .
Как в цикле обойти все элементы map в Java
bytestream 25.01.2025
В разработке на Java одной из наиболее востребованных структур данных является интерфейс Map, который предоставляет эффективный способ хранения и управления парами "ключ-значение". Разработчики. . .
Для чего нужен UserManager.isU­serAGoat(­) в Android и как это использовать
bytestream 25.01.2025
В мире Android-разработки существует множество интересных и порой загадочных функций, о которых знают далеко не все разработчики. Одной из таких функций является метод UserManager. isUserAGoat(),. . .
Как обойти масси в JavaScript. Всё о циклах
bytestream 25.01.2025
JavaScript представляет собой мощный язык программирования, широко используемый в веб-разработке, где массивы и циклы являются фундаментальными концепциями для эффективной работы с данными. Массив в. . .
Как сделать, чтобы существующая ветка отслеживала удалённую в Git. Связывание локальных и удалённых веток
bytestream 25.01.2025
В разработке программного обеспечения системы контроля версий стали неотъемлемой частью процесса создания качественного программного продукта. Эти инструменты позволяют разработчикам эффективно. . .
Как проверить, что файл НЕ существует с помощью Bash
bytestream 25.01.2025
В системном администрировании проверка существования файлов является фундаментальной операцией, особенно при написании скриптов на Bash. Правильная обработка ситуаций, когда файл отсутствует,. . .
Как проверить, что строка пустая, неопределена или null в JavaScript
bytestream 25.01.2025
При разработке веб-приложений на JavaScript разработчики регулярно сталкиваются с необходимостью проверки строковых значений на различные состояния. Валидация данных является критически важным. . .
Как проверить существование ключа в объекте или массиве в JavaScript
bytestream 25.01.2025
При разработке веб-приложений на JavaScript программисты постоянно сталкиваются с необходимостью работать с объектами и массивами. Эти структуры данных являются фундаментальными элементами языка и. . .
Как создать ArrayList из массива (array) в Java
bytestream 25.01.2025
При разработке программного обеспечения на языке Java программисты часто сталкиваются с необходимостью эффективного управления наборами данных. Массивы и ArrayList являются двумя фундаментальными. . .
Как сгенерировать случайные целые числа (int) в указанном диапазоне в Java
bytestream 25.01.2025
В программировании генерация случайных чисел является важнейшим инструментом для решения множества практических задач. От создания игровых механик до реализации алгоритмов машинного обучения, от. . .
Как сделать, чтобы grep выводил строки до и после найденной
hw_wired 25.01.2025
Утилита grep стала незаменимым инструментом для поиска и фильтрации информации в Unix-подобных операционных системах. Эта командная утилита позволяет осуществлять поиск строк, соответствующих. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru