Показать сообщение отдельно
Старый 15.02.2013, 21:06   #5
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: Unity3d - Простой AI

Тоже прокомментирую

1. В данном случае поля класса объявляются синтаксисом: модификатор тип имя_переменной. private значит не публичное поле класса, Transform или CharacterController это типы, _thisTransform и _controller имена переменных. Подробнее тут, потом можно почитать тут, но уже сложнее.

2. Метод GetComponent<CharacterController>(); шаблонный. Подробнее тут. В угловых скобках указывается тип (в данном случае тип компонента, который надо найти на объекте).

3. _thisTransform = transform; тоже самое что и _thisTransform = this.transform; Т.е. переменной присваивается значение свойства transform. Это свойство, хоть и выглядит как переменная, выполняет действие подобное описанному в пункте 2 - получает с объекта компонент типа Transform. Т.е. запись _thisTransform = GetComponent<Transform>(). Подробнее о свойствах тут. Какие свойства есть у скрипта тут.

4. Player player = (Player)FindObjectOfType(typeof(Player));
Все что перед "равно" это объявление переменной player типа Player. Справа выполняется функция поиска объекта типа Player в сцене (скрипт на каком-либо объекте сцены). Но так как функция возвращает тип UnityEngine.Object от которого наследуются все объекты Unity (в том числе и скрипты - MonoBehaviour унаследован от Component, Component от UnityEngine.Object) - чтобы присвоить полученное значение переменной типа Player, полученное значение нужно привести к типу Player - это как раз (Player). Подробнее об этом тут. C# это строго типизированный язык. Все переменные должны иметь тип и могут содержать экземпляры данных, соответствующие этим типам. Еще почитать.

5. float angle = Vector3.Angle(_thisTransform.forward, playerDirection);
дословно: посчитать угол между двумя векторами _thisTransform.forward и playerDirection.

UPD: тут я приводил пример создания поля из объектов, сохраняя ссылки на них в думерном массиве
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо pax за это полезное сообщение:
burovalex (15.02.2013), mauNgerS (15.02.2013)