Как сделать пропорциональное изменение размера спрайта

техническая поддержка по Construct Classic

Сообщение Как сделать пропорциональное изменение размера спрайта
» 29 янв 2015, 19:31

Вдогонку второй вопрос, который тоже вызывает трудности. Не кто не подскажет формулу, изменения размера спрайта в зависимости от его положения по оси Y. Необходимо для создания перспективы. Чем выше на слое расположен спрайт тем он меньше и чем ниже тем он больше.
Аватара пользователя

Участник
Сообщений: 3
Я тут с 29 янв 2015
Репутация 0 [ ? ]

Сообщение Как сделать пропорциональное изменение размера спрайта
» 29 янв 2015, 20:52

set height to sprite.OriginalHeight-(480-sprite.y)/10
set width to sprite.OriginalWidth-(480-sprite.y)/10, только деление покорректируй под свой спрайт.
Аватара пользователя

Игродел
Сообщений: 199
Я тут с 30 янв 2013
Репутация 41 [ ? ]

Сообщение Как сделать пропорциональное изменение размера спрайта
» 30 янв 2015, 15:42

dorian_jin писал(а):set height to sprite.OriginalHeight-(480-sprite.y)/10
set width to sprite.OriginalWidth-(480-sprite.y)/10, только деление покорректируй под свой спрайт.

Спасибо... Затестировал, но данная формула прекрасно будет работать для квадратного спрайта (Где высота и ширина одинаковые) В моем случае персонаж прямоугольный так, что при изменении положения спрайта по оси Y пропорции рушатся... Что, конечно не есть гуд.

Но... культурно проведенный вечер, цигарка и сто грамм сделали свое дело, мозг зашкварчал и я написал вот такую формулу, может еще кому пригодиться:

Если у спрайта высота больше ширины:
set width to sprite Sprite.OriginalWidth/2+(Sprite.Y*10/100)
set width to sprite Sprite.OriginalHeight/2+(Sprite.Y*10/100)*Sprite.OriginalHeight/Sprite.OriginalWidth


Если у спрайта ширина больше высоты:
set width to sprite Sprite.OriginalWidth/2+(Sprite.Y*10/100)*Sprite.OriginalWidth/Sprite.OriginalHeight
set width to sprite Sprite.OriginalHeight/2+(Sprite.Y*10/100)


Поясню:
Sprite.OriginalWidth/2 - оригинальную высоту и ширину спрайта уменьшаю вдвое (В моем случае получается оптимальный размер когда спрайт увеличивается и уменьшается во время движения по оси Y, у вас вместо цифры два может быть иное значении, или вообще деление не потребуется)
(Sprite.Y*10/100) - прибавляю 10% от текущего расположения по оси Y к размеру спрайта. (Принцип чем, меньше процент тем меньше будет изменяться размер спрайта при движении по оси Y, и наоборот чем больше процент тем быстрее он будет рости при перемещение. Вообщем вам если что, в формуле менять цифру 10 на большую или меньшую)
Sprite.OriginalWidth/Sprite.OriginalHeight - тут я компенсирую пропорциональное изменение, чтобы спрайт не расплывался при движении

 P.S.
Не уверен, что это самый оптимальный способ, но я другого не нашел. Так, что если у кого есть идеи как это еще можно реализовать, буду рад если поделитесь мыслями...
Аватара пользователя

Участник
Сообщений: 3
Я тут с 29 янв 2015
Репутация 0 [ ? ]

Сообщение Как сделать пропорциональное изменение размера спрайта
» 21 ноя 2020, 19:19


Если ты споткнулся и упал, это ещё не значит, что идешь не туда.
Изображениепропорциональное изменение (resize) объекта
Аватара пользователя

Участник
Сообщений: 124
Я тут с 30 авг 2018
Откуда: Беларусь, Могилёв
Двиг: Construct 2
Лицензия: Personal
Репутация 4 [ ? ]



Вернуться в Вопрос-Ответ по Construct Classic

Сейчас эту тему просматривают

Зарегистрированные пользователи: нет зарегистрированных пользователей

Наверх