2019年10月3日 星期四

Week04_黃偉愷

1. DVD彈跳動畫


 Code: 
int ballX = 300, ballY = 300; // 球的初始座標
int vx = -2, vy = +2; // 球的XY軸個別移動速度
void setup() {
  size(700, 400);
}

void draw() {
  background(255);
  ellipse(ballX, ballY, 30, 30); // 畫球
  
  // 將球的座標加上速度來移動球
  ballX += vx; 
  ballY += vy;
  
  // 如果球碰到牆壁要反彈,(15是球的半徑)
  if (ballX < 0+15) vx = +2; 
  if (ballX > 700-15) vx = -2;
  if (ballY < 0+15) vy = +2;
  if (ballY > 400-15) vy = -2;
}

2. 彈跳的球(有重力加速度和摩擦力)

Code:
float ballX = 300, ballY = 300; // 球的初始座標
float vx = +2, vy = -10; // 球的XY軸個別移動速度
void setup() {
  size(700, 400);
}

void draw() {
  //background(255);
  ellipse(ballX, ballY, 30, 30); // 畫球
  
  // 將球的座標加上速度來移動球
  ballX += vx; 
  ballY += vy;
  
  // 如果球碰到牆壁要反彈,(15是球的半徑)
  if (ballX < 0+15) vx = -vx*0.9; 
  if (ballX > 700-15) vx = -vx*0.9;
  if (ballY < 0+15) vy = -vy*0.9;
  if (ballY > 400-15) {
    vy = -vy*0.9;
    vx *= 0.9; // 模擬球在X軸上的摩擦力
    ballY = 400-15; // 讓球不要跳超出畫面
  }
  
  vy += 0.98; // 重力加速度
}

3. 馬力歐跳起來跟左右移動和煞車

Code:
PImage marioImg;
float marioX=250, marioY=350;
float marioVX=0, marioVY=0;
boolean softBrake = false;
void setup() {
  size(900, 500);
  marioImg = loadImage("mario.png");
}

void draw() {
  background(150, 200, 140);
  fill(210, 105, 30); rect(0, 450, 900, 50);
  image(marioImg, marioX, marioY, 100, 100);
  
  // 移動馬力歐的位置
  marioX += marioVX;
  marioY += marioVY;
  
  if (softBrake) marioVX *= 0.9; // 慢慢煞車
  
  // 不讓馬力歐超出畫面
  if (marioX > 900-100) marioX=800;
  if (marioX < 0) marioX=0; 
  
  if (marioY <= 350) {
    marioVY += 0.9; // 馬力歐跳起來後給他向下的加速度
  }
  else marioY = 350;
  
}

void keyPressed() {
  if (keyCode == UP && marioY >= 350) {
    marioVY = -15;
  } 
  if (keyCode == RIGHT) {
    marioVX += 5;
    softBrake = false;
  }
  if (keyCode == LEFT) {
    marioVX -= 5;
    softBrake = false;
  }
}

void keyReleased() {
  // 放開鍵盤就煞車
  if (keyCode == RIGHT) {
    softBrake = true;
  }
  if (keyCode == LEFT) {
    softBrake = true;
  }
}

沒有留言:

張貼留言

alanhc 互動技術-week17 [final]

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