Transform программирование в Unity

Всем доброго времени суток, и сегодня я продолжаю делать уроки из инета, по созданию компьютерных игр в Unity 3d. Автор сих уроков сказал что с ними можно делать что угодно. Так что я их просто выполняю.

 

Сегодня я буду рассматривать такой класс как Transform. Для начала нам необходимо создать пустой объект GameObject>Create Empty, и мы создадим пустой объект GameObject. Это просто пустой объект в нем ничего нет, то есть просто пустой объект у него нет ни меша, ни триггера, ничего, он даже не видим. Единственное что у него есть это класс Transform. Под этим классом подразумеваются три такие функции как Position, Rotation, Scale. Если говорить несколько точнее это характеристики объекта.

 

Position определяется по трем координатам X, Y, Z и обозначает координаты в пространстве.

 

Rotation это поворот в пространстве и измеряется в градусах.

 

Scale это размер.

 

Если брать в качестве рассматриваемого примера GameObject, то так как объект является ничем, то как его не поворачивай в пространстве он все равно останется ничем, и размер как не меняй он есть ничто. Разве что можно местоположение изменить. Так что давайте будем рассматривать иной объект. Для этого удаляем GameObject и добавляем куб.

 

Для этого удаляем GameObject и переходим в GameObject>3dObject>Cube. И мы добавили куб. Куб можно передвигать, крутить вдоль осей и изменять иго размер.

 

Теперь давайте что-нибудь напишем. Создаем новый скрипт, открываем его. Здесь как мы знаем есть две функции, то бишь Start и Update. Функция Start как мы помним отвечает за то что происходит в начале, а функция Update отвечает за перемещение кубика, то есть за покадровые изменения. Так что именно в этой функции мы и будем писать.

 

Давайте обратимся к классу Transform, в принципе необходимо обращаться, надо писать this то есть функция возвращает сам скрипт, дальше GameObject, а поскольку Transform это функция GameObject и он уже подразумевает что если скрипт висит на самом GameObject то это подразумевается что это он и есть. Соответственно компьютеру не нужно объяснять что это он и есть. Так что мы можем просто писать transform дальше точка, и дальше пишем следующую функцию либо position, localScale, rotation, да еще есть lossyScale. Разница между localScale и lossyScale это как глобальные и локальные данные. Давайте разберемся с position, затем по идее можно поставить точку и написать xэто вернет координаты по x‘, но данную координату нельзя изменять, она только для чтения. То есть нельзя приравнять её к координатам по x‘, функция начнет выдавать ошибки. Поэтому так делать не будем, а будем непосредственно изменять саму переменную position.

 

Переменная position имеет тип Vector, кто не знает что такое вектор, вектор это направленный ответ. Поэтому приравниваем её к new Vector3(1,2,3) то есть трем координатам. Ну и так как нам все же постоянно перемещать не надо то давайте все же напишем это в функции Start. Vector3 говорит что вектор трехмерный, можно двухмерный указывать, но там не будет координаты zа она очень важна. И запомним, что непосредственно сам xон только для чтения, а изменять необходимо такой функцией. У вас должно получится вот так:

Движение по координатам
Dante

 

Теперь сохраняем проверяем чтобы скрипт был прикреплен к нашему кубу, запоминаем координаты которые есть, и запускаем игру. Затем снова смотрим координаты. Вот мы видим что координаты изменились на x=1, y=2, z=3, тоже самое можно делать с размерами и тд.

 

Теперь давайте что-то сделаем с размерами. Ну например, возьмем lossyScale, так как здесь нет старшего объекта, это особого значения иметь не будет. В иных программах это будет важно, а сейчас особо не важно, потом рассмотрим это. Теперь так же как в примере выше приравняем переменную по вектору и зададим значение на которое будут происходить изменения, да переменные float у вас должно получится как то вроде такого transform.lossyScale+= new Vector3 (0.1f, 0.1f, 0). Я задал это в функции Update чтобы увеличения происходили каждый кадр, чтобы не резко увеличивать, а то получится странно, хоть и возможно. И что мы видим? А ничего не видим, потому что обратились к глобальным переменным. А они только для чтения, так что изменяем на localScale должно получится вот так:

Код увеличения размера
Dante

 

Сохраняем и запускаем игру, и видим что наш куб превращается в такую пластину, постепенно.

 

Вращение или rotation происходит похоже, но для вращения используется Quaternion. Попробуйте сами поиграться.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *