Вторник, 16 Апреля 2024, 13:31

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Форум игроделов » Движки для разработки игр и сложные системы разработки » Unity » Raycast hit
Raycast hit
nedved8891Дата: Суббота, 09 Января 2016, 18:15 | Сообщение # 1
уже был
Сейчас нет на сайте
Привет , подскажите пожалуйста. Столкнулся с такой ситуацией , написал стандартный скрипт для того , чтобы отслеживать клики по объектам на сцене, камера с которой луч посылается в точку клика прикреплена к плееру , который может двигаться в 3 плоскостях , все прекрасно если плеер не движется по У , как только я двигаюсь вверх то идет смещение клика на пару пиксилей , это очень заметно . Может кто-то сталкивался с такими проблемами, уже гуглив ничего не нашел

Код

if (Input.GetMouseButtonDown(0)){
   ray = targetCam.ScreenPointToRay(Input.mousePosition);
//   print("Ray: "+ray.direction);
   if (Physics.Raycast (ray, out hit, 10000)  && GUIUtility.hotControl == 0){
    target = hit.transform;
    print("Name(ray): "+ray);
    print("Name: "+hit.transform.name);
    if(target.tag != "Cube"){
     targetToChangeColor = hit.transform;
     if (idElemClick != target.position.x*10+""+target.position.y*10+""+target.position.z*10){
      idElemClick = target.position.x*10+""+target.position.y*10+""+target.position.z*10;
      //     print("Змінився елемент");
      linkReplace = true;
     }else{
      linkReplace = false;
      //     print("Той самий");
     }
     light.GetComponent<SaveXML>().closedMenuCube = false;
    }else{
     target = null;
     targetToChangeColor = null;
     idElemClick = "";
    }
   }else{
    if (GUIUtility.hotControl == 0){
     target = null;
     targetToChangeColor = null;
     idElemClick = "";
    }
   }
  }


Сообщение отредактировал nedved8891 - Суббота, 09 Января 2016, 18:16
vampir0305Дата: Суббота, 09 Января 2016, 18:50 | Сообщение # 2
Unity C# Programmer
Сейчас нет на сайте
Если ты пуляешь рейкастом из камеры, то логично было бы, чтобы луч летел из её центра.
Меняешь это:
Код
ray = targetCam.ScreenPointToRay(Input.mousePosition);

На это:
Код
ray = targetCam.ScreenPointToRay(new Vector3(Screen.width/2, Screen.height/2, 0));


Красочная сюжетно-ориентированная игра-головоломка
nedved8891Дата: Суббота, 09 Января 2016, 19:37 | Сообщение # 3
уже был
Сейчас нет на сайте
я заменил и сечас совсем не в точку клика луч попадает(
Форум игроделов » Движки для разработки игр и сложные системы разработки » Unity » Raycast hit
  • Страница 1 из 1
  • 1
Поиск:

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