1.優化球的軌跡
1-1.斜率判斷方向:
/*
p2.x>p1.x&&p2.y<p1.y//向右上/
p2.x<p1.x&&p2.y>p1.y//向左下
slop<=0
p2.x>p1.x&&p2.y>p1.y//向右下\
p2.x<p1.x&&p2.y<p1.y//向左上
slop>=0
*/
1-2.第一版:
void collision(){
for (int i=0; i< curves.size(); i++) {
Curve p = curves.get(i);
for (int j =0; j< p.pts.size()-5; j++) {
PVector p1 = p.pts.get(j);
bombing(bomb_1.x, bomb_1.y, x, y);
PVector p4= p.pts.get(j+5); //取第5個點
PVector p2 = p.pts.get(j+1); //取下一個點
float d_p1_p2=dist(p1.x, p1.y, p2.x, p2.y);
float slop=(p2.x-p1.x)*(p2.y-p1.y); //現在的點與下一個點
float slop2=(p4.x-p1.x)*(p4.y-p1.y);
if ((x>=p1.x-19.9&&x<=p1.x+19.9)&&(y>=p1.y-20.5&&y<=p1.y-19.5)) {
vx=0;
vy=0;
println("+++++", slop, "+++", d_p1_p2, "++++", slop2, "H =", H, "U =", U);
if (slop>=0&&slop2>0) {
vx=1;
vy=0.8;
H=H-vy/10; //位能
}
if (slop<=0&&slop2<0) {
vx=-1;
vy=0.5;
H=H-vy/10;
}
if (slop==0&&slop2==0) {
moving =false;
}
}
}
}
}
1-3.第二版:
>>>不會從線中滑落了,但常常會卡住
當斜率很小趨近於0時,要怎麼判斷方向?
2.炸彈
因為炸彈不只一顆>>用class寫
2-1.物件宣告:
Bomb bomb_1; //宣告
bomb_1=new Bomb(); //new方法創建實體
2-2.定義class:
class Bomb {
int x, y;
void draw(int x, int y) { //一開始就做的事
fill(#761007);
ellipse(x, y, 30, 30);
}
}
void bombing(int x,int y,float ballx, float bally) {
if (ballx<=(x+15)&&bally<=(y+15)&&ballx>(x-15)&&bally>(y-15)) {//碰撞
println("Game Over!!!!!");
ball.vx=0;
ball.vy=0;
moving=false;
}
}
2-3.使用:
沒有留言:
張貼留言