hitTestPoint () неправильно проверяет наличие столкновений - PullRequest
0 голосов
/ 22 февраля 2012

Я пишу игру, в которой есть враги и пули. Когда пуля попадает в противника, я хочу уничтожить врага и пулю. Я использую метод hitTestPoint(), чтобы проверить, попала ли пуля во врага. Вот код в моем игровом цикле:

for each(var bullet:Bullet in this.bullets) {
    for each(var enemy:Enemy in this.enemies) {
        if(enemy.hitTestPoint(bullet.x, bullet.y)) {
            trace("hit");
        }
    }
    bullet.update();
}

this.bullets и this.enemies - это массивы, содержащие объекты для пуль и врагов. Вот эти два класса:

package com {
    import flash.display.MovieClip;
    import flash.display.Stage;

    public class Bullet extends MovieClip {

        private var stageRef:Stage;
        public var speed:Number = 10;

        public function Bullet(stage:Stage) {
            this.stageRef = stage;
        }

        public function update() {
            this.x += Math.sin((Math.PI / 180) * (360 - this.rotation)) * this.speed;
            this.y += Math.cos((Math.PI / 180) * (360 - this.rotation)) * this.speed;
        }
    }
}

-

package com {
    import flash.display.MovieClip;
    import flash.display.Stage;

    public class Enemy extends MovieClip {

    public var speed:Number = 4;
    private var stageRef:Stage;

    public function Enemy(stage:Stage) {
        this.stageRef = stage;
        this.x = this.stageRef.stageWidth / 3;
        this.y = this.stageRef.stageHeight / 2;
    }

    public function update() {

    }
}

}

Проблема в том, что hitTestPoint возвращает значение true, только если значения x и y для bullet и врага совпадают, а не если два фрагмента ролика перекрываются. Это приводит к тому, что пули проходят сквозь врагов, но не регистрируются как попадания. Возможно, мне не хватает ограничительной рамки?

Есть ли способ, которым я могу заставить hitTestPoint вернуть истину, если пуля поразит врага вообще, а не только, если координаты пули и врага совпадают?

Спасибо!

Ответы [ 2 ]

0 голосов
/ 23 февраля 2012

Да, если ваши мувиклипы слишком малы, кадр х будет точно направлен к объекту, а следующий кадр будет пропущен, возможно, вы захотите увеличить «хитбокс», например, увеличить мувиклип с помощью альфа-прямоугольников. .

0 голосов
/ 22 февраля 2012
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...