rswait = 0; function Pad() { this.up=0; this.down=0; this.right=0; this.left=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 makePlayer( object ) { this.x = 100; this.y = 100; this.z = 10; this.dx = 0; this.dy = 0; this.scale = 1.0; this.muteki = 120; this.bf = true; this.zanki = 3; this.point = 0; this.ccount = 0; this.idle = object["player_idle"]; this.rightmove = object["player_rightmove"]; this.leftmove = object["player_leftmove"]; this.turntoright = object["player_turntoright"]; this.turntoleft = object["player_turntoleft"]; this.image = this.idle; this.w = this.image.w; this.h = this.image.h; return this; } function drawPlayer(ctx, jiki) { // setup VBOs ctx.enableVertexAttribArray(0); ctx.enableVertexAttribArray(1); ctx.enableVertexAttribArray(2); ctx.bindBuffer(ctx.ARRAY_BUFFER, jiki.image.vertexObject); ctx.vertexAttribPointer(2, 3, ctx.FLOAT, false, 0, 0); ctx.bindBuffer(ctx.ARRAY_BUFFER, jiki.image.normalObject); ctx.vertexAttribPointer(0, 3, ctx.FLOAT, false, 0, 0); ctx.bindBuffer(ctx.ARRAY_BUFFER, jiki.image.texCoordObject); ctx.vertexAttribPointer(1, 2, ctx.FLOAT, false, 0, 0); ctx.bindBuffer(ctx.ELEMENT_ARRAY_BUFFER, jiki.image.indexObject); // generate the model-view matrix var mvMatrix = new CanvasMatrix4(); mvMatrix.scale(jiki.scale, jiki.scale, jiki.scale); // mvMatrix.rotate(180, 1,0,0); mvMatrix.translate(jiki.x, jiki.y, jiki.z); // 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, jiki.image.texture); ctx.drawElements(ctx.TRIANGLES, jiki.image.numIndices, ctx.UNSIGNED_SHORT, 0); } function Player(ctx, jiki, pad, ortho ) { /*自機無敵計算*/ /* if(jiki.muteki > 0 && jiki.bf == true){ cout++; drawPlayer(ctx, jiki); jiki.muteki--; } */ 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); /*コントローラー上限値----------------------*/ jiki.x += pad.right; jiki.x -= pad.left; jiki.y -= pad.up; jiki.y += pad.down; /*自機の動き--------------------------------*/ jiki.x = Math.min(jiki.x, ortho.right - jiki.w/2); jiki.x = Math.max(jiki.x, ortho.left + jiki.w/2); jiki.y = Math.min(jiki.y, ortho.bottom - jiki.w/2); jiki.y = Math.max(jiki.y, ortho.top + jiki.w/2); 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 ) jiki.image = jiki.idle; if( pad.state == 1 ) { if( pad.right > 0 ) jiki.image = jiki.turntoright; if( pad.left > 0 ) jiki.image = jiki.turntoleft; } if( pad.state == 2 ) { if( pad.right > 0 ) jiki.image = jiki.rightmove; if( pad.left > 0 ) jiki.image = jiki.leftmove; } //分かりやすいように横幅と縦幅はjiki.w,jiki.hに直でいれておく jiki.w = jiki.image.w; jiki.h = jiki.image.h; // if(jiki.muteki < 5) alert("jiki.muteki "+jiki.muteki); if(jiki.bf == true) drawPlayer(ctx, jiki);//自機の描画(一先ずここでしておく) if(jiki.muteki > 0) jiki.muteki--; //玉レベル1登録 if ((pad.k4 % 3 == 1) && (pad.k3 % 3 == 0)){ pad.k4 = 1; audioShoot && audioShoot.play();//このaudioは試験使用中.global宣言されてる奴(htmlファイルのなかで) tama_lv1_end++; // if(tama_lv1_end > 19) tama_lv1_end = 0; var i = tama_lv1_end; // if(tama_lv1_end > 50) alert(tama_lv1_end); var tama = new Tama1(); tama.x = jiki.x; tama.y = jiki.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) { tama_lv1[i].x -= 5;//右に5ずらす PutSpriteBullet(ctx, tama_lv1[i], bullets[1]); tama_lv1[i].x += 5;//ずらした分戻す } if (tama_lv1[i].l == 1) { tama_lv1[i].x += 5;//左に5ずらす PutSpriteBullet(ctx, tama_lv1[i], bullets[1]); tama_lv1[i].x -= 5;//ずらし分を戻す } if (tama_lv1[i].y < ortho.top) { 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--; i--; } } } } 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(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); }