2016年3月17日 星期四

Week04

小葉老師為了讓我們大家期中作業會用到的相關\
1.射擊遊戲
2.打棒球


一開始先試試驗食指的動作
程式碼:
import de.voidplus.leapmotion.*; LeapMotion leap; void setup(){ size(600,400); leap = new LeapMotion(this); } void draw(){ background(255); for(Hand hand : leap.getHands() ){ Finger finger_index = hand.getIndexFinger(); finger_index.draw(); } }

接下拉畫出一個3D旋轉圖

程式碼:

import de.voidplus.leapmotion.*; LeapMotion leap; void setup(){ size(600,400,P3D); -------->這邊加上P3D變立體 leap = new LeapMotion(this); } void draw(){ background(255); for(Hand hand : leap.getHands() ){ Finger finger_index = hand.getIndexFinger(); finger_index.draw(); PVector pos = finger_index.getPosition(); PVector dir = finger_index.getDirection(); println(pos); println(dir); } lights(); ------->遮邊是3D圖需要的 fill(255,0,0); translate(width/2, height/2); rotateY(radians(frameCount)); box(300,100,100); }


做一個球棒
程式碼:
import de.voidplus.leapmotion.*; LeapMotion leap; void setup(){ size(600,400,P3D); leap = new LeapMotion(this); } PVector pos=null, dir=null; void draw(){ background(255); for(Hand hand : leap.getHands() ){ Finger finger_index = hand.getIndexFinger(); finger_index.draw(); pos = finger_index.getPosition(); dir = finger_index.getDirection(); } lights(); fill(255,0,0); pushMatrix(); translate(width/2, height/2); for(int i=0;i<10;i++){ if(dir!=null) translate(dir.x*10*i, dir.y*10*i, dir.z*10*i); sphere(40); } popMatrix(); //rotateY(radians(frameCount)); //box(300,100,100); }



程式碼:
import de.voidplus.leapmotion.*; PVector pos=null, dir=null; PVector []bullet=new PVector[10]; PVector []bullet_dir=new PVector[10]; int bulletNow=0; LeapMotion leap; void setup(){ size(600,400,P3D); leap = new LeapMotion(this); for(int i=0;i<10;i++){ bullet[i]=new PVector(0,0,0); bullet_dir[i]=new PVector(0,0,0); } } void draw(){ background(255); for(Hand hand : leap.getHands() ){ Finger finger_index = hand.getIndexFinger(); finger_index.draw(); dir = finger_index.getDirection(); } lights(); fill(255,0,0); translate(width/2, height/2); pushMatrix(); for(int i=0;i<10;i++){ if(dir!=null) translate(dir.x*10*i, dir.y*10*i, dir.z*10*i); sphere(40); } popMatrix(); pushMatrix(); fill(0,0,255); for(int i=0;i<10;i++){ pushMatrix(); translate(bullet[i].x, bullet[i].y, bullet[i].z); sphere(41); bullet[i].x += bullet_dir[i].x; bullet[i].y += bullet_dir[i].y; bullet[i].z += bullet_dir[i].z; popMatrix(); } popMatrix(); } void keyPressed(){ bullet_dir[bulletNow].x = dir.x*5; bullet_dir[bulletNow].y = dir.y*5; bullet_dir[bulletNow].z = dir.z*5; bulletNow++; }
接下來要做發射子彈:
按空白鍵就可以發射子彈了~~
程式碼:
import de.voidplus.leapmotion.*; PVector pos=null, dir=null; PVector []bullet=new PVector[10]; PVector []bullet_dir=new PVector[10]; int bulletNow=0; LeapMotion leap; void setup(){ size(600,400,P3D); leap = new LeapMotion(this); for(int i=0;i<10;i++){ bullet[i]=new PVector(0,0,0); bullet_dir[i]=new PVector(0,0,0); } } void draw(){ background(255); for(Hand hand : leap.getHands() ){ Finger finger_index = hand.getIndexFinger(); finger_index.draw(); dir = finger_index.getDirection(); } lights(); fill(255,0,0); translate(width/2, height/2); pushMatrix(); for(int i=0;i<10;i++){ if(dir!=null) translate(dir.x*10*i, dir.y*10*i, dir.z*10*i); sphere(40); } popMatrix(); pushMatrix(); fill(0,0,255); for(int i=0;i<10;i++){ pushMatrix(); translate(bullet[i].x, bullet[i].y, bullet[i].z); sphere(41); bullet[i].x += bullet_dir[i].x; bullet[i].y += bullet_dir[i].y; bullet[i].z += bullet_dir[i].z; popMatrix(); } popMatrix(); } void keyPressed(){ bullet_dir[bulletNow].x=0; bullet_dir[bulletNow].y=0; bullet_dir[bulletNow].z=0; bullet_dir[bulletNow].x = dir.x*5; bullet_dir[bulletNow].y = dir.y*5; bullet_dir[bulletNow].z = dir.z*5; bulletNow++; if(bulletNow>=10){ bulletNow=0; } }

下一個跑球出來然後以方塊撞擊球,如果碰撞到了就會變紅色。

程式碼:
import de.voidplus.leapmotion.*; LeapMotion leap; PVector pos, dir, ball; void setup(){ size(600,400,P3D); leap = new LeapMotion(this); pos = new PVector(300,200,0); ball=new PVector(0,0,0); } void draw(){ ball.x +=2; ball.y += 2; for(Hand hand : leap.getHands() ){ pos = hand.getPosition(); } background(255); fill(255,0,0); pushMatrix(); translate(pos.x, pos.y, pos.z); box(30,30,30); popMatrix(); pushMatrix(); translate(ball.x, ball.y); sphere(30); if(dist(ball.x, ball.y, pos.x, pos.y)<30) background(255,0,0); popMatrix(); }


沒有留言:

張貼留言