Mercurial > hg > Members > e085722 > map
diff 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 diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/resources/_combat_plane.js Mon Feb 14 17:06:56 2011 +0900 @@ -0,0 +1,195 @@ +createPlane = function(sgroot, w, h){ + var combat_plane = new sgroot.createSceneGraph3() + combat_plane.xyz[0] = 0 + combat_plane.xyz[1] = -5 + combat_plane.xyz[2] = 0 + position_xyz[0] = combat_plane.xyz[0] + position_xyz[1] = combat_plane.xyz[1] + position_xyz[2] = combat_plane.xyz[2] - 50 + 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.05 + combat_plane.set_move_collision(plane_move, no_collision_idle) + var main = new sgroot.createSceneGraph1("Obj") + main.angle[0] = 180 + main.angle[1] = 90 + main.set_move_collision(main_move, no_collision_idle) + combat_plane.addChild(main) + return combat_plane +} + +rotate_parts = function(node, sgroot, w, h){ + node.angle[0] += 1 +} + +plane_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 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; + 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_xz+90)%360) / 360) * 2 * PI; + 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_xz%360) / 360) * 2 * PI; + 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_xz%360) / 360) * 2 * PI; + 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.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; + } +} + + + +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 = 50 + 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; + } + + + if(pad.up_isHold() && theta_yz > -90){ + theta_yz -= move_eye; + var mv_x = d * Math.cos(radian_xz); + var mv_y = d * Math.sin(radian_yz); + var mv_z = d * Math.cos(radian_yz); + + 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.sin(radian_xz)); + aim_xyz[0] = position_xyz[0]; + aim_xyz[1] = position_xyz[1]; + aim_xyz[2] = position_xyz[2] + 1; + + + node.angle[1] -= move_eye + cameraAngle_xyz[0] -= move_eye; + angleRate_y[1] = y_rate_yz + angleRate_y[2] = z_rate_yz + cameraAxis[0] = 1; + cameraAxis[1] = 0; + cameraAxis[2] = 0; + } + + if(pad.down_isHold() && theta_yz < 90){ + theta_yz += move_eye; + var mv_x = d * Math.cos(radian_xz); + var mv_y = d * Math.sin(radian_yz); + var mv_z = d * Math.cos(radian_yz); + + 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.sin(radian_xz)); + aim_xyz[0] = position_xyz[0]; + aim_xyz[1] = position_xyz[1]; + aim_xyz[2] = position_xyz[2] + 1; + + + node.angle[1] += move_eye + cameraAngle_xyz[0] += move_eye; + angleRate_y[1] = y_rate_yz + angleRate_y[2] = z_rate_yz + cameraAxis[0] = 1; + cameraAxis[1] = 0; + cameraAxis[2] = 0; + } +} + + + + + + +