Mercurial > hg > Members > e085737 > sample
view Pants_FPS/resources/human.js @ 17:bf87fe5a9797
ver3
author | <e085737> |
---|---|
date | Fri, 10 Dec 2010 20:19:03 +0900 |
parents | 9367d87879ee |
children | 931ad40d56f5 |
line wrap: on
line source
createHuman = function(sgroot, w, h){ var walk_man = new sgroot.createSceneGraph3() walk_man.xyz[0] = 100 walk_man.xyz[1] = 0 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] - 30 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) var head = new sgroot.createSceneGraph1("head") head.angle[0] = 90 head.angle[1] = 90 head.xyz[0] = 0 head.xyz[1] = 0 head.xyz[2] = 0 head.scale = 1 head.set_move_collision(head_move, no_collision_idle) var body = new sgroot.createSceneGraph1("body") body.angle[1] = 0 body.xyz[0] = 0 body.xyz[1] = 0 body.xyz[2] = 0 body.scale = 1 //body.set_move_collision(body_move, body_collision) var right_hand = new sgroot.createSceneGraph1("right_hand") right_hand.link = true right_hand.angle[1] = -90 right_hand.scale = 1 right_hand.set_move_collision(right_hand_move, no_collision_idle) var left_hand = new sgroot.createSceneGraph1("left_hand") left_hand.link = true left_hand.angle[1] = 90 left_hand.scale = 1 left_hand.set_move_collision(left_hand_move, no_collision_idle) var right_leg = new sgroot.createSceneGraph1("left_leg") right_leg.link = true //right_leg.angle[1] = 90 right_leg.scale = 1 right_leg.set_move_collision(right_leg_move, no_collision_idle) var left_leg = new sgroot.createSceneGraph1("left_leg") left_leg.link = true //left_leg.angle[1] = 90 left_leg.scale = 1 left_leg.set_move_collision(left_leg_move, no_collision_idle) walk_man.addChild(head) head.addChild(body) body.addChild(right_hand) body.addChild(left_hand) body.addChild(right_leg) body.addChild(left_leg) return walk_man } head_move = function(node, sgroot, w, h){ var move_eye = 1.0 var PI = 3.14 var pad = new sgroot.getController() var d = 30 if(pad.left_isHold()){ cameraAngle_xyz[0] -= move_eye theta += move_eye theta1 += 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 theta1 -= 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) } 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) } } 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.set_move_collision(jump_move, no_collision_idle) } if(pad.cross_isHold() && position_xyz[1] < 80){ position_xyz[1] += 8 aim_xyz[1] += 8 }else if(pad.cross_isRelease() && position_xyz[1] > 0){ position_xyz[1] -= 8 aim_xyz[1] -= 8 } } body_collision = function(node, sgroot, w, h){ var d = 30 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){ node.xyz[0] = 0 node.xyz[1] = -430 node.xyz[2] = 350 } left_hand_move = function(node, sgroot, w, h){ node.xyz[0] = 0 node.xyz[1] = 430 node.xyz[2] = 220 } right_leg_move = function(node, sgroot, w, h){ node.xyz[0] = 0 node.xyz[1] = 100 node.xyz[2] = 0 } left_leg_move = function(node, sgroot, w, h){ node.xyz[0] = 0 node.xyz[1] = 0 node.xyz[2] = 0 }