Суббота, 23 Ноября 2024, 15:09

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Проверка коллайдера
FearelesДата: Суббота, 27 Февраля 2016, 20:00 | Сообщение # 1
почетный гость
Сейчас нет на сайте
К сожалению кильнул проект, теперь не могу вспомнить.
вопрос банален: как проверить что RaycastHit упёрся в Terrain?
точнее как вернуть объект, в который он упёрся?
при проверке hit.collider is Terrain выдаёт false
тоже самое при hit.collider == terra (это переменная, ссылающаяся на террейн)


Делаю игру на unity 3d
https://vk.com/ser_gunnar
AlfeДата: Суббота, 27 Февраля 2016, 20:17 | Сообщение # 2
старожил
Сейчас нет на сайте
Feareles, попробуй Terrain назначить какое либо тэг и
Код
hit.collider.tag == "Твой тег"

По крайней мере я именно так проверял в какой объект луч вошел.


Группа нашей команды. Там есть интересная рубрика... иногда игры выходят

Моя первая игpa - Crazy Penguin
FearelesДата: Суббота, 27 Февраля 2016, 22:53 | Сообщение # 3
почетный гость
Сейчас нет на сайте
Я придумал другой, не менее костыльный метод.
Персонажем управляет класс Mаnаger
Написал скрипт для террейна, с методом Mouse Click, который задаёт менеджеру точку движения.
Менеджер при нажатии мыши вызывает в объекте коллайдера метод MouseClick, с параметром hit.point


Делаю игру на unity 3d
https://vk.com/ser_gunnar
ShortKedrДата: Суббота, 27 Февраля 2016, 23:29 | Сообщение # 4
Renword Studio
Сейчас нет на сайте
Лучше уж без костылей делать smile
Код

Terrain terrain = hit.collider.gameObject.GetComponent<Terrain>();
if (terrain != null){
    Debug.Log("OMG!!! Ray is find a Terrain!!! Congratulations!");
}

Добавлено (27 февраля 2016, 23:29)
---------------------------------------------
По факту нужно читать справку Unity, та самая Scripting API Documentation. Там по этому поводу много чего интересного написано, да и вообще много чего интересного)

OpenGOOДата: Воскресенье, 28 Февраля 2016, 10:18 | Сообщение # 5
почти ветеран
Сейчас нет на сайте
Цитата Feareles ()
тоже самое при hit.collider == terra (это переменная, ссылающаяся на террейн)


Возможно terra это не коллайдер, тогда можно сделать так

Код
Collider target = terra.GetComponent<Collider>();

if (hit.collider == target) {
    print("We hit the Terrain");
}


Мои проекты:
- Свободный и открытый клон World Of Goo
- TrueEngine2D (2D игровой фреймворк основанный на FreeBASIC)

[GameMaker: Studio v1.4.9999]
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг