Size: a a a

2020 April 08

B[

Bars0_o [SpamBlock] in unity3d.ru
Instantiate - дорогая функция
источник

AK

Alexander Kokotkin in unity3d.ru
Спасибо)
источник

D

Denix in unity3d.ru
А разве пул не работает по этому принципу? Он же создаёт к примеру штук 20 объектов и просто включает, выключает их. Нет?
источник

RM

Roman Mindiashvili in unity3d.ru
Denix
А разве пул не работает по этому принципу? Он же создаёт к примеру штук 20 объектов и просто включает, выключает их. Нет?
Но он же инстансит один раз заданное кол-во. И всё время существования держит их в памяти. Переиспользование не потребует новых аллокаций.
источник

AM

Aleksander Mironov in unity3d.ru
Awake() исполняется с учетом Execution Order?
источник

AM

Aleksander Mironov in unity3d.ru
Все прочитал - Да.
источник

DZ

D. Zosym in unity3d.ru
ребят, написал две абсолютно обычные функции для выравнивания и оборота объекта на 90 градусов (ну если наш объект обёрнут на 108 градусов, то при использования колёсика мышки вверх, объект примет rotation 180 градусов, а при использования колёсика мышки вниз 90 и вот это работает нормально, но при этом, я хочу что если объект имеет текущий оборот на 0/90/180/270, то при использовании колёсика вверх, объект вращался на +90, а если вниз то -90. и вот тут уже не работает с колёсиком вниз =\
вообще не оборачивает. причём если как в примере что я приводил, объект слегка обёрнут, то при использовании колёсика вниз, объект будет выровнен так как мне надо, но если объект принимает rotation кратный 90, то "назад" он не оборачивается =\
вот ниже эти две функции и в скрине момент обращения к ним
источник

DZ

D. Zosym in unity3d.ru
public float Rotation(float rotationAngle)
   {
       float angle = Mathf.Abs(rotationAngle);
       if (angle == 180)
           angle = 270 - angle;
       if (angle < 90)
           angle = 90 - angle;
       if (angle > 89 && angle < 180)
           angle = 180 - angle;
       if (angle > 179 && angle < 270)
           angle = 270 - angle;
       if (angle > 269)
           angle = 360 - angle;

       return angle;
   }
   public float NegativeRotation(float rotationAngle)
   {
       float angle = Mathf.Abs(rotationAngle);
       if (angle == 180)
           angle = 90f;
       if (angle > 89 && angle < 180)
           angle = angle - 90f;
       else if (angle > 179 && angle < 270)
           angle = angle - 180f;
       else if (angle > 269)
           angle = angle - 270;

       return angle;
   }
источник

AS

Anton Smetanin in unity3d.ru
D. Zosym
public float Rotation(float rotationAngle)
   {
       float angle = Mathf.Abs(rotationAngle);
       if (angle == 180)
           angle = 270 - angle;
       if (angle < 90)
           angle = 90 - angle;
       if (angle > 89 && angle < 180)
           angle = 180 - angle;
       if (angle > 179 && angle < 270)
           angle = 270 - angle;
       if (angle > 269)
           angle = 360 - angle;

       return angle;
   }
   public float NegativeRotation(float rotationAngle)
   {
       float angle = Mathf.Abs(rotationAngle);
       if (angle == 180)
           angle = 90f;
       if (angle > 89 && angle < 180)
           angle = angle - 90f;
       else if (angle > 179 && angle < 270)
           angle = angle - 180f;
       else if (angle > 269)
           angle = angle - 270;

       return angle;
   }
Может быть тебе RotateAround больше подойдёт?
источник

AS

Anton Smetanin in unity3d.ru
Хотя нет, я не понимаю, что этот код должен делать)
источник

AS

Anton Smetanin in unity3d.ru
D. Zosym
public float Rotation(float rotationAngle)
   {
       float angle = Mathf.Abs(rotationAngle);
       if (angle == 180)
           angle = 270 - angle;
       if (angle < 90)
           angle = 90 - angle;
       if (angle > 89 && angle < 180)
           angle = 180 - angle;
       if (angle > 179 && angle < 270)
           angle = 270 - angle;
       if (angle > 269)
           angle = 360 - angle;

       return angle;
   }
   public float NegativeRotation(float rotationAngle)
   {
       float angle = Mathf.Abs(rotationAngle);
       if (angle == 180)
           angle = 90f;
       if (angle > 89 && angle < 180)
           angle = angle - 90f;
       else if (angle > 179 && angle < 270)
           angle = angle - 180f;
       else if (angle > 269)
           angle = angle - 270;

       return angle;
   }
У тебя тут для всех значений меньше или равно 89 вообще ничего не будет происходить
источник

AS

Anton Smetanin in unity3d.ru
Он ни в одну ветку не попадёт
источник

DZ

D. Zosym in unity3d.ru
а, ну это да, сейчас изменю )
источник

R

Respirant in unity3d.ru
Кто хочет работать в Ice Pick Lodge? ЗП от 150 тыс, Москва, в офисе. Знания - от Middle и выше. C#, Unity
источник

S

Sdevy in unity3d.ru
Respirant
Кто хочет работать в Ice Pick Lodge? ЗП от 150 тыс, Москва, в офисе. Знания - от Middle и выше. C#, Unity
Все хотят, но никто не умеет.
источник

AS

Anton Smetanin in unity3d.ru
D. Zosym
ребят, написал две абсолютно обычные функции для выравнивания и оборота объекта на 90 градусов (ну если наш объект обёрнут на 108 градусов, то при использования колёсика мышки вверх, объект примет rotation 180 градусов, а при использования колёсика мышки вниз 90 и вот это работает нормально, но при этом, я хочу что если объект имеет текущий оборот на 0/90/180/270, то при использовании колёсика вверх, объект вращался на +90, а если вниз то -90. и вот тут уже не работает с колёсиком вниз =\
вообще не оборачивает. причём если как в примере что я приводил, объект слегка обёрнут, то при использовании колёсика вниз, объект будет выровнен так как мне надо, но если объект принимает rotation кратный 90, то "назад" он не оборачивается =\
вот ниже эти две функции и в скрине момент обращения к ним
Плюс на скрине ты берёшь x и z из кватерниона, а y из углов Эйлера
источник

R

Respirant in unity3d.ru
Sdevy
Все хотят, но никто не умеет.
Из почти 5000 человек нет ни одного мидла? Не может быть
источник

AS

Anton Smetanin in unity3d.ru
Каков смысл этого?
источник

DZ

D. Zosym in unity3d.ru
Anton Smetanin
Хотя нет, я не понимаю, что этот код должен делать)
но тут речь идёт о том что, я должен оборачивать в двух режимах, первый это на 90 градусов, второй это на 1 градус.  но в первом режиме, я должен не просто сделать +90, а сперва выровнять до перпендикулярного положения, а потом уже могу делать +-90.  эти две функции и выполняют это округление до перпендикуляра, только в первой функции и получается позже вращать на +90, то вторая не реагирует никак =(
источник

nn

nicloay nidvoray in unity3d.ru
Никто не хочет работать в москве может :). лучше в литве или латвии. где там у вас офис был :)
источник