AS3 случайная точка между двумя прямоугольниками - PullRequest
1 голос
/ 16 января 2011

Я делаю вид сверху на выживание в зомби в AS3. Я хочу породить врагов в волнах, определяемых «рамками», или разницей между большим прямоугольником и меньшим внутри него, как в рамке рисунка. Прямо сейчас вот мой код, который довольно неэффективен. Мне было интересно, если есть лучший способ. Этот код тоже не работает, все враги появляются в правом нижнем углу экрана:

    public static function waveOne():Point {

        var inner:Rectangle = Waves.WAVE_ONE_RECTANGLE_1;
        var outer:Rectangle = Waves.WAVE_ONE_RECTANGLE_2;

        var x:Number = Math.random();
        var y:Number = Math.random();

        x = x * outer.width;
        y = y * outer.height;

        trace(x + " " + y);

        if (((x > outer.left && x < inner.left) || (x > inner.right && x < outer.right)) && ((y > outer.top && y < inner.top) || (y > inner.bottom && y < outer.bottom))) {
            return(new Point(x, y));
        }
        else {
            return waveOne();
        }
    }

1 Ответ

1 голос
/ 16 января 2011

Простым решением было бы определить 4 прямоугольника, используя внутренний прямоугольник и внешний прямоугольник. (Слева, справа, сверху, снизу) Сначала вы выбираете случайным образом прямоугольник, а затем вам нужно найти свою точку внутри этого прямоугольника.

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