2019年10月3日 星期四

Week04 欣儀的課堂筆記

Part1 碰撞Collision

 Code: 
int ballX=300, ballY=300;
float vx= -2;//正的往右跑,負的往左跑
void setup(){
  size(700,400);
}
void draw(){
  background(255);
  ellipse(ballX,ballY,50,50);
  ballX += vx;
  
  
  //假設超過邊界就會往反方向移動
  if(ballX<0) vx = +2; 
  if(ballX>700) vx= -2; 
}

球會左右碰撞




Part2 彈跳Bounce

 Code: 
float ballX=100, ballY=100;
float vx= +2, vy= -10;
void setup(){
  size(700,400);
}
void draw(){
  background(255,255,0);
  ellipse(ballX,ballY,50,50);
  ballX += vx;
  ballY += vy;
  
  //為了改變球的中心點,所以加or減25,這樣球觸碰到邊界時就不會被吃掉一半
  if(ballX<0+25)   vx = -vx*0.9;
  if(ballX>600-25) vx = -vx*0.9; 
  if(ballY<0+25)   vy = -vy*0.9;
  if(ballY>400-25){ 
    vy = -vy*0.9;
    vx = vx*0.9;//增加摩擦力
    ballY=400-25;
  }
  vy += 0.98;//重力加速度
}



Part3 馬力歐移動

利用鍵盤左、右、上鍵,讓馬力歐左右移動和跳。

 Code: 
PImage imgMario;
float marioX=100, marioY=100;
float marioVX=0, marioVY=0;
void setup(){
  size(500,500);
  imgMario = loadImage("mario.png");
}
void draw(){
  background(255,255,0);
  rect(0,200,500,50);
  image(imgMario, marioX, marioY,100,100);
  marioX += marioVX;
  marioY += marioVY;
  if(softBrake==1) marioVX *= 0.9;//摩擦力
  if(marioY<=100) marioVY += 0.9;//重力
  else if(flying==1) marioVY += 0.9;//重力
  else{
    marioY = 100;//站在地上
    flying=0;
  }  
}
int softBrake=0;//煞車
void keyReleased(){
  if(keyCode==RIGHT) softBrake=1;
  if(keyCode==LEFT)  softBrake=1;
}
int flying=0;
void keyPressed(){
  if(keyCode==RIGHT){
    marioVX = 3;
    softBrake=0;
  }  
  else if(keyCode==LEFT){
    marioVX = -3;
    softBrake=0;
  }  
  else if(keyCode==UP && flying ==0){
    marioVY = -15;
    flying=-1;
  }
}

沒有留言:

張貼留言

alanhc 互動技術-week17 [final]

回顧這學期的作品:  期中作業:LANDING:PLANET 賣點&特點: 炫麗的特效 物理(星球重力及降落)及粒子系統(噴射) 世界地圖可根據視角縮放 困難點: 重寫3次最終改寫成物件導向的CLASS寫法...