Я пытаюсь создать флеш-игру, в которой есть обнаружение столкновения между игроком и стенами. Однако, когда я пытаюсь использовать Wall11.hitTestPoint(), я не могу добиться идеального обнаружения столкновения. Затем я решил использовать растровое изображение, но его сложно закодировать, потому что стена имеет неправильную форму (это не квадрат, прямоугольник, круг или обычная форма). Есть ли способ улучшить обнаружение столкновений со стенами?(ActionScript 3) Оптимизированная по пикселям обнаружение столкновений между стенами и игроком?
function checkCollision(_debug:Boolean = false):Boolean {
var bmd1:BitmapData = new BitmapData(Wall11.width, Wall11.height, true, 0);
var bmd2:BitmapData = new BitmapData(LevelOnePlayer.width, LevelOnePlayer.height, true, 0);
bmd1.draw(Wall11);
bmd2.draw(LevelOnePlayer);
if (_debug) {
var bmp:Bitmap = new Bitmap(bmd1);
bmp.x = Wall11.x;
bmp.y = Wall11.y;
addChild(bmp);
var bmp2:Bitmap = new Bitmap(bmd2);
bmp2.x = LevelOnePlayer.x;
bmp2.y = LevelOnePlayer.y;
addChild(bmp2);
}
if(bmd1.hitTest(new Point(Wall11.x, Wall11.y), 255, bmd2, new Point(LevelOnePlayer.x, LevelOnePlayer.y), 255))
return true;
if (!_debug) {
bmd1.dispose();
bmd2.dispose();
}
return false;
}
Пожалуйста, объясните, почему hitTestPoint (с последним аргументом shapeFlag = true) не работает для вас? – Organis
Независимо от того, что я установил, стена всегда обнаруживает столкновение, когда игрок находится слишком близко или слишком далеко от стены. Я не знаю, как установить столкновение в точку, где мне нужна точка столкновения. –
Опять же, чтобы это исключить. Используете ли вы флаг формы и формы? Кроме того, вы используете координаты сцены для точки или локальных координат? – Organis