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;
}
}



沒有留言:
張貼留言