程式碼:
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();
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[i].x;
bullet[i].y += bullet[i].y;
bullet[i].z += bullet[i].z;
popMatrix();
}
}
void keyPress(){
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;
}
}
然後就是打棒球的範例:
碰撞之後:
程式碼:
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();
}
沒有留言:
張貼留言