🐠🐠Week16🐠🐠
[12/27(一)]
Doodle Jump製作I N G🔨🔧🔩
Doodle Jump製作步驟: (1)jumping主角 (2)跳起來 (3)卡住 (4)畫面捲動
卡住的地方:
//Doodle Jump製作步驟: (1)jumping主角 (2)跳起來 (3)卡住 (4)畫面捲動
PImage imgBoard01;
float x=150, y=500-15, vx=0, vy=0;
boolean jumping=false;
boolean left=false;//左
boolean right=false;//右
float []boardX=new float[10];
float []boardY=new float[10];
int landing=0;//停在哪一個板子上
void setup()
{
size(300,500);
imgBoard01 = loadImage("board01.png");
for(int i=0; i<10; i++)
{
boardX[i]=random(0,300-68);
boardY[i]=i*35;
}//376-356==>20
}
float rolling=0;
void draw()
{
background(255);
for(int i=0; i<10; i++)
{
rect(boardX[i],boardY[i], 68, 20);
}
ellipse(x,y,15,15);
if(left) x -= 0.8;
if(right) x += 0.8;
//x += vx;
y += vy;
if(jumping) vy += 0.98;//重力加速度(往下的速度)
if(y>500-15) y=500-15;//地板
if(vy>=0)
{//(0)往下,才有可能卡住
}
for(int i=0; i<10; i++)
{
image(imgBoard01, boardX[i], 450-boardY[i]+rolling);
if(boardY[i]+rolling<0)
{
boardX[i]=random(0,300-68);
boardY[i]=boardY[i]+350;
}
}
rolling+=1.5;
}
void keyPressed()
{
if(keyCode==UP)
{//(2)跳起來
vy = -20; jumping=true; //往上的速度,負的越多,跳的越慢
}
if(keyCode==LEFT)
{
vx = -0.8; left=true; right=false; //負越多,跑越快
}
if(keyCode==RIGHT)
{
vx = 0.8; right=true; left=false;
}
}
改過一點點的:
//Doodle Jump製作步驟: (1)jumping主角 (2)跳起來 (3)卡住 (4)畫面捲動
float x=150, y=500-15, vx=0, vy=0;
boolean jumping=false;
boolean left=false;//左
boolean right=false;//右
float []boardX=new float[10];
float []boardY=new float[10];
int landing=0;//停在哪一個板子上
void setup()
{
size(300,500);
for(int i=0; i<10; i++)
{
boardX[i]=random(0,300-80);
boardY[i]=450-i*50; //width:80
}
}
float rolling=0;
void draw()
{
background(255);
for(int i=0; i<10; i++)
{
rect(boardX[i], boardY[i], 80, 15);//畫四邊形
}
ellipse(x,y,15,15);
if(left) x -= 0.8;
if(right) x += 0.8;
//x += vx;
if(x< boardX[landing] || boardX[landing]+80<x) jumping=true;//landing=i;//停在哪一個板子上, 超過了,掉下來
y += vy;
if(jumping) vy += 0.98;//重力加速度(往下的速度)
if(y>500-15) y=500-15;//地板
if(vy>=0)
{//(0)往下,才有可能卡住
for(int i=0; i<10; i++)//試每一個板子
{
if(boardX[i] < x && x < boardX[i]+80 ) //(1)x: 板子的左右邊界符合(主角在板子裡)
{
if(y< boardY[i] && y+vy > boardY[i]) //(2)y: 上下符合,從板子上,往板子下穿越
{
landing=i;//停在哪一個板子上
jumping=false;//不再飛行
vy=0;//停止
//vy = -20; jumping=true;
y = boardY[i]; //卡住,卡在板子的地方,主角跟板子的y座標相同
}
}
if(boardX[i] > x && x > boardX[i]+80)
{
y -= vy;
}
rolling+=1.5;
}
}
}
void keyPressed()
{
if(keyCode==UP)
{//(2)跳起來
vy = -20; jumping=true; //往上的速度,負的越多,跳的越慢
}
if(keyCode==LEFT)
{
vx = -0.8; left=true; right=false; //負越多,跑越快
}
if(keyCode==RIGHT)
{
vx = 0.8; right=true; left=false;
}
}
沒有留言:
張貼留言