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



沒有留言:
張貼留言