Mercurial > hg > Members > e085722 > map
diff resources/human.js @ 0:0b8d8ce99f46 default tip
commit
author | Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp> |
---|---|
date | Mon, 14 Feb 2011 17:06:56 +0900 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/resources/human.js Mon Feb 14 17:06:56 2011 +0900 @@ -0,0 +1,374 @@ +createHuman = function(sgroot, w, h){ + var walk_man = new sgroot.createSceneGraph3(); + walk_man.xyz[0] = 100; + walk_man.xyz[1] = -5; + walk_man.xyz[2] = 100; + position_xyz[0] = walk_man.xyz[0]; + position_xyz[1] = walk_man.xyz[1] - 10; + position_xyz[2] = walk_man.xyz[2] - 50; + aim_xyz[0] = position_xyz[0]; + aim_xyz[1] = position_xyz[1]; + aim_xyz[2] = position_xyz[2] + 1; + walk_man.scale = 0.01; + //walk_man.set_move_collision(body_move, body_collision) + walk_man.set_move_collision(body_move, no_collision_idle); + + + var head = new sgroot.createSceneGraph1("head"); + head.angle[0] = 90; + head.angle[1] = 90; + head.xyz[0] = -sgroot.sg_src["head"].model_x * 100; + head.xyz[1] = -sgroot.sg_src["head"].model_y * 100; + head.xyz[2] = -sgroot.sg_src["head"].model_z * 100; + head.set_move_collision(head_move, no_collision_idle); + + + var body = new sgroot.createSceneGraph1("body"); + body.xyz[0] = -sgroot.sg_src["body"].model_x * 100; + body.xyz[1] = -sgroot.sg_src["body"].model_y * 100; + body.xyz[2] = -sgroot.sg_src["body"].model_z * 100 + 200; + body.set_move_collision(no_move_idle, no_collision_idle); + + + var joint_rh = new sgroot.createSceneGraph1("Kata"); + /*joint_rh.xyz[0] = -sgroot.sg_src["green"].model_x * 7 + joint_rh.xyz[1] =- sgroot.sg_src["green"].model_y * 7 + joint_rh.xyz[2] = -sgroot.sg_src["green"].model_z * 7 + */ + + joint_rh.scale = 7; + joint_rh.set_move_collision(joint_rh_move, no_collision_idle); + + + var right_hand = new sgroot.createSceneGraph1("right_hand"); + right_hand.xyz[0] = -sgroot.sg_src["right_hand"].model_x * (100/7); + right_hand.xyz[1] = -sgroot.sg_src["right_hand"].model_y * (100/7); + right_hand.xyz[2] = -sgroot.sg_src["right_hand"].model_z * (100/7) - (sgroot.sg_src["right_hand"].w / 2); + right_hand.scale = 1/7; + right_hand.set_move_collision(right_hand_move, no_collision_idle); + + + var joint_lh = new sgroot.createSceneGraph1("Kata"); + joint_lh.scale = 7; + joint_lh.set_move_collision(joint_lh_move, no_collision_idle); + + + var left_hand = new sgroot.createSceneGraph1("left_hand"); + left_hand.xyz[0] = -sgroot.sg_src["left_hand"].model_x * (100/7); + left_hand.xyz[1] = -sgroot.sg_src["left_hand"].model_y * (100/7); + left_hand.xyz[2] = -sgroot.sg_src["left_hand"].model_z * (100/7) - (sgroot.sg_src["left_hand"].w / 2); + left_hand.scale = 1/7; + left_hand.set_move_collision(left_hand_move, no_collision_idle); + + + var joint_rl = new sgroot.createSceneGraph1("Kata"); + joint_rl.scale = 7; + joint_rl.set_move_collision(joint_rl_move, no_collision_idle); + + var right_leg = new sgroot.createSceneGraph1("left_leg"); + right_leg.xyz[0] = -sgroot.sg_src["left_leg"].model_x * (100/7); + right_leg.xyz[1] = -sgroot.sg_src["left_leg"].model_y * (100/7); + right_leg.xyz[2] = -sgroot.sg_src["left_leg"].model_z * (100/7) - (sgroot.sg_src["left_leg"].w / 10); + right_leg.scale = 1/7; + right_leg.set_move_collision(right_leg_move, no_collision_idle); + + + var joint_ll = new sgroot.createSceneGraph1("Kata"); + joint_ll.scale = 7; + joint_ll.set_move_collision(joint_ll_move, no_collision_idle); + + + var left_leg = new sgroot.createSceneGraph1("left_leg"); + left_leg.xyz[0] = -sgroot.sg_src["left_leg"].model_x * (100/7); + left_leg.xyz[1] = -sgroot.sg_src["left_leg"].model_y * (100/7); + left_leg.xyz[2] = -sgroot.sg_src["left_leg"].model_z * (100/7) - (sgroot.sg_src["left_leg"].w / 10); + left_leg.scale = 1/7; + left_leg.set_move_collision(left_leg_move, no_collision_idle); + + + + walk_man.addChild(head); + head.addChild(body); + + body.addChild(joint_rh); + joint_rh.addChild(right_hand); + + body.addChild(joint_lh); + joint_lh.addChild(left_hand); + + body.addChild(joint_rl); + joint_rl.addChild(right_leg); + + body.addChild(joint_ll); + joint_ll.addChild(left_leg); + + + + return walk_man; + +} + + +roteta_body = function(node, sgroot, w, h){ + node.angle[2] += 1; +} + +head_move = function(node, sgroot, w, h){ + var move_eye = 1.0; + var PI = 3.14; + var pad = new sgroot.getController(); + var dx = node.parents.xyz[0] - position_xyz[0]; + var dz = node.parents.xyz[2] - position_xyz[2]; + var d = Math.sqrt(Math.pow(dx,2) + Math.pow(dz,2)); + + + if(pad.left_isHold()){ + cameraAngle_xyz[0] -= move_eye; + theta += move_eye; + var radian = ((theta%360) / 360) * 2 * PI; + var x_rate = Math.sin(radian); + var z_rate = Math.cos(radian); + var mv_x = d * Math.cos(radian); + var mv_z = d * Math.sin(radian); + + position_xyz[0] = node.parents.xyz[0] - mv_x; + position_xyz[2] = node.parents.xyz[2] - mv_z; + aim_xyz[0] = position_xyz[0] ; + aim_xyz[2] = position_xyz[2] + 1; + node.angle[0] -= move_eye; + angleRate_xyz[0] = x_rate; + angleRate_xyz[2] = z_rate; + } + + + if(pad.right_isHold()){ + cameraAngle_xyz[0] += move_eye; + theta -= move_eye; + var radian = ((theta%360) / 360) * 2 * PI; + var x_rate = Math.sin(radian); + var z_rate = Math.cos(radian); + var mv_x = d * Math.cos(radian) + var mv_z = d * Math.sin(radian); + + position_xyz[0] = node.parents.xyz[0] - mv_x; + position_xyz[2] = node.parents.xyz[2] - mv_z; + aim_xyz[0] = position_xyz[0]; + aim_xyz[2] = position_xyz[2] + 1; + node.angle[0] += move_eye; + angleRate_xyz[0] = x_rate; + angleRate_xyz[2] = z_rate; + } + + + if(pad.up_isHold() && cameraAngle_xyz[1] > -90){ + //node.angle[2] -= move_eye + cameraAngle_xyz[1] -= move_eye; + } + + if(pad.down_isHold() && cameraAngle_xyz[1] < 90){ + //node.angle[2] += move_eye + cameraAngle_xyz[1] += move_eye; + } + +} + + + +body_move = function(node, sgroot, w, h){ + var move_eye = 1.0; + var move_walk = 1.0; + var PI = 3.14; + var pad = new sgroot.getController(); + var dx = position_xyz[0] - aim_xyz[0]; + var dz = position_xyz[2] - aim_xyz[2]; + var d = Math.sqrt(Math.pow(dx,2) + Math.pow(dz,2)); + + //if(node.xyz[0] >= 0 && node.xyz[2] >= 0){ + if(pad.left_move_isHold()){ + var radian = (((theta+90)%360) / 360) * 2 * PI; + + if(!pad.zoom_in_isHold()){ + node.xyz[0] += move_walk * Math.cos(radian); + node.xyz[2] += move_walk * Math.sin(radian); + } + + aim_xyz[0] += move_walk * Math.cos(radian); + aim_xyz[2] += move_walk * Math.sin(radian); + position_xyz[0] += move_walk * Math.cos(radian); + position_xyz[2] += move_walk * Math.sin(radian); + } + + if(pad.right_move_isHold()){ + var radian = (((theta+90)%360) / 360) * 2 * PI; + + if(!pad.zoom_in_isHold()){ + node.xyz[0] -= move_walk * Math.cos(radian); + node.xyz[2] -= move_walk * Math.sin(radian); + } + + aim_xyz[0] -= move_walk * Math.cos(radian); + aim_xyz[2] -= move_walk * Math.sin(radian); + position_xyz[0] -= move_walk * Math.cos(radian); + position_xyz[2] -= move_walk * Math.sin(radian); + } + + if(pad.front_move_isHold()){ + var radian = ((theta%360) / 360) * 2 * PI; + + if(!pad.zoom_in_isHold()){ + node.xyz[0] += move_walk * Math.cos(radian); + node.xyz[2] += move_walk * Math.sin(radian); + } + + position_xyz[0] += move_walk * Math.cos(radian); + position_xyz[2] += move_walk * Math.sin(radian); + aim_xyz[0] += move_walk * Math.cos(radian); + aim_xyz[2] += move_walk * Math.sin(radian); + + move_length++; + } + + if(pad.back_move_isHold()){ + var radian = ((theta%360) / 360) * 2 * PI; + + if(!pad.zoom_in_isHold()){ + node.xyz[0] -= move_walk * Math.cos(radian); + node.xyz[2] -= move_walk * Math.sin(radian); + } + + position_xyz[0] -= move_walk * Math.cos(radian); + position_xyz[2] -= move_walk * Math.sin(radian); + aim_xyz[0] -= move_walk * Math.cos(radian); + aim_xyz[2] -= move_walk * Math.sin(radian); + + move_length--; + } + //} + + if(pad.start_isHold()){ + var bullet_speed = 2; + var radian_xz = ((theta%360)/360) * 2 * PI; + var radian_yz = ((cameraAngle_xyz[1]%90)/90) * (PI / 2); + var bullet = new sgroot.createSceneGraph1("yellow"); + bullet.xyz[0] = position_xyz[0] + Math.cos(radian_xz) * 200; + bullet.xyz[1] = position_xyz[1] + Math.sin(radian_yz) * 200; + bullet.xyz[2] = position_xyz[2] + Math.sin(radian_xz) * 200; + bullet.dx = Math.cos(radian_xz) * bullet_speed; + bullet.dy = Math.sin(radian_yz) * bullet_speed; + bullet.dz = Math.sin(radian_xz) * bullet_speed; + bullet.scale = 0.3; + bullet.set_move_collision(bullet_move, no_collision_idle); + } + + + if(pad.space_isHold()){ + node.xyz[1] -= 0.8; + position_xyz[1] -= 0.8; + aim_xyz[1] -= 0.8; + }else if(pad.space_isRelease() && node.xyz[1] < -5){ + node.xyz[1] += 0.4; + position_xyz[1] += 0.4; + aim_xyz[1] += 0.4; + } +} + + + +body_collision = function(node, sgroot, w, h){ + var dx = node.xyz[0] - position_xyz[0]; + var dz = node.xyz[2] - position_xyz[2]; + var d = Math.sqrt(Math.pow(dx,2) + Math.pow(dz,2)); + var PI = 3.14; + var radian = ((theta%360) / 360) * 2 * PI; + if(node.xyz[0] < 0){ + node.xyz[0] = 0; + position_xyz[0] = -d * Math.cos(radian); + aim_xyz[0] = position_xyz[0]; + } + + if(node.xyz[0] > 350){ + node.xyz[0] = 350; + position_xyz[0] = 350 + (-d * Math.cos(radian)); + aim_xyz[0] = position_xyz[0]; + } + + + if(node.xyz[2] < 0){ + node.xyz[2] = 0; + position_xyz[2] = -d * Math.sin(radian); + aim_xyz[2] = position_xyz[2] + 1; + } + + if(node.xyz[2] > 350){ + node.xyz[2] = 350; + position_xyz[2] = 350 + (-d * Math.sin(radian)); + aim_xyz[2] = position_xyz[2] + 1; + } +} + + +right_hand_move = function(node, sgroot, w, h){ + var PI = 3.14; + var radian = (((move_length*5)%360) / 360) * 2 * PI; + var range = 90; + node.angle[0] = Math.sin(radian) * range; +} + + +left_hand_move = function(node, sgroot, w, h){ + var PI = 3.14; + var radian = (((move_length*5)%360) / 360) * 2 * PI; + var range = 90; + + node.angle[0] = Math.sin(-radian) * range; +} + + +right_leg_move = function(node, sgroot, w, h){ + var PI = 3.14; + var radian = (((move_length*5)%360) / 360) * 2 * PI; + var range = 90; + + node.angle[0] = Math.sin(-radian) * range; +} + + +left_leg_move = function(node, sgroot, w, h){ + var PI = 3.14; + var radian = (((move_length*5)%360) / 360) * 2 * PI; + var range = 90; + + node.angle[0] = Math.sin(radian) * range; +} + + +joint_rh_move = function(node, sgroot, w, h){ + node.angle[1] = 45; + node.xyz[0] = 0; + node.xyz[1] = 300; + node.xyz[2] = 100; +} + +joint_lh_move = function(node, sgroot, w, h){ + node.angle[1] = -45; + node.xyz[0] = 0; + node.xyz[1] = -300; + node.xyz[2] = 100; +} + + +joint_rl_move = function(node, sgroot, w, h){ + node.xyz[0] = 0; + node.xyz[1] = -60; + node.xyz[2] = 0; +} + + + + +joint_ll_move = function(node, sgroot, w, h){ + node.xyz[0] = 0; + node.xyz[1] = 60; + node.xyz[2] = 0; +} +