step1. 拉圖檔 --xx.png (半透明圖檔)
step2. 拉近processing 程式裡。(快捷建:Ctrl+K 打開程式目錄 )
step3.程式碼
PImage的物件變數宣告
image()秀圖通常寫在draw()裡面
step4.滑鼠按下才會動
先設定變數 float
在座圖檔的位置設定
最後寫拖曳時會跟著滑鼠跑
mouseDragged()
完成圖
►製作憤怒鳥小遊戲2
改用圖來拖曳
把圖的(0,0)調到圖的中心位置:imageMode(CENTER)
加速度: mmAX ,mmAY
完成圖
做要被打的物體--mm2
- 先宣告mm2位置,boolean來判斷存在是否。
- 判斷障礙物是否存在 : if (mm2Alive) image( img2 , mm2X , mm2Y , 100 , 100 );
- 判斷障礙物是否超過邊界:if (dist(mm2X,mm2Y,mmX,mmY) <100 ){ mm2Alive=false; }
製作邊界和摩擦力:mmVX *= 0.997; mmVY *= 0.997;
※撞到邊界時,會等速反彈。
►程式碼
PImage img1,img2;
void setup()
{
size(800,600);
img1= loadImage("1.png");
img2= loadImage("2.png");
imageMode(CENTER); ///圖檔中心
}
float mmX=400 ,mmY=300;
float mmVX=0 ,mmVY=0;
float mmAX=0 ,mmAY=0;
float mm2X=700 ,mm2Y=400;
boolean mm2Alive=true; ///如果小小兵還活著,就畫出敵人
void draw()
{
///做判斷
background(255);
if(mm2Alive)image(img2,mm2X,mm2Y,100,100);
///障礙物存在
image(img1,mmX,mmY,100,100);
//ellipse(mmX,mmY,100,100);
if(dist ( mm2X,mm2Y,mmX,mmY ) <100){
mm2Alive=false;
}
///障礙物和物體位置一樣,障礙物消失
line(mmX,mmY,400,300);
///做更新
mmX+=mmVX;
mmY+=mmVY;
///判斷位置是否超過邊界
if(mmX<50){mmX=50; mmVX= -mmVX;} ///左
if(mmX>width-50){mmX=width-50; mmVX=-mmVX;}///右
if(mmY<50){mmY=50; mmVY= -mmVY;}///上
if(mmY>height-50){mmY=height-50; mmVY=-mmVY;}///下
mmVX+=mmAX; ///加速度
mmVY+=mmAY;
mmVX *= 0.997; ///x空氣摩擦力
mmVY *= 0.997; ///y空氣摩擦力
//image(img2,400,300);
}
void mouseDragged() ///按下滑鼠
{
mmX=mouseX;
mmY=mouseY;
mmVX=mmVY=mmAX=mmAY=0;
}
void mouseReleased() ///滑鼠放開後
{
mmVX =(400-mouseX)/10.0; ///以距離來計算移動速度
mmVY =(300-mouseY)/10.0;
mmAY=0.98; ///重力加速度
}
►小朋友下樓梯
沒有留言:
張貼留言