2021年12月27日 星期一

我與天文社與漢堡排_week14

211227 week14

                                                                                                                                          💛🔔

期末作業的中場

3D桌球彈跳

👉程式碼
void setup(){
  size(400,400,P3D);
}
float x=200,y=200,z=-100;
float vx=0,vy=0;
void draw(){
  background(255);
  pushMatrix();
    translate(x,y);
    lights();
    noStroke();
    sphere(30);
   popMatrix();
   x+=vx;
   y+=vy;
   vy+=0.98;
   if(y>400){
     vy=-vy;
  }
}

球拍打球

👉程式碼
void setup(){
  size(400,400,P3D);
}
float boardX,boardY;
float x=200,y=200,z;
float vx=0,vy=0;
void draw(){
  background(255);
  pushMatrix();
    translate(x,y);
    lights();noStroke();sphere(30);
  popMatrix();
  boardX=mouseX; boardY=mouseY;
  pushMatrix();
    translate(boardX,boardY);
    stroke(0);line(-50,0,+50,0);
  popMatrix();
  if(y<boardY && y+vy>boardY && boardX-50<x && x<boardX+50){
    stroke(255,0,0);
    vy=-vy;
  }else stroke(0);
  
  x+=vx; y+=vy;
  vy+=0.98;
  if(y>400){
    vy=-vy;
  }
}

彈跳程式碼加入主程式
👉程式碼(主要更改部分為豆沙粉色   
PShape obj;
void setup(){
  size(600,500,P3D);///場景為3D
  obj=loadShape("hand1.obj");
  camera(0,-70,120,0,0,0,0,1,0);
}

float boardX,boardY;
float x=0,y=0,z;
float vx=0,vy=0;

void draw(){
  lights();//打光
  background(112,146,190);
  fill(34,177,76);//綠色
  box(100,5,120);//綠色球桌
  
  pushMatrix();
  translate(0,-10,0);
  fill(255,0,0);//紅色
  box(98,20,5);//紅色網子
  popMatrix();

  pushMatrix();
  translate(-40,35,50);
  fill(#502C0F);//桌腳的顏色
  box(10,70,10);//咖色桌腳
  popMatrix();

  pushMatrix();
  translate(40,35,50);
  fill(#502C0F);//桌腳的顏色
  box(10,70,10);//咖色桌腳
  popMatrix();

  pushMatrix();

  translate(-40,35,-50);
  fill(#502C0F);//桌腳的顏色
  box(10,70,10);//咖色桌腳
  popMatrix();

 

  pushMatrix();
  translate(40,35,-50);
  fill(#502C0F);//桌腳的顏色
  box(10,70,10);//咖色桌腳
  popMatrix();
  lights();
  fill(255,255,0);//球的顏色
  float dx=(mouseX-width/2.0)/8.0-10 ,dy=(mouseY-height*0.9)/5.0+100;
   
  pushMatrix();
    translate(x,y);
    lights();noStroke();sphere(5);
  popMatrix();
 // boardX=dx;//mouseX; 
  //boardY=dy;
  pushMatrix();
    //translate(boardX,-10,boardY);
    translate(dx,-10,dy);
    rotate(radians(180));
    shape(obj,0,0);
    stroke(0);//line(-50,0,+50,0);
  popMatrix();
  if(y<dy && y+vy>dy && dx-50<x && x<dx+50){
    stroke(255,0,0);
    vy=-vy;
  }else stroke(0);
  
  x+=vx; y+=vy;
  vy+=0.98;
  if(y>400){
    vy=-vy;
  }
}
    
那麼這週先停在這裡
這週未完
1:人物、記分板未放入
2:3D球網未放入

下次進度安排

1:對手球拍自動偵測到球
2:調整使己方打得到球
3:將人物放入
4:球向前彈動


如果喜歡我的部落格的話
請幫我按右上角的愛心(根本按不下去)

也可以按右上角的小鈴鐺(這也按不下去)
才不會錯過我的更新哦!😉


沒有留言:

張貼留言