前提・実現したいこと
Processingで金魚を銛で刺してポイントを稼ぐゲームを作ったのですが、金魚の動きや銛の描画がカクつきます。
どのように改善すると良いでしょうか?
該当のソースコード
Processing
1PVector position; 2PVector velocitiy; 3PImage img,img_kin,img_kin2,img_kin3,img_mori; 4 5int numFrames = 14; 6PImage [] img_ef = new PImage[numFrames]; 7 8 9 10float x=random(500),y=random(500); 11float x2=random(500),y2=random(500); 12float x3=random(500),y3=random(500); 13int vx1 = 40,vy1 = 60,vx2 = 10,vy2 = 20,vx3 = 30,vy3 = 15; 14int score = 0; 15 16 17void setup(){ 18 size(1000,1000); 19 img = loadImage("puru.jpg"); 20 background(#8B8383); 21 image(img,-600,-600,width+1200,height+1200); 22 23 for(int i=0;i<14;i++){ 24 img_ef[i] = loadImage("eff"+i+".png"); 25 26 } 27 28 29} 30float x_k,y_k; 31 32 33void draw(){ 34 35 image(img,-600,-600,width+1200,height+1200); 36 noStroke(); 37 kinGYO(); 38 kinGYO2(); 39 kinGYO3(); 40 mori(); 41 text("score : "+score,450,800); 42} 43 44void mori(){ 45 img_mori = loadImage("mori.png"); 46 image(img_mori,mouseX,mouseY,100,100); 47} 48 49void kinGYO(){ 50 img_kin = loadImage("kingyo.png"); 51 52 image(img_kin,x,y,100,100); 53 if(x<=-1){ 54 for(int i=0;i<=10;i++){ 55 x+=10; 56 } 57 } 58 59 x +=vx1; 60 y +=vy1; 61 62 if((x<1)||(x>width-50)){ 63 vx1=-vx1; 64 } 65 if((y<0)||(y>height-500)){ 66 vy1=-vy1; 67 } 68 if(x>=1000){ 69 x = random(500); 70 } 71} 72 73void kinGYO2(){ 74 img_kin2 = loadImage("kingyo2.png"); 75 76 77 image(img_kin2,x2,y2,100,100); 78 79 80 x2 -=vx2; 81 //y2 +=vy2; 82 83 if(x2<0){ 84 x2 = width+100; 85 y2 = random(500); 86 } 87 88 89 90} 91 92void kinGYO3(){ 93 img_kin3 = loadImage("kingyo3.png"); 94 95 96 image(img_kin3,x3,y3,100,100); 97 98 99 x3 +=vx3; 100 101 if(x3>width-50){ 102 x3=-100; 103 y3=random(500); 104 } 105 106 107} 108 109void tamauti(){ 110 position.add(velocitiy); 111 if (mousePressed) { 112 velocitiy.x = -mouseX/10; 113 velocitiy.y= -mouseY/10; 114 } 115 116 if(position.x<0){ 117 position.x=width; 118 position.y=height; 119 velocitiy.x=0; 120 velocitiy.y=0; 121} 122 123 if(position.y<0){ 124 position.y=height; 125 position.x=width; 126 velocitiy.x=0; 127 velocitiy.y=0; 128} 129 130 ellipse(position.x, position.y,40,40);//新しい位置にボールを描く 131 132} 133 134void atattara(){ 135 if((position.x>=x-50)&&(position.x<=x+250)&&(position.y>=y-50)&&(position.y<=y+150)){ 136 x=x-800; 137 } 138} 139 140void mousePressed() { 141 if((mouseX >= x-50)&&(mouseX <=x+150)&&(mouseY >= y-50)&&(mouseY <= y+150)){ 142 ef(x,y); 143 x = -100; 144 score += 7; 145 146 } 147 if((mouseX >= x2-50)&&(mouseX <=x2+150)&&(mouseY >= y2-50)&&(mouseY <= y2+150)){ 148 ef(x2,y2); 149 x2 = width+100; 150 y2 = random(500); 151 score += 2; 152 153 } 154 if((mouseX >= x3-50)&&(mouseX <=x3+150)&&(mouseY >= y3-50)&&(mouseY <= y3+150)){ 155 ef(x3,y3); 156 x3 = -100; 157 y3 = random(500); 158 score += 3; 159 160 } 161} 162 163void ef(float x, float y){ 164 int frame = frameCount % numFrames; //現在のフレームをアニメーションのフレーム数で割った余りを代入 165 image(img_ef[frame], x, y); //画像を表示 166}
補足情報(FW/ツールのバージョンなど)
Processing 3.5.3
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/07/28 00:36