comparison 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
comparison
equal deleted inserted replaced
-1:000000000000 0:0b8d8ce99f46
1 createHuman = function(sgroot, w, h){
2 var walk_man = new sgroot.createSceneGraph3();
3 walk_man.xyz[0] = 100;
4 walk_man.xyz[1] = -5;
5 walk_man.xyz[2] = 100;
6 position_xyz[0] = walk_man.xyz[0];
7 position_xyz[1] = walk_man.xyz[1] - 10;
8 position_xyz[2] = walk_man.xyz[2] - 50;
9 aim_xyz[0] = position_xyz[0];
10 aim_xyz[1] = position_xyz[1];
11 aim_xyz[2] = position_xyz[2] + 1;
12 walk_man.scale = 0.01;
13 //walk_man.set_move_collision(body_move, body_collision)
14 walk_man.set_move_collision(body_move, no_collision_idle);
15
16
17 var head = new sgroot.createSceneGraph1("head");
18 head.angle[0] = 90;
19 head.angle[1] = 90;
20 head.xyz[0] = -sgroot.sg_src["head"].model_x * 100;
21 head.xyz[1] = -sgroot.sg_src["head"].model_y * 100;
22 head.xyz[2] = -sgroot.sg_src["head"].model_z * 100;
23 head.set_move_collision(head_move, no_collision_idle);
24
25
26 var body = new sgroot.createSceneGraph1("body");
27 body.xyz[0] = -sgroot.sg_src["body"].model_x * 100;
28 body.xyz[1] = -sgroot.sg_src["body"].model_y * 100;
29 body.xyz[2] = -sgroot.sg_src["body"].model_z * 100 + 200;
30 body.set_move_collision(no_move_idle, no_collision_idle);
31
32
33 var joint_rh = new sgroot.createSceneGraph1("Kata");
34 /*joint_rh.xyz[0] = -sgroot.sg_src["green"].model_x * 7
35 joint_rh.xyz[1] =- sgroot.sg_src["green"].model_y * 7
36 joint_rh.xyz[2] = -sgroot.sg_src["green"].model_z * 7
37 */
38
39 joint_rh.scale = 7;
40 joint_rh.set_move_collision(joint_rh_move, no_collision_idle);
41
42
43 var right_hand = new sgroot.createSceneGraph1("right_hand");
44 right_hand.xyz[0] = -sgroot.sg_src["right_hand"].model_x * (100/7);
45 right_hand.xyz[1] = -sgroot.sg_src["right_hand"].model_y * (100/7);
46 right_hand.xyz[2] = -sgroot.sg_src["right_hand"].model_z * (100/7) - (sgroot.sg_src["right_hand"].w / 2);
47 right_hand.scale = 1/7;
48 right_hand.set_move_collision(right_hand_move, no_collision_idle);
49
50
51 var joint_lh = new sgroot.createSceneGraph1("Kata");
52 joint_lh.scale = 7;
53 joint_lh.set_move_collision(joint_lh_move, no_collision_idle);
54
55
56 var left_hand = new sgroot.createSceneGraph1("left_hand");
57 left_hand.xyz[0] = -sgroot.sg_src["left_hand"].model_x * (100/7);
58 left_hand.xyz[1] = -sgroot.sg_src["left_hand"].model_y * (100/7);
59 left_hand.xyz[2] = -sgroot.sg_src["left_hand"].model_z * (100/7) - (sgroot.sg_src["left_hand"].w / 2);
60 left_hand.scale = 1/7;
61 left_hand.set_move_collision(left_hand_move, no_collision_idle);
62
63
64 var joint_rl = new sgroot.createSceneGraph1("Kata");
65 joint_rl.scale = 7;
66 joint_rl.set_move_collision(joint_rl_move, no_collision_idle);
67
68 var right_leg = new sgroot.createSceneGraph1("left_leg");
69 right_leg.xyz[0] = -sgroot.sg_src["left_leg"].model_x * (100/7);
70 right_leg.xyz[1] = -sgroot.sg_src["left_leg"].model_y * (100/7);
71 right_leg.xyz[2] = -sgroot.sg_src["left_leg"].model_z * (100/7) - (sgroot.sg_src["left_leg"].w / 10);
72 right_leg.scale = 1/7;
73 right_leg.set_move_collision(right_leg_move, no_collision_idle);
74
75
76 var joint_ll = new sgroot.createSceneGraph1("Kata");
77 joint_ll.scale = 7;
78 joint_ll.set_move_collision(joint_ll_move, no_collision_idle);
79
80
81 var left_leg = new sgroot.createSceneGraph1("left_leg");
82 left_leg.xyz[0] = -sgroot.sg_src["left_leg"].model_x * (100/7);
83 left_leg.xyz[1] = -sgroot.sg_src["left_leg"].model_y * (100/7);
84 left_leg.xyz[2] = -sgroot.sg_src["left_leg"].model_z * (100/7) - (sgroot.sg_src["left_leg"].w / 10);
85 left_leg.scale = 1/7;
86 left_leg.set_move_collision(left_leg_move, no_collision_idle);
87
88
89
90 walk_man.addChild(head);
91 head.addChild(body);
92
93 body.addChild(joint_rh);
94 joint_rh.addChild(right_hand);
95
96 body.addChild(joint_lh);
97 joint_lh.addChild(left_hand);
98
99 body.addChild(joint_rl);
100 joint_rl.addChild(right_leg);
101
102 body.addChild(joint_ll);
103 joint_ll.addChild(left_leg);
104
105
106
107 return walk_man;
108
109 }
110
111
112 roteta_body = function(node, sgroot, w, h){
113 node.angle[2] += 1;
114 }
115
116 head_move = function(node, sgroot, w, h){
117 var move_eye = 1.0;
118 var PI = 3.14;
119 var pad = new sgroot.getController();
120 var dx = node.parents.xyz[0] - position_xyz[0];
121 var dz = node.parents.xyz[2] - position_xyz[2];
122 var d = Math.sqrt(Math.pow(dx,2) + Math.pow(dz,2));
123
124
125 if(pad.left_isHold()){
126 cameraAngle_xyz[0] -= move_eye;
127 theta += move_eye;
128 var radian = ((theta%360) / 360) * 2 * PI;
129 var x_rate = Math.sin(radian);
130 var z_rate = Math.cos(radian);
131 var mv_x = d * Math.cos(radian);
132 var mv_z = d * Math.sin(radian);
133
134 position_xyz[0] = node.parents.xyz[0] - mv_x;
135 position_xyz[2] = node.parents.xyz[2] - mv_z;
136 aim_xyz[0] = position_xyz[0] ;
137 aim_xyz[2] = position_xyz[2] + 1;
138 node.angle[0] -= move_eye;
139 angleRate_xyz[0] = x_rate;
140 angleRate_xyz[2] = z_rate;
141 }
142
143
144 if(pad.right_isHold()){
145 cameraAngle_xyz[0] += move_eye;
146 theta -= move_eye;
147 var radian = ((theta%360) / 360) * 2 * PI;
148 var x_rate = Math.sin(radian);
149 var z_rate = Math.cos(radian);
150 var mv_x = d * Math.cos(radian)
151 var mv_z = d * Math.sin(radian);
152
153 position_xyz[0] = node.parents.xyz[0] - mv_x;
154 position_xyz[2] = node.parents.xyz[2] - mv_z;
155 aim_xyz[0] = position_xyz[0];
156 aim_xyz[2] = position_xyz[2] + 1;
157 node.angle[0] += move_eye;
158 angleRate_xyz[0] = x_rate;
159 angleRate_xyz[2] = z_rate;
160 }
161
162
163 if(pad.up_isHold() && cameraAngle_xyz[1] > -90){
164 //node.angle[2] -= move_eye
165 cameraAngle_xyz[1] -= move_eye;
166 }
167
168 if(pad.down_isHold() && cameraAngle_xyz[1] < 90){
169 //node.angle[2] += move_eye
170 cameraAngle_xyz[1] += move_eye;
171 }
172
173 }
174
175
176
177 body_move = function(node, sgroot, w, h){
178 var move_eye = 1.0;
179 var move_walk = 1.0;
180 var PI = 3.14;
181 var pad = new sgroot.getController();
182 var dx = position_xyz[0] - aim_xyz[0];
183 var dz = position_xyz[2] - aim_xyz[2];
184 var d = Math.sqrt(Math.pow(dx,2) + Math.pow(dz,2));
185
186 //if(node.xyz[0] >= 0 && node.xyz[2] >= 0){
187 if(pad.left_move_isHold()){
188 var radian = (((theta+90)%360) / 360) * 2 * PI;
189
190 if(!pad.zoom_in_isHold()){
191 node.xyz[0] += move_walk * Math.cos(radian);
192 node.xyz[2] += move_walk * Math.sin(radian);
193 }
194
195 aim_xyz[0] += move_walk * Math.cos(radian);
196 aim_xyz[2] += move_walk * Math.sin(radian);
197 position_xyz[0] += move_walk * Math.cos(radian);
198 position_xyz[2] += move_walk * Math.sin(radian);
199 }
200
201 if(pad.right_move_isHold()){
202 var radian = (((theta+90)%360) / 360) * 2 * PI;
203
204 if(!pad.zoom_in_isHold()){
205 node.xyz[0] -= move_walk * Math.cos(radian);
206 node.xyz[2] -= move_walk * Math.sin(radian);
207 }
208
209 aim_xyz[0] -= move_walk * Math.cos(radian);
210 aim_xyz[2] -= move_walk * Math.sin(radian);
211 position_xyz[0] -= move_walk * Math.cos(radian);
212 position_xyz[2] -= move_walk * Math.sin(radian);
213 }
214
215 if(pad.front_move_isHold()){
216 var radian = ((theta%360) / 360) * 2 * PI;
217
218 if(!pad.zoom_in_isHold()){
219 node.xyz[0] += move_walk * Math.cos(radian);
220 node.xyz[2] += move_walk * Math.sin(radian);
221 }
222
223 position_xyz[0] += move_walk * Math.cos(radian);
224 position_xyz[2] += move_walk * Math.sin(radian);
225 aim_xyz[0] += move_walk * Math.cos(radian);
226 aim_xyz[2] += move_walk * Math.sin(radian);
227
228 move_length++;
229 }
230
231 if(pad.back_move_isHold()){
232 var radian = ((theta%360) / 360) * 2 * PI;
233
234 if(!pad.zoom_in_isHold()){
235 node.xyz[0] -= move_walk * Math.cos(radian);
236 node.xyz[2] -= move_walk * Math.sin(radian);
237 }
238
239 position_xyz[0] -= move_walk * Math.cos(radian);
240 position_xyz[2] -= move_walk * Math.sin(radian);
241 aim_xyz[0] -= move_walk * Math.cos(radian);
242 aim_xyz[2] -= move_walk * Math.sin(radian);
243
244 move_length--;
245 }
246 //}
247
248 if(pad.start_isHold()){
249 var bullet_speed = 2;
250 var radian_xz = ((theta%360)/360) * 2 * PI;
251 var radian_yz = ((cameraAngle_xyz[1]%90)/90) * (PI / 2);
252 var bullet = new sgroot.createSceneGraph1("yellow");
253 bullet.xyz[0] = position_xyz[0] + Math.cos(radian_xz) * 200;
254 bullet.xyz[1] = position_xyz[1] + Math.sin(radian_yz) * 200;
255 bullet.xyz[2] = position_xyz[2] + Math.sin(radian_xz) * 200;
256 bullet.dx = Math.cos(radian_xz) * bullet_speed;
257 bullet.dy = Math.sin(radian_yz) * bullet_speed;
258 bullet.dz = Math.sin(radian_xz) * bullet_speed;
259 bullet.scale = 0.3;
260 bullet.set_move_collision(bullet_move, no_collision_idle);
261 }
262
263
264 if(pad.space_isHold()){
265 node.xyz[1] -= 0.8;
266 position_xyz[1] -= 0.8;
267 aim_xyz[1] -= 0.8;
268 }else if(pad.space_isRelease() && node.xyz[1] < -5){
269 node.xyz[1] += 0.4;
270 position_xyz[1] += 0.4;
271 aim_xyz[1] += 0.4;
272 }
273 }
274
275
276
277 body_collision = function(node, sgroot, w, h){
278 var dx = node.xyz[0] - position_xyz[0];
279 var dz = node.xyz[2] - position_xyz[2];
280 var d = Math.sqrt(Math.pow(dx,2) + Math.pow(dz,2));
281 var PI = 3.14;
282 var radian = ((theta%360) / 360) * 2 * PI;
283 if(node.xyz[0] < 0){
284 node.xyz[0] = 0;
285 position_xyz[0] = -d * Math.cos(radian);
286 aim_xyz[0] = position_xyz[0];
287 }
288
289 if(node.xyz[0] > 350){
290 node.xyz[0] = 350;
291 position_xyz[0] = 350 + (-d * Math.cos(radian));
292 aim_xyz[0] = position_xyz[0];
293 }
294
295
296 if(node.xyz[2] < 0){
297 node.xyz[2] = 0;
298 position_xyz[2] = -d * Math.sin(radian);
299 aim_xyz[2] = position_xyz[2] + 1;
300 }
301
302 if(node.xyz[2] > 350){
303 node.xyz[2] = 350;
304 position_xyz[2] = 350 + (-d * Math.sin(radian));
305 aim_xyz[2] = position_xyz[2] + 1;
306 }
307 }
308
309
310 right_hand_move = function(node, sgroot, w, h){
311 var PI = 3.14;
312 var radian = (((move_length*5)%360) / 360) * 2 * PI;
313 var range = 90;
314 node.angle[0] = Math.sin(radian) * range;
315 }
316
317
318 left_hand_move = function(node, sgroot, w, h){
319 var PI = 3.14;
320 var radian = (((move_length*5)%360) / 360) * 2 * PI;
321 var range = 90;
322
323 node.angle[0] = Math.sin(-radian) * range;
324 }
325
326
327 right_leg_move = function(node, sgroot, w, h){
328 var PI = 3.14;
329 var radian = (((move_length*5)%360) / 360) * 2 * PI;
330 var range = 90;
331
332 node.angle[0] = Math.sin(-radian) * range;
333 }
334
335
336 left_leg_move = function(node, sgroot, w, h){
337 var PI = 3.14;
338 var radian = (((move_length*5)%360) / 360) * 2 * PI;
339 var range = 90;
340
341 node.angle[0] = Math.sin(radian) * range;
342 }
343
344
345 joint_rh_move = function(node, sgroot, w, h){
346 node.angle[1] = 45;
347 node.xyz[0] = 0;
348 node.xyz[1] = 300;
349 node.xyz[2] = 100;
350 }
351
352 joint_lh_move = function(node, sgroot, w, h){
353 node.angle[1] = -45;
354 node.xyz[0] = 0;
355 node.xyz[1] = -300;
356 node.xyz[2] = 100;
357 }
358
359
360 joint_rl_move = function(node, sgroot, w, h){
361 node.xyz[0] = 0;
362 node.xyz[1] = -60;
363 node.xyz[2] = 0;
364 }
365
366
367
368
369 joint_ll_move = function(node, sgroot, w, h){
370 node.xyz[0] = 0;
371 node.xyz[1] = 60;
372 node.xyz[2] = 0;
373 }
374