1.課堂程式範例
先去Import Library下載範例
然後再去Examples尋找
OBJLoader_Sample_SAITO按下
開啟範例
程式碼:
import saito.objloader.*;
OBJModel model ;
float rotX, rotY;
void setup()
{
size(800, 600, P3D);
frameRate(30);
model = new OBJModel(this, "dma.obj", "absolute", TRIANGLES);
model.enableDebug();
model.scale(20);
model.translateToCenter();
stroke(255);
noStroke();
}
void draw()
{
background(129);
lights();
pushMatrix();
translate(width/2, height/2, 0);
rotateX(rotY);
rotateY(rotX);
model.draw();
popMatrix();
}
boolean bTexture = true;
boolean bStroke = false;
void keyPressed()
{
if(key == 't') {
if(!bTexture) {
model.enableTexture();
bTexture = true;
}
else {
model.disableTexture();
bTexture = false;
}
}
if(key == 's') {
if(!bStroke) {
stroke(255);
bStroke = true;
}
else {
noStroke();
bStroke = false;
}
}
else if(key=='1')
model.shapeMode(POINTS);
else if(key=='2')
model.shapeMode(LINES);
else if(key=='3')
model.shapeMode(TRIANGLES);
}
void mouseDragged()
{
rotX += (mouseX - pmouseX) * 0.01;
rotY -= (mouseY - pmouseY) * 0.01;
}
2.抄襲範例
先把程式打進去,把範例Scatch內data中的所有東西拉近新打的
不會旋轉的3D模型
程式碼:
import saito.objloader.*;
OBJModel model;
void setup()
{
size(800, 600, P3D);//視窗大小
model = new OBJModel(this,"dma.obj","absolute", TRIANGLES);//讀obj model檔
model.scale(20);//模型大小
model.translateToCenter();
}
void draw()
{
translate(width/2,height/2);//移動
model.draw();
}
3.做出doodle jump
先下載一png檔
拉入程式框中
然後輸入圖片進入程式中
在輸出進畫面中
點滑鼠會跳起
程式碼:
PImage imgPerry;
void setup()
{
size(800,600);
imgPerry = loadImage("perry.png");
}
float perryX=400,perryY=0,perryVY=0;
void draw()
{
background(225);
image(imgPerry,perryX,perryY,100,50);//圖片位置和大小
perryY+=perryVY;
perryVY+=0.98;//加速度
}
void mousePressed()
{
perryVY = -25;//跳起
}
perry能夠在Y軸的某一數值停住(若Y<450則繼續向下掉,Y>=450則加速度為0)
程式碼:
PImage imgPerry;
void setup()
{
size(800,600);
imgPerry = loadImage("perry.png");
}
float perryX=400,perryY=0,perryVY=0;
void draw()
{
background(225);
image(imgPerry,perryX,perryY,100,50);
perryY+=perryVY;
if(perryY<450)//若Y<450則加速度為0.98
perryVY+=0.98;
else//否則加速度為0
perryVY=0;
}
void mousePressed()
{
perryVY = -25;
}
void mouseMoved()
{
perryX = mouseX;//若滑鼠X座標移動,則perry也跟著X座標移動
}
畫出地板
不過站不上去
程式碼:
PImage imgPerry;
PVector [] board = new PVector[10];
void setup()
{
size(800,600);
imgPerry = loadImage("perry.png");
for(int i=0;i<10;i++)
{
board[i] = new PVector(random(800),i*60);
}
}
float perryX=400,perryY=0,perryVY=0;
void draw()
{
background(225);
for(int i=0;i<10;i++)
{
rect(board[i].x,board[i].y,100,20);
}
image(imgPerry,perryX,perryY,100,50);
perryY+=perryVY;
if(perryY<450)
perryVY+=0.98;
else
perryVY=0;
}
void mousePressed()
{
perryVY = -25;
}
void mouseMoved()
{
perryX = mouseX;
}
判斷perry和地板
(程式碼有錯)
老師範例










沒有留言:
張貼留言