Пятница, 29 Марта 2024, 08:50

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Форум игроделов » Записи участника » Llfe [4]
Результаты поиска
LlfeДата: Пятница, 08 Февраля 2013, 23:18 | Сообщение # 1 | Тема: Вопрос-[ответ] по Unity
был не раз
Сейчас нет на сайте
Разбираю скрипт, устанавливающий надпись над обьектом.
Код
using UnityEngine;
using System.Collections;

public class ques_givers : MonoBehaviour {
//===---Variables---===
private bool avail_quest;  
//===---END VARIABLES---===  
   // имя объекта д
     public string objectName;
     // использовать ли рейкастинг для отображения имени только если объект не закрыт другим объектом
     // будет работать если на объекте есть коллайдер
     public bool useRayCast;
     // размер объекта (используется в условии по рейкастингу)
     public float objectSize = 2;
   
     // вспомогательные переменные
     private bool _showName;
     private Vector2 _position;
   
     public void Awake()
     {
         // если имя не указано, то отображаем имя объекта сцены
         if (string.IsNullOrEmpty(objectName))
         {
             objectName = name;
         }
     }
   
     public void Update()
     {
         _showName = false;
         // позиция относительно камеры
         Vector3 cameraRelative = Camera.main.transform.InverseTransformPoint(transform.position);
         // если z>0, то точка находится перед камерой
         if (cameraRelative.z > 0)
         {
             // если используем рейкастинг
             if(useRayCast)
             {
                 RaycastHit hit;
   
                 // направление луча
                 Vector3 direction = transform.position - Camera.main.transform.position;
   
                 // сам луч
                 Ray ray = new Ray(Camera.main.transform.position, direction);
   
                 // посылаем луч
                 if (Physics.Raycast(ray, out hit))
                 {
                     // если дистанция до цели удовлетворяет условиям, то отображаем имя
                     if(hit.distance >= (direction.magnitude-objectSize))
                     {
                         Vector3 screenPosition = Camera.main.WorldToScreenPoint(transform.position);
                         _position = new Vector2(screenPosition.x - 60f, Screen.height - screenPosition.y - 10f);
                         _showName = true;      
                     }
                 }
             }
             else
             {
                 // случай без рейкастинга
                 Vector3 screenPosition = Camera.main.WorldToScreenPoint(transform.position);
                 _position = new Vector2(screenPosition.x - 60f, Screen.height - screenPosition.y - 10f);
                 _showName = true;                 
             }
   
         }
     }
   
   
     public void OnGUI()
     {
         // если следует отобразить имя
         if (_showName)
         {
             // считаем позицию
             Rect rect = new Rect(_position.x, _position.y, 120f, 20f);
   
             // создаем стиль с выравниванием по центру
             GUIStyle label = new GUIStyle(GUI.skin.label);
             label.alignment = TextAnchor.MiddleCenter;
   
             // выводим имя объекта с созданным стилем, чтобы имя было выведено по центру
             GUI.Label(rect, objectName, label);
         }
     }
}

Прошу разжевать мне данный скрипт, т.к. комментарии, описанные в данном скрипте не совсем доходят мне. 1-й вопрос интересующий:
Код
Vector3 cameraRelative = Camera.main.transform.InverseTransformPoint(transform.position);
Не понятно мне, в доках вычитал, ф-я inversetransformpoint() преобразует мировое положение обьекта в локальное. — нефига не понимаю зачем оно там и вообще...
2-й вопрос.
Направление луча.
Vector3 direction = transform.position - Camera.main.transform.position;
Что мы получим, отняв позицию игрока от позиции камеры?
Прошу помощи и благодарен заранее откликнувшимся, т.к. нечерта не понимаю.
LlfeДата: Понедельник, 10 Декабря 2012, 13:24 | Сообщение # 2 | Тема: Несколько вопросов
был не раз
Сейчас нет на сайте
Riketta, я полагаю, что выпустив проект, они сразу нападут на меня)

А можно ли просто держать игру на кряканой, не продавая ее? Будут ли они в таком случае иметь против меня что-либо?
LlfeДата: Понедельник, 10 Декабря 2012, 13:02 | Сообщение # 3 | Тема: Несколько вопросов
был не раз
Сейчас нет на сайте
Ну а как они могут вообще увидеть сделана ли игра именно на их движке? Можно ли тихонько на крякнутой юнити выпустить проект?
LlfeДата: Понедельник, 10 Декабря 2012, 11:56 | Сообщение # 4 | Тема: Несколько вопросов
был не раз
Сейчас нет на сайте
Приветствую Вас! На днях решил поковыряться в лицензионных соглашениях Юнити, но увы там запутался/не разобрался...
Интересуют следующие вопросы:
Купив ПРО-версию, созданная мною игра будет полностью моей и авторские права за мной? А также, будут ли какие-нибудь еще ограничения при использовании Юнити-про?
И вообще я не знаю, что делать. Думал свой движок разрабатывать, но понял, что это невозможно... Вот единственная идея, это сделать игру на "крякнутой" Про-версии, а потом, создав игру купить уже лицензию...
..Еще один вопрос, если сделать игру на "крякнутой" юнити, то как они узнают, что игра была сделана именно на ихнем двиге; а также если я сделаю проект на ФРИ-версии, то как они узнают мою годовую зарплату менее 100к ? Прошу, направьте меня на правильный путь)

Буду очень благодарен откликнувшимся)


Сообщение отредактировал Llfe - Понедельник, 10 Декабря 2012, 11:57
Форум игроделов » Записи участника » Llfe [4]
  • Страница 1 из 1
  • 1
Поиск:

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