Mercurial > hg > Members > e085711
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); +}