Mercurial > hg > Game > WebGL
view Vacuum/resources/vacuum.js @ 0:718974a1a32b
Vacuum
author | <e085737> |
---|---|
date | Tue, 07 Dec 2010 17:31:15 +0900 |
parents | |
children |
line wrap: on
line source
const vacuum_speed = 10.0 no_move_idle = function(node, sgroot, w, h){ } no_collision_idle = function(node, sgroot, w, h){ } vacuum_coll = function(node, sgroot, screen_w, screen_h){ const ENCOUNT = 100 var pad = new sgroot.getController() if(node.frame%ENCOUNT == ENCOUNT-1){ if(Math.random() < 0.5){ add_cubecollision_object(redcube.name,node,screen_w,screen_h,sgroot) } else{ add_cubecollision_object(enemy.name,node,screen_w,screen_h,sgroot) } } if(pad.cross_isHold()){ BgmPlay(test_sound,"on") //var it = new sgroot.getIterator(tree) collision_red(node) //var it = new sgroot.getIterator(tree) collision_purple(node,sgroot,screen_w,screen_h) } else if(pad.circle_isHold()){ //var it = sgroot.getIterator(tree) lock_attack(node, sgroot) } if(pad.cross_isRelease()){ BgmPlay(test_sound,"off") } } lock_attack = function(e, sgroot){ var range = 100 for(num in e.child){ lock_attack(e.child[num], sgroot) } if(e.id == "ENEMY"){ var node = sg_exec_tree var dx = e.xyz[0] - node.xyz[0] var dy = e.xyz[1] - node.xyz[1] var r = Math.sqrt(Math.pow(dx,2) + Math.pow(dy,2)) if(range > r && e.stack_xyz[2] == 0){ range = r var near_enemy = e } if(near_enemy != null){ near_enemy.stack_xyz[2] = 1 var lockon = sgroot.createSceneGraph2("LOCK") lockon.xyz[0] = near_enemy.xyz[0] lockon.xyz[1] = near_enemy.xyz[1] lockon.set_move_collision(no_move_idle, lockon_collision) near_enemy.addChild(lockon) } } } lockon_collision = function(node, sgroot, w, h, tree){ var pad = new sgroot.getController() var lockon_enemy = node.parents node.xyz[0] = lockon_enemy.xyz[0] node.xyz[1] = lockon_enemy.xyz[1] if(pad.circle_isRelease()){ lockon_enemy.remove(lockon_enemy) } } vacuum_move = function(node,sgroot,w,h){ var pad = new sgroot.getController() if(pad.right_isHold() && w > node.xyz[0]){ node.xyz[0] += vacuum_speed node.angle[0] += 2 }else if(pad.left_isHold() && 0 < node.xyz[0]){ node.xyz[0] -= vacuum_speed node.angle[0] -= 2 } if(pad.up_isHold() && 0 > node.xyz[1]){ node.xyz[1] += vacuum_speed node.angle[1] += 2 }else if(pad.down_isHold() && h < node.xyz[1]){ node.xyz[1] -= vacuum_speed node.angle[1] -= 2 } if(pad.start_isHold()){ node.xyz[0] = w/2 node.xyz[1] = h*0.8 } } add_cubecollision_object = function(id, root, w, h, sgroot){ var cube_object = new sgroot.createSceneGraph1(id) cube_object.xyz[0] = Math.random()*w cube_object.xyz[1] = Math.random()*h cube_object.set_move_collision(no_move_idle,cube_collision) } vacuum_init = function(gl, sgroot, w, h){ sgroot.createFromXMLfile(gl, "./xml/gameover.xml") sgroot.createFromXMLfile(gl, "./xml/gamecube.xml") sgroot.createFromXMLfile(gl, "./xml/title.xml") test_sound = MusicLoad("./sound/vacuum.wav") var title = new sgroot.createSceneGraph1("TITLE") title.xyz[0] = w/2 title.xyz[1] = h/2 title.set_move_collision(no_move_idle, title_collision) sgroot.setSceneData(title) redcube = sgroot.getSgid("REDCUBE") enemy = sgroot.getSgid("ENEMY") return sgroot }