Понедельник, 23 Декабря 2024, 19:11

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Пределы клика мышью
kario_sДата: Среда, 12 Марта 2014, 19:50 | Сообщение # 1
был не раз
Сейчас нет на сайте
У меня игра, где некий предмет появляется в определенно заданной области. Если по нему кликнуть, то прибавляются очки, а если мимо него - отнимаются.
Но, я столкнулся с такой неприятной вещью: кликая не только по определенно заданной области респавна предмета, у меня так же отнимаются очки, т.е. если курсор мышки за пределами области и я делаю клик очки отнимаются.
Как можно это исправить, чтобы клики считались только по той области, которую я задал в качестве респавна для предмета?
Если понадобится, могу скинуть скрипт.
lakorisДата: Среда, 12 Марта 2014, 19:57 | Сообщение # 2
постоянный участник
Сейчас нет на сайте
kario_s, может теги?
kario_sДата: Среда, 12 Марта 2014, 20:45 | Сообщение # 3
был не раз
Сейчас нет на сайте
lakoris, каким образом там можно ограничить клик тегом? в то время, как область спавна я задал координатами.
lakorisДата: Среда, 12 Марта 2014, 21:40 | Сообщение # 4
постоянный участник
Сейчас нет на сайте
kario_s, ну так. создай в этой же области триггер с N тегом и при клике проверяй так-же тег
kario_sДата: Четверг, 13 Марта 2014, 16:25 | Сообщение # 5
был не раз
Сейчас нет на сайте
lakoris, блин, этот триггер теперь тоже спавнится в рандомном месте angry
PoqXertДата: Четверг, 13 Марта 2014, 16:47 | Сообщение # 6
постоянный участник
Сейчас нет на сайте
Сравнивай координаты области и клика.

Расширения для Unity3D
Блог программиста - PoqXert.ru
kario_sДата: Четверг, 13 Марта 2014, 16:57 | Сообщение # 7
был не раз
Сейчас нет на сайте
PoqXert, не понял, при чем тут это?
Код

  void Update ()  
  {
   if (Input.GetMouseButtonDown (0))  
   {    
    RaycastHit hit;    
    Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);    
    if(Physics.Raycast(ray, out hit, 100))
    {
     newPosition = new Vector3 (Random.Range (-2.3f, 2.2f), Random.Range (-4.4f, 4.5f));

     StartCoroutine(respawnWait(hit.transform));
      
     hit.transform.position = newPosition;

     if(hit.transform.tag == "Player")
     {
      plusScore = 200;
      score += plusScore;
     }         
    }
    if (hit.collider.tag == "N")  
    {
     score -= increaseScore;
    }    
   }
  }


Мой предмет спавнится в рандомном месте, после того, как я создал триггер и вставил в код (при клике по триггеру) он стал так же спавниться в рандом месте после нажатия, как и предмет с тегом "Player".
rip_your_chestДата: Четверг, 13 Марта 2014, 16:59 | Сообщение # 8
был не раз
Сейчас нет на сайте
Ну раз такой случай, можно сделать так, чтоб когда ты нажимаешь на кнопку респавна,
прибавлялись очки, отнятые у тебя из-за того, что ты "промахнулся":D
(шучу конечно, но это вариант)
PoqXertДата: Четверг, 13 Марта 2014, 17:31 | Сообщение # 9
постоянный участник
Сейчас нет на сайте
Цитата kario_s ()
PoqXert, не понял, при чем тут это?

Цитата kario_s ()
Как можно это исправить, чтобы клики считались только по той области, которую я задал в качестве респавна для предмета?

Цитата kario_s ()
в то время, как область спавна я задал координатами.

Цитата PoqXert ()
Сравнивай координаты области и клика.


Расширения для Unity3D
Блог программиста - PoqXert.ru
allodsДата: Пятница, 14 Марта 2014, 16:25 | Сообщение # 10
почти ветеран
Сейчас нет на сайте
А нафига ты спавниш тригер для отнимания очков с каждым Предметом?
Как я понял ты спавниш предмет на который надо кликать для прибавки очков, после чего он исчезает . Если промазал то отнимают но только если клик был в переделе области.
Как я понял у тебя есть всего одна область. Так зачем ты спавниш еще области
  • Страница 1 из 1
  • 1
Поиск:

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