Вторник, 23 Апреля 2024, 21:36

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Форум игроделов » Движки для разработки игр и сложные системы разработки » Unity » Как найти ближайший объект (Unity3d C#)? (Найти координаты ближайшего NPS.)
Как найти ближайший объект (Unity3d C#)?
nanaminerДата: Среда, 03 Мая 2017, 14:44 | Сообщение # 1
частый гость
Сейчас нет на сайте
Здравствуйте!
У меня такая проблема: по сцене ходят NPS и игрок, игрок, при нажатии клавиши удара должен повернуться к ближайшему NPS, и ударить. Ударяет он превосходно, его осталось только повернуть, но я не знаю куда blink . То есть поверну-то я Loock At'ом, но мне нужно найти координаты ближайшего NPS.
Насколько я понимаю, мне нужен массив, в котором будут все NPS в радиусе действия, из которого мы будем искать ближайшего.
Но, дело в том, что я с массивами - 0,0000001 (почти ноль).
И, вот я пишу вам, форумчане с просьбой помочь мне с реализацией данного кода.
Зарание спасибо за ответ.
WiteДата: Среда, 03 Мая 2017, 16:04 | Сообщение # 2
постоянный участник
Сейчас нет на сайте
Physics.OverlapSphere возвращает массив колайдеров в заданном радиусе.
Только у меня вопрос как вы его ударяете ? как отнимаете инергию ? Вы же знаете кого бьете ?
nanaminerДата: Среда, 03 Мая 2017, 19:52 | Сообщение # 3
частый гость
Сейчас нет на сайте
Здравствуйте, спасибо за отклик.
Удар происходит так: проигрывается анимация, а остальное берёт на себя PuppetMaster, с этим проблем нет.
Physics.OverlapSphere blink ? Не слышал про такую.
Может проще через триггер? Или я ошибаюсь?
То есть в массив нужно как то запихнуть NPS, что в триггере (не знаю как это сделать), и потом как то найти из его элементов того, который ближе (видимо через Vector 3.Distanse, но как это провернуть с массивом?)?


Сообщение отредактировал nanaminer - Среда, 03 Мая 2017, 19:54
WiteДата: Среда, 03 Мая 2017, 20:57 | Сообщение # 4
постоянный участник
Сейчас нет на сайте
nanaminer, Ох ввязался.
На вашем противнике должен быть колайдет для того чтобы работала оверлап сфере. Эта функция возврошает массив колайдеров которые висят на ваших противниках.
Если вы хотите хранить масив всех противников. Вы можете найти их по тагу или типу.
А вообще пройдите туторы от Unity или на Youtube куча уроков.
Вопросы ну прям не о чем.
nanaminerДата: Четверг, 04 Мая 2017, 12:42 | Сообщение # 5
частый гость
Сейчас нет на сайте
Хорошо, поставим вопрос так:
Код
public GameObject [] Nps;
public GameObject Player;

void Update(){
Player = gameObject;
Nps = GameObject.FindGameObjectsWithTag("NPS");
}

как мне найти ближайший объект из этого массива к Player? help
VostruginДата: Четверг, 04 Мая 2017, 12:54 | Сообщение # 6
постоянный участник
Сейчас нет на сайте
nanaminer, изучайте азы языка, иначе долго не протяните.

Код
var nearest = Nps.OrderBy(x => Vector3.Ditance(transform.position, x.transform.position)).FirstOrDefault();


P.S. Сверху не забудь написать using System.Linq;




WiteДата: Четверг, 04 Мая 2017, 13:08 | Сообщение # 7
постоянный участник
Сейчас нет на сайте
nanaminer, еще если в лист перевести массив можно сортиравкой сделать. алгоритмы сортировки
nanaminerДата: Четверг, 04 Мая 2017, 17:07 | Сообщение # 8
частый гость
Сейчас нет на сайте
Wite, Большое спасибо! lovegcup
Форум игроделов » Движки для разработки игр и сложные системы разработки » Unity » Как найти ближайший объект (Unity3d C#)? (Найти координаты ближайшего NPS.)
  • Страница 1 из 1
  • 1
Поиск:

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