Вставка та анімація 2d спрайту

Vice 23, кві 2012, 05:59

Re: Вставка та анімація 2d спрайту

Guyver 23, кві 2012, 07:50

1 - ортографічна проекція на камері та квад обличчям до камери = спрайт на екрані

2-кадри запікаєте в атлас. шукайте шейдер з можливістю регулювання UV індексом, зміщуючи координати знаючи ширину і висоту 1го спрайту.

3 - ну скрипт анімації маючи 1 та 2й пункт робітниками .. робиться дуже просто. ви знаєте індекси анімаційних послідовностей в атласі, є функція Update .. там змінюєте індекс на те, що вам потрібен. Loop`іть послідовності маючи інформацію про кліпи. або 1 текстура = 1 послідовність анімації. тоді перемикаєте текстури у матеріалі

Re: Вставка та анімація 2d спрайту

Левш@ 23, кві 2012, 09:03

var animSpeed ​​= 0.01; var standFrames: Texture []; var walkFrames : Texture []; var jumpStartFrames : Texture []; var jumpMoveUpFrames : Texture []; var jumpStateUpFrames : Texture []; var jumpMoveDownFrames : Texture []; var jumpDownFrames : Texture []; var shootFrames : Texture []; var currentFrames : Texture []; static var jumpState: boolean = false; static var jumpCicle = 0; static var fireState : boolean = false; private var orderFrame : boolean = true; private var orderFire : boolean = true; private var index = 0;

if (index >= currentFrames. Length) < index = 0; fireState = false; > renderer. Матеріал . mainTexture = currentFrames [index]; if (orderFrame) < orderFrame = false; AnimDelay ( ); if (index 0) < HeroAnim. jumpState = true; moveDirection. y = швидкість стрибка; jumpSpeed ​​-= jumpUskor ; > інакше якщо ( ! заземлено ) < moveDirection. y -= гравітація ; if ( HeroAnim. jumpCicle == 2 ) HeroAnim. jumpCicle = 3; > інакше, якщо ( grounded && HeroAnim. jumpCicle == 5 ) < orderJumpUp = 2 ; jumpSpeed ​​= tempJumpSpeed ​​; HeroAnim. jumpCicle = 6; > if ( ! Input. GetKey ( "w" ) && orderJumpUp == 2 ) orderJumpUp = 0 ;

var flags = plrController. Переміщення ( moveDirection * Time. deltaTime ); grounded = ( flags & CollisionFlags. CollidedBelow ) != 0 ; >

Re: Вставка і анімація 2d спрайта

Vice 23 квітня 2012, 16:02

// Аркуш анімаційних спрайтів // Walker Boys (www.walkerboystudio.com) // 18 березня 2011 р. // Опис: відтворення анімованого спрайту за допомогою аркуша спрайтів // Інструкція: Призначте сценарій gameObject із матеріалом/текстурою (спрайт-лист) // Аргументи функції: // columnSize - кількість кадрів по горизонталі // rowSize - кількість кадрів вниз (по вертикалі) // colFrameStart – де починається кадр (пам’ятайте, що 0 – перше число під час підрахунку) // rowFrameStart – де починається кадр (пам’ятайте, що 0 – це перше число під час підрахунку) // totalFrames – кількість кадрів у анімація (звичайний підрахунок) // framesPerSecond - як швидко ви хочете, щоб вона відтворювалася (Стандарт: 12 - 30 кадрів в секунду)

функція aniSprite (columnSize, rowSize, colFrameStart, rowFrameStart, totalFrames, framesPerSecond)// функція для анімації спрайтів var index : int = Time.time * framesPerSecond; // контроль часу fps index = index % totalFrames; // модулювати до загальної кількості кадрів

змінний розмір = Vector2 (1.0 / columnSize, 1.0 / rowSize); // масштаб для розміру стовпця та рядка

var u = індекс % columnSize; // u отримуєcurrent x coordinate from column size var v = index / columnSize; // v gets current y coordinate by dividing by column size