view paper_shooting/resources/enemy.js @ 25:158b846e3874

paper
author <e085737>
date Mon, 14 Feb 2011 16:37:16 +0900
parents
children 943490f525c5
line wrap: on
line source

createEnemy = function(node, sgroot, w, h){
    if(node.frame > 300 && node.main.child.length < 4){
        var enemy = new sgroot.createSceneGraph1("Enemy");
        enemy.xyz[0] = 145;
        enemy.xyz[1] = 0;
        enemy.xyz[2] = 0;
        enemy.scale = 2.0;
        enemy.angle[0] = 90;
        enemy.life = 10;
        enemy.combat = sgroot.list['Player'];
        enemy.bullet = sgroot.list['Enemy_bullet'];
        enemy.my_bullet = sgroot.list['my_bullet'];
        enemy.set_move_collision(enemy_move, enemy_collision_2d);
        node.main.addChild(enemy);

        this.frame = 0;
        node.set_move_collision(createEnemy2, no_collision_idle);
    }
}


createEnemy2 = function(node, sgroot, w, h){
    if(node.frame > 300 && node.main.child.length < 4){
        var enemy = new sgroot.createSceneGraph1("Enemy001");
        enemy.xyz[0] = 145;
        enemy.xyz[1] = 0;
        enemy.xyz[2] = 0;
        enemy.scale = 2.0;
        enemy.angle[0] = 90;
        enemy.life = 10;
        enemy.combat = sgroot.list['Player'];
        enemy.bullet = sgroot.list['Enemy_bullet'];
        enemy.my_bullet = sgroot.list['my_bullet'];
        enemy.set_move_collision(enemy_move, enemy_collision_2d);
        node.main.addChild(enemy);

        this.frame = 0;
        node.set_move_collision(createEnemy, no_collision_idle);
    }
}


enemy_move = function(node, sgroot,  w, h){
    var theta = (node.frame)*0.01;
    var radian = Math.sin(theta);
    node.xyz[0] -= 0.2;
    node.xyz[2] = 65 * radian - 65;

    if(0 == node.frame%30){
        var bullet_speed = 1;
        var bullet = new sgroot.createSceneGraph1("red");
        bullet.xyz[0] = node.xyz[0];
        bullet.xyz[1] = 65 * -radian + 65;
        bullet.xyz[2] = node.xyz[1];
        bullet.dx = -bullet_speed;
        bullet.dy = 0.0;
        bullet.dz = 0.0;
        bullet.scale = 0.3;
        bullet.set_move_collision(bullet_move2, no_collision_idle);
        node.bullet.addChild(bullet);
    }

}


enemy_collision_2d = function(node, sgroot, w, h){
    for(num in node.my_bullet.child){
        var dx = node.my_bullet.child[num].xyz[0] - node.xyz[0];    
        var dy = node.my_bullet.child[num].xyz[1] + node.xyz[2];
        var dz = node.my_bullet.child[num].xyz[2] - node.xyz[1];
        var ddx = dx*dx;
        var ddy = dy*dy;
        var ddz = dz*dz;
        //var r = Math.sqrt(ddx+ddy+ddz);
        var r2 = ddx+ddy+ddz;

        if(r2 < 100){
            node.life--;
            node.remove(node.my_bullet.child[num]);
            if(node.life < 0){
                for(var num=0; num < 30; num++){
                    node.scale += 0.1;
                }
                node.remove(node);
            }
        }
    }
}


machida_collision = function(node, sgroot, w, h){
    for(num in node.my_bullet.child){
        var dx = node.my_bullet.child[num].xyz[0] + node.xyz[2];    
        var dy = node.my_bullet.child[num].xyz[1] - node.xyz[1];
        var dz = node.my_bullet.child[num].xyz[2] - node.xyz[0];
        var ddx = dx*dx;
        var ddy = dy*dy;
        var ddz = dz*dz;
        //var r = Math.sqrt(ddx+ddy+ddz);
        var r2 = ddx+ddy+ddz;

        if(r2 < 2500){
            node.life--;
            node.remove(node.my_bullet.child[num]);
            if(node.life < 0){
                node.set_move_collision(machida_up, no_collision_idle);
            }
        }
    }
}


machida_collision2 = function(node, sgroot, w, h){
    for(num in node.my_bullet.child){
        var dx = node.my_bullet.child[num].xyz[0] + node.xyz[2];    
        var dy = node.my_bullet.child[num].xyz[1] - node.xyz[1];
        var dz = node.my_bullet.child[num].xyz[2] - node.xyz[0];
        var ddx = dx*dx;
        var ddy = dy*dy;
        var ddz = dz*dz;
        //var r = Math.sqrt(ddx+ddy+ddz);
        var r2 = ddx+ddy+ddz;

        if(r2 < 2500){
            node.life--;
            node.remove(node.my_bullet.child[num]);
            if(node.life < 0){
                var game = new sgroot.createSceneGraph1("Game");
                game.xyz[0] = 20;
                game.xyz[1] = 0;
                game.xyz[2] = -50;
                game.angle[0] = 90;
                game.scale = 0.4;

                var clear = new sgroot.createSceneGraph1("Clear");
                clear.xyz[0] = -20;
                clear.xyz[1] =  0;
                clear.xyz[2] =-80;
                clear.set_move_collision(no_move_idle, no_collision_idle);

                game.addChild(clear);

                sgroot.setSceneData(game);
                node.remove(node);
            }
        }
    }
}