1.射擊遊戲,先找到食指
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();
}
}
2.建立一個立體旋轉方塊在畫面正中央
import de.voidplus.leapmotion.*;
LeapMotion leap;
void setup(){
size(600,400,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(); //打光
fill(255,0,0);
translate(width/2,height/2); //左上角為中心,要畫在畫面正中央
rotateY(radians(frameCount)); //radians把frameCount轉換成"度"
box(300,100,100);
}
3.畫多個球體,跟著食指走 (決定子彈射擊的方向)
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();
//println(pos);
//println(dir);
}
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);
}
4.畫子彈射擊
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();
//pos=finger_index.getPosition();
dir=finger_index.getDirection();
//println(pos);
//println(dir);
}
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++;
//rotateY(radians(frameCount));
//box(300,100,100);
}
5.解決超過10顆子彈便會當機的問題
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();
//pos=finger_index.getPosition();
dir=finger_index.getDirection();
//println(pos);
//println(dir);
}
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();
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();
}
}
void keyPressed(){
bullet[bulletNow].x=0; bullet[bulletNow].y=0; bullet[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;
//rotateY(radians(frameCount));
//box(300,100,100);
}
}
第三堂課
實作打棒球
//當棒子碰到球時,畫面變成紅色的
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();
}
3.畫多個球體,跟著食指走 (決定子彈射擊的方向)
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();
//println(pos);
//println(dir);
}
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);
}
4.畫子彈射擊
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();
//pos=finger_index.getPosition();
dir=finger_index.getDirection();
//println(pos);
//println(dir);
}
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++;
//rotateY(radians(frameCount));
//box(300,100,100);
}
5.解決超過10顆子彈便會當機的問題
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();
//pos=finger_index.getPosition();
dir=finger_index.getDirection();
//println(pos);
//println(dir);
}
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();
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();
}
}
void keyPressed(){
bullet[bulletNow].x=0; bullet[bulletNow].y=0; bullet[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;
//rotateY(radians(frameCount));
//box(300,100,100);
}
}
第三堂課
實作打棒球
//當棒子碰到球時,畫面變成紅色的
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();
}
沒有留言:
張貼留言