***LeapMotion函式庫只能在Processing2.2.1使用(未更新)***
Leap Motion 下載:https://www.leapmotion.com/setup
本周目標:學習射擊、打棒球遊戲的操作。
---------------------------------------------------------------------------------
射擊遊戲
先抓出一根手指當作手槍槍把
PVector pos = finger_index.getPosition(); //取得手指座標
PVector dir = finger_index.getDirection();//取得手指方向
lights(); //打光
fill(255,0,0); //填充顏色
translate(width/2,height/2); //將物體座標移動到中心
rotateY(radians(frameCount)); //每秒旋轉的徑度
box(100,100,50); //畫box
PVector pos = null,dir = null; //給初值,後面判斷才不會出錯
pushMatrix();
translate(width/2,height/2);
for(int i=0;i<10;i++){ //一次畫出10顆球,當作砲管
if(dir!=null) {translate(dir.x*10*i,dir.y*10*i,dir.z*10*i);
sphere(40);}
}
popMatrix();
PVector []bullet = new PVector[10]; //10個子彈
PVector []bullet_dir = new PVector[10]; //10個子彈向量
並給初值
pushMatrix();
fill(0, 0, 255);
for (int i=0; i<10; i++)
{
pushMatrix(); //每個子彈各別畫
translate(bullet[i].x, bullet[i].y, bullet[i].z);
sphere(50);
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[bulletNow].x =0; bullet[bulletNow].y =0;
bullet[bulletNow].z =0;
bullet_dir[bullerNow].x = dir.x*5;
bullet_dir[bullerNow].y = dir.y*5;
bullet_dir[bullerNow].z = dir.z*5;
bullerNow++; //換下一個子彈
if(bulletNow>=10)
bulletNow = 0;
}
完整程式碼
import de.voidplus.leapmotion.*;
LeapMotion leap;
PVector pos = null, dir=null;
PVector []bullet = new PVector[10];
PVector []bullet_dir = new PVector[10];
int bulletNow = 0;
void setup() {
size(640, 480, 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(50);
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[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;
}
沒有留言:
張貼留言