diff webGL/dandy/resources/Player.js @ 6:881478004f18

update Bullet.js
author NOBUYASU Oshiro
date Mon, 21 Jun 2010 17:37:26 +0900
parents 7f615f5f5220
children 4343c1feedb5
line wrap: on
line diff
--- a/webGL/dandy/resources/Player.js	Mon Jun 14 15:17:48 2010 +0900
+++ b/webGL/dandy/resources/Player.js	Mon Jun 21 17:37:26 2010 +0900
@@ -1,15 +1,31 @@
 function Pad()
 {
+    this.up=0;
+    this.down=0;
     this.right=0;
     this.left=0;
-    this.up=0;
-    this.down=0;
     this.count=0;
     this.state=0;
+    this.k0=0;
+    this.k1=0;
+    this.k2=0;
+    this.k3=0;
+    this.k4=0;
+    this.r2=0;
+    this.r1=0;
+    this.r2=0;
+    this.l1=0;
+    this.l2=0;
+    this.l3=0;
+    this.se=0;
+    this.st=0;
+
+    //勝手につけた
+    this.quit=0;
     return this;
 }
 
-function Player( object )
+function makePlayer( object )
 {
     this.x = 0;
     this.y = 0;
@@ -27,36 +43,40 @@
 function movePlayer( player, pad )
 {
 
-    pad.right = Math.min(pad.right, 3);
-    pad.left = Math.min(pad.left, 3);
-    pad.up = Math.min(pad.up, 4);
-    pad.down = Math.min(pad.down, 4);
+    pad.right = Math.min(pad.right, 0.7);
+    pad.left = Math.min(pad.left, 0.7);
+    pad.up = Math.min(pad.up, 0.7);
+    pad.down = Math.min(pad.down, 0.7);
 
-    player.x += pad.right;
-    player.x -= pad.left;
+    player.x -= pad.right;
+    player.x += pad.left;
     player.y += pad.up;
     player.y -= pad.down;
 
+    player.x = Math.min(player.x, 100);
+    player.x = Math.max(player.x, -100);
+    player.y = Math.min(player.y, 70);
+    player.y = Math.max(player.y, -70);    
+
     if( pad.count == 1) pad.state=0;
     if( pad.count > 0) pad.state=1;
     if( pad.count > 10 ) pad.state=2;
 
     if( pad.state == 0 ) player.image  = player.idle;
     if( pad.state == 1 ) {
-	if( pad.right > 0 ) player.image = player.turntoleft;
-        if( pad.left > 0 ) player.image  = player.turntoright;
+	if( pad.right > 0 ) player.image = player.turntoright;
+        if( pad.left > 0 ) player.image  = player.turntoleft;
     }
     if( pad.state == 2 ) {
-	if( pad.right > 0 ) player.image = player.leftmove;
-        if( pad.left > 0 ) player.image  = player.rightmove;
+	if( pad.right > 0 ) player.image = player.rightmove;
+        if( pad.left > 0 ) player.image  = player.leftmove;
     }
 
-    if ( pad.right > 0) pad.right -= 1.5;
-    if ( pad.left > 0) pad.left -= 1.5;
-    if ( pad.up > 0) pad.up -= 2;
-    if ( pad.down > 0) pad.down -= 2;    
+
+
 
 }
+
 function drawPlayer(ctx, player, scale)
 {
     // setup VBOs
@@ -95,3 +115,123 @@
     ctx.bindTexture(ctx.TEXTURE_2D, player.image.texture);
     ctx.drawElements(ctx.TRIANGLES, player.image.numIndices, ctx.UNSIGNED_SHORT, 0);
 }
+
+
+function Player(ctx, player, pad )
+{
+    pad.right = Math.min(pad.right, 0.7);
+    pad.left = Math.min(pad.left, 0.7);
+    pad.up = Math.min(pad.up, 0.7);
+    pad.down = Math.min(pad.down, 0.7);
+
+    player.x -= pad.right;
+    player.x += pad.left;
+    player.y += pad.up;
+    player.y -= pad.down;
+
+    player.x = Math.min(player.x, 100);
+    player.x = Math.max(player.x, -100);
+    player.y = Math.min(player.y, 70);
+    player.y = Math.max(player.y, -70);    
+
+    if( pad.count == 1) pad.state=0;
+    if( pad.count > 0) pad.state=1;
+    if( pad.count > 10 ) pad.state=2;
+
+    if( pad.state == 0 ) player.image  = player.idle;
+    if( pad.state == 1 ) {
+	if( pad.right > 0 ) player.image = player.turntoright;
+        if( pad.left > 0 ) player.image  = player.turntoleft;
+    }
+    if( pad.state == 2 ) {
+	if( pad.right > 0 ) player.image = player.rightmove;
+        if( pad.left > 0 ) player.image  = player.leftmove;
+    }
+
+
+    drawPlayer(ctx, player, 1.2);//自機の描画(一先ずここでしておく)
+
+
+    //玉レベル1登録
+    if ((pad.k4 % 3 == 1) && (pad.k3 % 3 == 0)){
+ 	pad.k4 = 1;
+
+	tama_lv1_end++;
+
+	//	if(tama_lv1_end > 19) tama_lv1_end = 0;
+	var i = tama_lv1_end;
+	
+
+	var tama = new Tama1();
+	tama.x = player.x;
+	tama.y = player.y;
+	tama.r = 1;
+	tama.l = 1;
+	tama_lv1[i] = tama;
+    }
+
+    //玉レベル1表示
+    for (i = 0; i < tama_lv1_end + 1; i++) 
+	{
+	    tama_lv1[i].y += 10;
+
+	    if (tama_lv1[i].r == 1) {
+		PutSpriteBullet(ctx, tama_lv1[i], bullets[1]);
+	    }
+	    if (tama_lv1[i].y < -70) {
+		if(tama_lv1_end == i){
+		    tama_lv1_end--;
+		    break;
+		}
+		if(tama_lv1_end > i){
+		    tama_lv1[i] = tama_lv1[tama_lv1_end];
+		    tama_lv1_end--;
+		    break;
+		}
+
+	    }
+
+	}
+
+}
+
+
+function PutSpriteBullet( ctx, tama, glObj)
+{
+
+    // setup VBOs
+    ctx.enableVertexAttribArray(0);
+    ctx.enableVertexAttribArray(1);
+    ctx.enableVertexAttribArray(2);
+				
+    ctx.bindBuffer(ctx.ARRAY_BUFFER, glObj.vertexObject);
+    ctx.vertexAttribPointer(2, 3, ctx.FLOAT, false, 0, 0);
+    ctx.bindBuffer(ctx.ARRAY_BUFFER, glObj.normalObject);
+    ctx.vertexAttribPointer(0, 3, ctx.FLOAT, false, 0, 0);
+    
+    ctx.bindBuffer(ctx.ARRAY_BUFFER, glObj.texCoordObject);
+    ctx.vertexAttribPointer(1, 2, ctx.FLOAT, false, 0, 0);
+				
+    ctx.bindBuffer(ctx.ELEMENT_ARRAY_BUFFER, glObj.indexObject);
+
+    // generate the model-view matrix
+    var mvMatrix = new CanvasMatrix4();
+    mvMatrix.scale(1, 1, 1);
+    mvMatrix.translate(0,0,0);
+    mvMatrix.rotate(180, 0,0,1);
+    mvMatrix.translate(tama.x,tama.y,10);
+    
+    // construct the normal matrix from the model-view matrix
+    var normalMatrix = new CanvasMatrix4(mvMatrix);
+    normalMatrix.invert();
+    normalMatrix.transpose();
+    ctx.uniformMatrix4fv(ctx.getUniformLocation(ctx.program, "u_normalMatrix"), false, normalMatrix.getAsWebGLFloatArray());
+    
+    // construct the model-view * projection matrix
+    var mvpMatrix = new CanvasMatrix4(mvMatrix);
+    mvpMatrix.multRight(ctx.perspectiveMatrix);
+    ctx.uniformMatrix4fv(ctx.getUniformLocation(ctx.program, "u_modelViewProjMatrix"), false, mvpMatrix.getAsWebGLFloatArray());
+    
+    ctx.bindTexture(ctx.TEXTURE_2D, glObj.texture);
+    ctx.drawElements(ctx.TRIANGLES, glObj.numIndices, ctx.UNSIGNED_SHORT, 0);
+}