Flash CS4 / AS3 символ внутри символов

Я пытаюсь создать многоуровневое приключение с подземельями во Flash CS4. Раскладка представляет собой экземпляр, созданный из символа с именем Level, внутри символа находятся несколько субсимволов (стен), экземпляров Wall. Существует процедура столкновения, чтобы остановить игрока, проходящего через стены, вызванного из Wall.As. Уровень рисуется около центральной точки (0,0). Когда я создаю экземпляр на этапе Level (уровень), тестер столкновений использует координаты xy для стен, нарисованных с точностью около 0,0, а не "реального" xy, где он появляется на сцене. Итак, что мне нужно знать, это как "обновить" xy для каждого субсимвола стены информацией о рабочей сцене, переопределяя XY, нарисованные в родительском элементе. К сожалению, его нужно обновлять (я не могу держать его статичным), так как уровни большие, поэтому нужно прокрутить.

Спасибо за совет.

3 ответа

При всем уважении забудьте о вашем подходе, вы заново изобретаете колесо и, возможно, в итоге получите худшую производительность. То, что вам нужно, это идеальное пиксельное обнаружение столкновений и, возможно, включая базовую физику, так что мы уже говорим об огромном количестве работы. Если вы хотите создавать уровни в игровом стиле, используйте это, и это поразит вас, насколько это круто / просто / круто:

http://www.gotoandlearn.com/play.php?id=135

Всегда пытаться ответить на подобные вопросы, так как здесь много неизвестных. При этом в программировании всегда есть более чем несколько способов решить проблему. Изучите свою процедуру обнаружения столкновений - если вы работали с hitTestPoint, а точка, которая проверялась (mouseX,Y или ваш главный актер) - с localToGlobal, вам, вероятно, не нужно проверять переменные x,y ваших объектов столкновения. Читайте об этих двух темах, и этот вопрос может быть спорным.

В любом случае вы можете обновить относительные координаты в вашем экземпляре Wall.as, используя globlaToLocal:

public function get curLoc():Point 
{
    return globalToLocal(new Point(this.x, this.y));
}

и извлеките их из вашего родительского класса в качестве точки, с которой вы затем сможете проверить:

trace(_wall.curLoc);

надеюсь, это поможет

Я полагаю, что вы могли бы выполнить то, что вы пытаетесь сделать, манипулируя свойством transform символов стены, но, честно говоря, я бы согласился с Ascension Systems и просто отказался от своей процедуры тестирования столкновений для чего-то другого.

Возможно, вам не нужно полностью использовать физический движок для вашей игры, и в этом случае просто используйте hitTestObject для обнаружения столкновений.

Другие вопросы по тегам