2017年10月16日 星期一

17/10/16 德宇的筆記Week05

目標一:做出眼睛動動



1.讓眼睛跟著滑鼠移動(有輔助線)

程式碼:
void setup()
{
  size(400,400); 
}
void draw()
{
  background(128);
  strokeWeight(20); 
  ellipse(100,200,180,360); //右眼
  ellipse(300,200,180,360); //左眼
  
  ellipse(100,200,10,10); 
  ellipse(300,200,10,10); 
  line(mouseX,mouseY,100,200); //畫一條線連接右眼
  line(mouseX,mouseY,300,200);  //畫一條線連接左眼
}




2.讓眼睛跟著滑鼠移動,用tan寫法

程式碼:
void setup()
{
  size(400,400);
}
void draw()
{
  background(128);
  strokeWeight(20);
  ellipse(100,200,180,360);
  ellipse(300,200,180,360);
  
  float angle1=atan2((mouseY-200)/2,mouseX-300); //角度=atan2(分子/分母)
  float newX1=300+100*cos(angle1)/2;  //右眼珠的X移動半徑大小
  float newY1=200+200*sin(angle1)/2;  //右眼珠的Y移動半徑大小
  ellipse(newX1,newY1,10,10);

  float angle2=atan2((mouseY-200)/2,mouseX-100);  
  float newX2=100+100*cos(angle2)/2;   //左眼珠的X移動半徑大小
  float newY2=200+200*sin(angle2)/2;   //左眼珠的Y移動半徑大小 
  ellipse(newX2,newY2,10,10);
}




目標一:做出泡泡龍射擊



1.射擊泡泡的概念
1.1線可隨滑鼠增長,球黏滑鼠移動
1.2自由移動,滑鼠移動球會自動歸回
1.3自由發射,滑鼠移動球會自動歸回
程式碼:
void setup()
{
  size (400,600);
}
float ballX=200 ,ballY=600;
float ballVX=0 ,ballVY=0;
float angle=0;
void draw()
{
  background(0,128,26);
  fill(#FCC557); ellipse(200,600,100,100);
  line(mouseX, mouseY,200,600);
  fill(#D2FF21); ellipse(ballX,ballY,30,30);
  angle = atan2(mouseY-600, mouseX-200);
 
  ballX+=ballVX;
  ballY+=ballVY;
}
void mouseMoved()
{
  ballX=200+50*cos(angle);
  ballY=600+50*sin(angle);
}
void mousePressed()
{
    ballVX=cos(angle);
    ballVY=sin(angle);
}

沒有留言:

張貼留言