让敌人从墙上反弹(Javascript / Jquery)

时间:2015-04-24 14:48:54

标签: jquery animation random

我正在尝试为学校制作游戏,游戏很简单。 1.球员需要吃蛋糕才能得分 2.随机产生固定数量的敌人并随机移动 3.敌人必须从墙壁反弹并向另一个随机方向移动

我的问题是:我做了一个for循环创造了一些敌人,这些敌人随机移动和产生,但不会从墙上反弹。这些敌人从for-loop(#enemy + i)获取他们的ID,然后将它们推送到一个数组中。

我知道我必须使用setInterval来检查每次敌人是否在边境,但我似乎无法使其工作。

In order to make the code easier to understand:
randomTopVijand = creates a random top position for each enemy
randomLeftVijand = creates a random left position for each enemy
randomRichting = decides in which direction the enemy will go

起初我试图让动画停在墙上,但这没有用。 如果有人能帮助我让这些家伙反弹,我将非常感激。

function maakVijand() {

    for ( i = 0; i < 6; i++) {

        randomTopVijand = Math.floor(Math.random() * 580);
        randomLeftVijand = Math.floor(Math.random() * 780);
        randomRichting = Math.floor(Math.random() * 7);

        $("#terrain").append("<img src='IMG/knight_sprite.gif' id='enemy" + i + "' />");
        arrayVijand.push("enemy" + i);
        $("#enemy" + i).css({
            position : "absolute",
            top : randomTopVijand + "px",
            left : randomLeftVijand + "px"
        });

        if (randomRichting == 0) {

            $("#enemy" + i).animate({
                'left' : '-=200',
                'top' : '-=200'
            }, 1750);
        } else if (randomRichting == 1) {
            $("#enemy" + i).animate({
                'top' : '-=610'
            }, 1750);
        } else if (randomRichting == 2) {
            $("#enemy" + i).animate({
                'left' : '+=810',
                'top' : '-=610'
            }, 1750);
        } else if (randomRichting == 3) {
            $("#enemy" + i).animate({
                'left' : '+=810'
            }, 1750);
        } else if (randomRichting == 4) {
            $("#enemy" + i).animate({
                'left' : '+=810',
                'top' : '+=610'
            }, 1750);
        } else if (randomRichting == 5) {
            $("#enemy" + i).animate({
                'top' : '+=610'
            }, 1750);
        } else if (randomRichting == 6) {
            $("#enemy" + i).animate({
                left : '-=810',
                top : '+=610'
            }, 1750);
        } else if (randomRichting == 7) {
            $("#enemy" + i).animate({
                left : '-=810'
            }, 1750);
        }

        if ($("#enemy" + i).position.top <= positiescherm.left) {
            $("#enemy" + i).stop(true, false);
        }
        if ($('#enemy' + i).position().left <= positiescherm.left) {
            $('#enemy' + i).stop(true, false);
        } else if ($("#enemy" + i).position().left + $("#enemy" + i).width() >= positiescherm.right) {
            $("#enemy" + i).stop(true, false);
        } else if ($("#enemy" + i).position().top <= positiescherm.top) {
            $("#enemy" + i).stop(true, false);
        } else if ($("#enemy" + i).position().top + $("#enemy" + i).height >= positiescherm.bottom) {
            $("#enemy" + i).stop(true, false);
        }
    }
}

0 个答案:

没有答案