Flash CS4 / AS3 символ в символах - PullRequest
0 голосов
/ 06 апреля 2011

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

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

Ответы [ 3 ]

1 голос
/ 06 апреля 2011

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

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

0 голосов
/ 06 апреля 2011

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

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

0 голосов
/ 06 апреля 2011

Всегда пытаться ответить на подобные вопросы, так как много неизвестных. При этом в программировании всегда есть более чем несколько способов решить проблему. Изучите свою процедуру обнаружения столкновений - если вы работали с 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);

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

...