Flash AS3: изометрично движение на мрежата

Наистина отчаяна нужда от помощ за този въпрос за Flash AS3. В момента създавам игра, подобна на cafe world, farmville и т.н. (социална игра). Бих искал да знам как мога да накарам обект да се движи в изометрична посока, когато мишката ми се движи. Например, когато искам да построя къща, щраквам върху бутона за изграждане на къща и когато мишката ми се движи, искам обектът ми къща (съхранен в библиотеката) да се движи заедно с мишката ми в изометрична посока. За да създадете по-добра представа за решението, което търся, щракнете върху тази връзка за скица: http://www.flickr.com/photos/58743938@N07/5497636770/

Така че искам нещо като само когато мишката ми се премести с 20 единици повече от първоначалната позиция на мишката, тогава предметът от къщата ми трябва да се премести към следващата мрежа.

Изяснете с мен, ако има нещо неясно. Благодаря много! :)


person Christina    schedule 04.03.2011    source източник


Отговори (1)


Може да искате да проучите as3isolib... http://code.google.com/p/as3isolib/

Тук има хубаво въведение... http://www.gotoandlearn.com/play.php?id=136

Това, което гледате, вероятно е нещо подобно, но...

house.x = Math.floor(this.mouseX/SQUARE_SIZE)*SQUARE_SIZE;
house.y = Math.floor(this.mouseY/SQUARE_SIZE)*SQUARE_SIZE;

Може да се наложи да направите нещо globalToLocal или обратно за позицията на мишката, плюс отместване за мрежата и т.н.

person Trevor Boyle    schedule 04.03.2011
comment
благодаря за помощта :) тъй като моят екип кодира чисто от вътрешна флаш, по някакъв начин, когато използваме as3isolib, не се връща грешка, но не можем да видим нищо (когато си играем с уроците от as3isolib)... вашите 2 изявленията помагат малко, но все още сме доста блокирани.. :( възможно ли е да ни дадете повече ръководство за това? (съжалявам, наистина сме нови за всичко това! :p ) - person Christina; 06.03.2011
comment
Между другото, опитах друг начин и сякаш е почти там, но все още не винаги се прихваща към мрежата... Освен това се движи твърде бързо! Някакви решения? :) можете да видите флаш файла тук: yousendit.com/download/T2pHcXlqQzd1Yk94dnc9PQ - person Christina; 06.03.2011
comment
Бих СИЛНО препоръчал да отделите кода си от флаш IDE (FlashDevelop е безплатен), времето, което прекарвате в учене как да структурирате кода си в класове, ще бъде възстановено по-късно в проекта при отстраняване на грешки и добавяне на функции. - person Trevor Boyle; 06.03.2011
comment
За да работи това, което имате в момента. Уверете се, че всички ваши точки за регистрация са там, където са с причина. Изберете всички квадратчета във вашата мрежа и ги позиционирайте като цяло на 0,0. И след това позиционирайте самата мрежа на 0,0. Центрирайте вашия земен актив (напр. -40, -20). Във вашата функция CheckDirection добавете следното landBlue.x=Math.floor(this.mouseX/40)*40 + 20; landBlue.y=Math.floor(this.mouseY/20)*20 + 10; и премахнете извикванията към GetHorizontalDirection и GetVerticalDirection - person Trevor Boyle; 06.03.2011
comment
OMGGGGG~ Благодаря много Тревър!!! работи!!!!!!! уви!!! ти си като нашия спасител за нашия проект хаха! благодаря приятел! :Д - person Christina; 07.03.2011
comment
о, и да, разбираме, че разбиването на кода от флаш IDE е неизбежно, но поради ограничението във времето е малко трудно да конвертирате всички кодове в .as файлове... Опитах го за няколко дни последния път, но беше по-скоро остана! :p но наистина благодаря много за любезната помощ! :) - person Christina; 07.03.2011