2016年3月17日 星期四

week04_砲彈遊戲和棒球原理設計_呂登祐

1.砲彈遊戲練習
2.打棒球練習

***************************************************************
01.砲彈遊戲園裡練習
首先,秀食指
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();
  }
}
畫出長方體
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)); //使物體旋轉
  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();
}


增設按空格鍵發射出子彈

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();
  }
  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;
  }
}

****************************************************************************
02.棒球遊戲原理練習
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();
}


沒有留言:

張貼留言