Воскресенье, 22 Декабря 2024, 17:07

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Передвижение обьекта по клику
TikkiДата: Понедельник, 16 Апреля 2018, 07:19 | Сообщение # 1
был не раз
Сейчас нет на сайте
Занимаюсь Юнькой только в свободное время так что заранее извиняюсь) Суть проблемы следующая. Поставил себе задачу научить обьект передвигаться по клику мышки в 2D пространстве.
if (Input.GetMouseButton(0)) {
Vector2 vect = Camera.main.ScreenToWorldPoint(Input.mousePosition);
RaycastHit2D hit = Physics2D.Raycast(vect, Vector2.zero);
if (hit.collider == null) {
MOVETO = vect;
moveShip = true;
}
if (moveShip == true) {
gameObject.transform.position = Vector2.MoveTowards (transform.localPosition, MOVETO, 0.1F);
}
}
Собственно с этим все в порядке казалось бы. Но следующая задача заключается в создании кнопки выстрела, кнопку сделал в UI и собственно все работает, обьект стрелает при нажатии на кнопку но попутно начинает двигаться в расположение кнопки. Понимаю что неправильно прописал работу райкаста но не хватает знаний чтобы понять где нужно рыть. if (hit.collider == null) или hit.transform естественно не будет работать на UI кнопку..вобщем прошу помощи камрады :o
drcrackДата: Понедельник, 16 Апреля 2018, 11:26 | Сообщение # 2
старожил
Сейчас нет на сайте
Оформи код нормально
BrightSpotДата: Понедельник, 16 Апреля 2018, 12:39 | Сообщение # 3
заслуженный участник
Сейчас нет на сайте
Код
EventSystem.current.IsPointerOverGameObject()

Вот проверяет курсор(мышь или палец для тача) на нахождение над UGUI элементами...
в твоем случае можно написать так:
Код
if(!EventSystem.current.IsPointerOverGameObject())
{
if (Input.GetMouseButton(0)) {
Vector2 vect = Camera.main.ScreenToWorldPoint(Input.mousePosition);
RaycastHit2D hit = Physics2D.Raycast(vect, Vector2.zero);
if (hit.collider == null) {
MOVETO = vect;
moveShip = true;
}
if (moveShip == true) {
gameObject.transform.position = Vector2.MoveTowards (transform.localPosition, MOVETO, 0.1F);
}
}
}

только не забудь подключить
Код
using UnityEngine.EventSystems;



Более мощный компьютер глючит быстрее и точнее.


Сообщение отредактировал BrightSpot - Понедельник, 16 Апреля 2018, 12:41
TikkiДата: Среда, 25 Апреля 2018, 08:10 | Сообщение # 4
был не раз
Сейчас нет на сайте
Только вернулся из командировки, потому так поздно отписываюсь. BrightSpot, плюс в карму, спасибо за то что разжевал:D Сейчас буду пробовать:)
  • Страница 1 из 1
  • 1
Поиск:

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