Можете ли вы опубликовать свой код реализации (Брезенхэма) здесь? Я хотел бы сделать тест производительности, если моя реализация будет быстрее: D ...
Странная вещь - я ДЕЙСТВИТЕЛЬНО проводил сравнение, сравнивая мою реализацию с нативной Graphics.drawLine () AS3.0. Это было буквально в 5-10 раз быстрее. Это даже сглаживание, но я думаю, что здесь делает дело Рождество.
Но в любом случае - до тех пор, пока пули ... Скажем, MISSILES (пули, ракеты, лазеры ...), здесь нет ничего медленно движущегося, большого, который должен выглядеть тоже хорошо (не только линии), используйте MovieClip или даже лучше Sprite , когда анимация не требуется. В другом месте используйте Graphics.drawLine () .
Кроме того, для проверки попадания с помощью линий и поиска точек, на которых можно нарисовать линии (не Спрайты ), у вас будет диапазон этой пули (если он бесконечный, используйте что-то вроде Stage.width , или Stage.height , если он больше), где он все еще может попасть. Тогда у тебя тоже будет свой угол. Если это вдоль осей X или Y, довольно легко получить точки линии. Для различных используйте Point.polar (диапазон, угол) [liveDocs] , к которому вы добавляете исходную позицию этой пули.
Тестирование попаданий будет выполнено с помощью Point.interpolate () [liveDocs] . Точка 1 будет исходной позицией / начальной точкой, вторая - точкой, полученной из Point.polar () . Наконец, последним параметром должно быть расстояние от начала (здесь не нужно Math.atan2 () - просто увеличьте это значение каждый кадр на скорость пули), деленное на расстояние между начальной и конечной точками (снова , нет Math.atan2 () - только «диапазон». Этот Point.interpolate () даст вам точку, которую вы, наконец, будете использовать с каждой возможной целью для пули (либо переберите все, либо, для производительности, проверьте, меньше ли расстояния X и Y или равны их ширине и высоте) - target.hitTestPoint (interX, interY, true) [liveDocs ] .