2019年10月3日 星期四

SamYeh's note_Week04

互動技術

Week 04



1. 畫出一個球,當球碰到畫面邊框時反彈

int ballx=300, bally=300;
int vx=-2;
void setup(){
 size(700,400); 
}
void draw(){
  background(255);
  ellipse(ballx,bally,30,30);
  ballx+=vx;
  
  if(ballx<0)vx =+2;
  if(ballx>700)vx = -2;
}



2. 製作牛頓物理碰撞,ballY*0.98

float ballx=300, bally=300;
float vx=-2,vy= 2;
void setup(){
 size(700,400); 
}
void draw(){
  background(255);
  ellipse(ballx,bally,30,30);
  ballx+=vx;
  bally+=vy;
  vy+=0.98;
  
  if(ballx<0+15)vx = -vx;
  if(ballx>700-15)vx = -vx;
  if(bally<0+15) vy = -vy;
  if(bally>400-15)vy = -vy;
}




3.製作具有摩擦力的球

float ballx=300, bally=300;
float vx=-2,vy= 2;
void setup(){
 size(700,400); 
}
void draw(){
  background(255);
  ellipse(ballx,bally,30,30);
  ballx+=vx;
  bally+=vy;
  
  if(ballx<0+15)vx = -vx*0.98;
  if(ballx>700-15)vx = -vx*0.98;
  if(bally<0+15) vy = -vy*0.98;
  if(bally>400-15){
    vy = -vy*0.98;
    vx = vx*0.98;
    bally=400-15;
    
  }
  vy+=0.98;
}








PImage imgKid;
float kidx=100, kidy=100;
float kidvx=0,kidvy= 0;
void setup(){
 size(500,500);
 imgKid = loadImage("kid.gif");
}
void draw(){
  background(255);
  rect(0,200, 500,50);
  image(imgKid,kidx, kidy,100,100);
  if(softbrake==1){
    kidvx*=0.8;
  }
  kidx+=kidvx;
  kidy+=kidvy;
 
  if(kidy<=100){
    kidvy += 0.98;  
  }else kidy=100;

}
int softbrake = 0;
void keyReleased(){
  if(keyCode==RIGHT){
   softbrake=1;
 }else if(keyCode==LEFT) {
   softbrake=1;
 }
}

void keyPressed(){
 if(keyCode==RIGHT){
   kidx+=3;
    softbrake=0;
    if(kidvx>10)kidvx=10;
 }else if(keyCode==LEFT) {
   kidx-=3;
   softbrake=0;
   if(kidvx>10)kidvx=10;
 }else if(keyCode==UP) {
   kidvy= -15;
 }
}









沒有留言:

張貼留言

alanhc 互動技術-week17 [final]

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