Mercurial > hg > Members > e085722 > map
view resources/combat_plane.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 source
createPlane = function(sgroot, w, h){ var combat_plane = new sgroot.createSceneGraph3(); combat_plane.xyz[0] = -2; combat_plane.xyz[1] = -10; combat_plane.xyz[2] = 65; combat_plane.dy = 0; combat_plane.r = 4.0; position_xyz[0] = combat_plane.xyz[0]; position_xyz[1] = combat_plane.xyz[1]; position_xyz[2] = combat_plane.xyz[2] - 10; aim_xyz[0] = position_xyz[0]; aim_xyz[1] = position_xyz[1]; aim_xyz[2] = position_xyz[2] + 1; cameraAngle_xyz[0] = 0; cameraAngle_xyz[1] = 0; cameraAngle_xyz[2] = 0; combat_plane.scale = 0.2; combat_plane.set_move_collision(plane_move, no_collision_idle); var main = new sgroot.createSceneGraph1("Piyo"); main.angle[0] = 180; main.angle[1] = 90; main.set_move_collision(main_move, no_collision_idle); combat_plane.addChild(main); combat_plane.map = new Array(180,120,180,-120, 180,-120,-180,-120, -180,-120,-180,120, -180,120,180,120); /* combat_plane.map = new Array(114,120,120,84,120,84,132,84,132,84,138,120,138,120, 180,66,126,66,126,66,126,54,126,54,114,54,114,54,120,12,120,12,144,12,144,12,126,42,126,42,180,42,180,42,180,66, 102,66,-24,66,-24,66,-24,108,-24,108,-42,108,-42,108,-42,66,-42,66,-72,66,-72,66,-66,42,-66,42,60,54,60,54,66,30,66,30,72,24,72,24,108,-12,108,-12,120,-6,120,-6,84,30,84,30,72,54,72,54,102,42,102,42,102,66, -90,120,-114,120,-114,120,-114,96,-114,96,-108,96,-108,96,-126,72,-126,72,-120,72,-120,72,-144,78,-144,78,-180,72,-180,72,-180,60,-180,60,-144,60,-144,60,-120,60,-120,60,-120,66,-120,66,-102,66,-02,66,-90,78,-90,78,-90,96,-90,96,-90,120, -144,48,-144,54,-144,54,-168,54,-168,54,-180,42,-180,42,-180,24,-180,24,-168,12,-168,12,-144,12,-144,12,-144,18,-144,18,-150,18,-150,18,-162,30,-162,30,-150,48,-150,48,-144,48, 132,-120,114,-54,114,-54,78,0,78,0,60,6,60,6,48,30,48,30,36,30,36,30,-42,-12,-42,-12,36,18,36,18,-24,12,-24,12,-54,0,-54,0,-60,-12,-60,-12,-72,-12,-72,-12,-78,6,-78,6,-90,6,-90,6,-90,-24,-90,-24,-102,-30,-102,-30,-102,0,-102,0,-180,6,-180,6,-180,-12,-180,-12,-120,-6,-120,-6,-120,-42,-120,-42,-132,-60,-132,-60,-144,-60,-144,-60,-144,-84,-144,-84,-150,-120,-150,-120,-126,-120,-126,-120,-120,-84,-120,-84,-114,-66,-114,-66,-108,-48,-108,-48,-96,-30,-96,-30,-78,-36,-78,-36,-60,-30,-60,-30,-60,-18,-60,-18,-48,-12,-48,-12,-24,0,-24,0,36,0,36,0,54,-12,54,-12,54,6,54,6,66,-18,66,-18,96,-60,96,-60,120,-120,120,-120,162,-120 ); */ console.log(combat_plane.map); return combat_plane; } plane_move = function(node, sgroot, w ,h){ var move_eye = 0.8; var move_walk = 0.5; var PI = 3.14; var pad = new sgroot.getController(); var dx = position_xyz[0] - aim_xyz[0]; var dy = position_xyz[1] - aim_xyz[1]; var dz = position_xyz[2] - aim_xyz[2]; var d = Math.sqrt(Math.pow(dx,2) + Math.pow(dy,2) + Math.pow(dz,2)); if(pad.left_move_isHold()){ var radian = (((theta_xz+90)%360) / 360) * 2 * PI; var ddx = move_walk * Math.cos(radian); var ddz = move_walk * Math.sin(radian); var q0 = new Array(this.xyz[0]+ddx,this.xyz[2]+ddz); var delta = collision_b(this.map,q0,ddx,ddz,this.r,1); ddx = delta[0]; ddz = delta[1]; node.xyz[0] += ddx; node.xyz[2] += ddz; position_xyz[0] += ddx; position_xyz[2] += ddz; aim_xyz[0] += ddx; aim_xyz[2] += ddz; } if(pad.right_move_isHold()){ var radian = (((theta_xz+90)%360) / 360) * 2 * PI; var ddx = move_walk * Math.cos(radian); var ddz = move_walk * Math.sin(radian); var q0 = new Array(this.xyz[0]+ddx,this.xyz[2]+ddz); var delta = collision_b(this.map,q0,ddx,ddz,this.r,-1); ddx = delta[0]; ddz = delta[1]; node.xyz[0] -= ddx; node.xyz[2] -= ddz; position_xyz[0] -= ddx; position_xyz[2] -= ddz; aim_xyz[0] -= ddx; aim_xyz[2] -= ddz; } if(pad.front_move_isHold()){ var radian = ((theta_xz%360) / 360) * 2 * PI; var ddx = move_walk * Math.cos(radian); var ddz = move_walk * Math.sin(radian); var q0 = new Array(this.xyz[0]+ddx,this.xyz[2]+ddz); var delta = collision_b(this.map,q0,ddx,ddz,this.r,1); ddx = delta[0]; ddz = delta[1]; node.xyz[0] += ddx; node.xyz[2] += ddz; position_xyz[0] += ddx; position_xyz[2] += ddz; aim_xyz[0] += ddx; aim_xyz[2] += ddz; } if(pad.back_move_isHold()){ var radian = ((theta_xz%360) / 360) * 2 * PI; var ddx = move_walk * Math.cos(radian); var ddz = move_walk * Math.sin(radian); var q0 = new Array(this.xyz[0]+ddx,this.xyz[2]+ddz); var delta = collision_b(this.map,q0,ddx,ddz,this.r,-1); ddx = delta[0]; ddz = delta[1]; node.xyz[0] -= ddx; node.xyz[2] -= ddz; position_xyz[0] -= ddx; position_xyz[2] -= ddz; aim_xyz[0] -= ddx; aim_xyz[2] -= ddz; } if(pad.space_isHold()){ node.xyz[1] -= 1.5; position_xyz[1] -= 1.5; aim_xyz[1] -= 1.5; } if(node.xyz[1] < (-1*this.r)){ if(this.dy < 3.5){ this.dy += 0.1; } if(node.xyz[1]+this.dy>(-1*this.r)){ node.xyz[1] = (-1*this.r); position_xyz[1] = (-1*this.r); aim_xyz[1] = (-1*this.r); }else{ node.xyz[1] += this.dy; position_xyz[1] += this.dy; aim_xyz[1] += this.dy; } }else{ this.dy = 0; } } main_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 dy = node.parents.xyz[1] - position_xyz[1]; var dz = node.parents.xyz[2] - position_xyz[2]; var d = 7; var radian_xz = ((theta_xz%360) / 360) * 2 * PI; var radian_yz = ((theta_yz%360) / 360) * 2 * PI; var x_rate_xz = Math.sin(radian_xz); var z_rate_xz = Math.cos(radian_xz); var x_rate_yz = Math.cos(radian_yz); var y_rate_yz = Math.cos(radian_yz); var z_rate_yz = Math.sin(radian_yz); if(pad.left_isHold()){ theta_xz += move_eye; var mv_x = d * Math.cos(radian_xz); var mv_y = d * Math.sin(radian_yz); var mv_z = d * Math.sin(radian_xz); position_xyz[0] = node.parents.xyz[0] - mv_x; position_xyz[1] = node.parents.xyz[1] - mv_y; position_xyz[2] = node.parents.xyz[2] - (mv_z*Math.cos(radian_yz)); aim_xyz[0] = position_xyz[0]; aim_xyz[1] = position_xyz[1]; aim_xyz[2] = position_xyz[2] + 1; node.angle[0] -= move_eye; cameraAngle_xyz[0] -= move_eye; angleRate_x[0] = x_rate_xz; angleRate_x[2] = z_rate_xz; cameraAxis[0] = 0; cameraAxis[1] = 1; cameraAxis[0] = 0; } if(pad.right_isHold()){ theta_xz -= move_eye; var mv_x = d * Math.cos(radian_xz); var mv_y = d * Math.sin(radian_yz); var mv_z = d * Math.sin(radian_xz); position_xyz[0] = node.parents.xyz[0] - mv_x; position_xyz[1] = node.parents.xyz[1] - mv_y; position_xyz[2] = node.parents.xyz[2] - (mv_z*Math.cos(radian_yz)); aim_xyz[0] = position_xyz[0]; aim_xyz[1] = position_xyz[1]; aim_xyz[2] = position_xyz[2] + 1; node.angle[0] += move_eye; cameraAngle_xyz[0] += move_eye; angleRate_x[0] = x_rate_xz; angleRate_x[2] = z_rate_xz; cameraAxis[0] = 0; cameraAxis[1] = 1; cameraAxis[2] = 0; } }