Flash AS3: движение изометрической сетки

Для ответа на этот вопрос о Flash AS3 нужна действительно отчаянная помощь. В настоящее время я создаю игру, похожую на мир кафе, фармвилл и т. Д. (Социальную игру). Хотел бы знать, как я могу заставить объект двигаться в изометрическом направлении при движении мыши. Например, когда я хочу построить дом, я нажимаю кнопку строительства дома, и когда моя мышь перемещается, я хочу, чтобы мой объект дома (хранящийся в библиотеке) перемещался вместе с моей мышью в изометрическом направлении. Чтобы получить лучшее представление о решении, которое я ищу, нажмите на эту ссылку, чтобы увидеть эскиз: 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
спасибо за вашу помощь :) так как моя команда занимается исключительно кодированием изнутри flash, каким-то образом, когда мы используем as3isolib, ошибки не возвращаются, но мы ничего не видим (когда мы играем в ard с помощью руководств as3isolib) ... ваш 2 утверждения немного помогают, но мы все еще застряли .. :( Можно ли дать нам больше указаний по этому поводу? - 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 ~ Большое спасибо, Тревор !!! это работает!!!!!!! ууу !!! ты как наш спаситель для нашего проекта ха-ха! спасибо приятель! : D - person Christina; 07.03.2011
comment
о, и да, мы понимаем, что взломать код из флэш-среды IDE невозможно, но из-за нехватки времени немного сложно преобразовать все коды в файлы .as ... В последний раз пробовал это в течение нескольких дней, но был скорее застрял! : p но действительно большое спасибо за любезную помощь! :) - person Christina; 07.03.2011