bu arada unutmadan, FPS maksatlı başladığım için bu çalışmaya, şuan WASD tuşlarıyla hareket ve Y ekseninde mouse view aktif durumda.
import processing.opengl.*;<br /><br />PFont font1;<br />float px = 125; //camera x<br />float py = -50; //camera y<br />float pz = 125; //camera z<br />float tx; //camera target x<br />float tz; //camera target z<br />float fov = 90; //distance between camera and camera target<br />float angle = 135; //current y rotation<br />float angles = 0; //current turning speed<br />float anglesmax = 2; // max turning speed<br />float anglev = 0.3; // turning velocity<br />float speed = 0; //current speed<br />float speedmax = 5; //max speed<br />float speedv = 0.4; //velocity<br />float sdistance = 1;<br />float sangle = 0;<br />float sangles = 0.1;<br />float sx = 0;<br />float sy = 0;<br />float sz = 0;<br />float s2x = 0;<br />float s2y = 0;<br />float s2z = 0;<br />boolean keyFront = false;<br />boolean keyBack = false;<br />boolean keyLeft = false;<br />boolean keyRight = false;<br /><br />void setup() {<br /> size(800, 600, P3D);<br /> font1 = loadFont("Tahoma-48.vlw");<br /> textFont(font1, 9);<br /> textAlign(CENTER, CENTER);<br /> noCursor();<br />}<br /><br />void draw()<br />{<br /> camera (px, py, pz, tx, map(mouseY, 500, 0, -15, -75), tz, 0, 1, 0);<br /> background(0);<br /> lights();<br /> if (keyPressed && key == 'w'|| key =='W') <br /> {<br /> keyFront = true;<br /> keyBack = false;<br /> }<br /> else if (keyPressed && key == 's'|| key =='S')<br /> {<br /> keyBack = true;<br /> keyFront = false;<br /> }<br /> if (keyPressed && key == 'a'|| key =='A')<br /> {<br /> keyLeft = true;<br /> keyRight = false;<br /> }<br /> else if (keyPressed && key == 'd'|| key =='D')<br /> {<br /> keyRight = true;<br /> keyLeft = false;<br /> }<br /><br /> if (keyFront == true)<br /> {<br /> if (speed < speedmax) speed += speedv;<br /> }<br /> else if (keyBack == true)<br /> {<br /> if (speed > speedmax*-1) speed -= speedv;<br /> } <br /> else if (speed < -0.2 || speed > 0.2) speed *= 0.95;<br /> else speed = 0;<br /><br /> if (keyLeft == true)<br /> {<br /> if (angles < anglesmax) angles += anglev;<br /> }<br /> else if (keyRight == true)<br /> {<br /> if (angles > anglesmax*-1) angles -= anglev;<br /> } <br /> else if (angles < -0.2 || angles > 0.2) angles *= 0.85;<br /> else angles = 0;<br /><br /> angle += angles;<br /> px += cos(angle * PI/-180)*speed;<br /> pz += sin(angle * PI/-180)*speed;<br /> tx = px + fov * cos(angle * PI/-180);<br /> tz = pz + fov * sin(angle * PI/-180);<br /><br /> //EFFECTS<br /> <br /> sangle = 0;<br /> sdistance = 1;<br /> sy = -1;<br /> for (int i = 0; i < frameCount; i++)<br /> {<br /> sangles += 0.00001;<br /> sangle += sangles;<br /> sdistance *= 1.005;<br /> sy *= 1.005;<br /> stroke(map(sy, -1, -100, 0, 255),map(sy, -1, -100, 255, 0),map(sy, -1, -100, 255, 0));<br /> sx = sdistance * cos(sangle * PI/-180);<br /> sz = sdistance * sin(sangle * PI/-180);<br /> s2x = sdistance*1.005 * cos((sangle+5) * PI/-180);<br /> s2z = sdistance*1.005 * sin((sangle+5) * PI/-180);<br /> <br /> line(sx, sy, sz, s2x, sy, s2z);<br /> }<br /> <br /> //Workarea<br /> stroke(255);<br /> fill(255);<br /> line(250, 0, 250, 250, 0, -250);<br /> line(250, 0, 250, -250, 0, 250);<br /> line(-250, 0, -250, 250, 0, -250);<br /> line(-250, 0, -250, -250, 0, 250);<br /> //XYZ Axes<br /> stroke(255,0,0);<br /> fill(255,0,0);<br /> line(0, 0, 250, 0, 0, -250);<br /> line(0, 250, 0, 0, -250, 0);<br /> line(250, 0, 0, -250, 0, 0);<br /> //XYZ Axes Texts<br /> fill(255);<br /> textSize(5);<br /> text("+X", 25, 3, 0);<br /> text("-X", -25, 3, 0);<br /> text("+Y", 3, 25, 0);<br /> text("-Y", 3, -25, 0);<br /> text("+Z", 3, 0, 25);<br /> text("-Z", 3, 0, -25);<br /><br /> <br />}<br /><br />void keyReleased()<br />{<br /><br /> if (key == 'w'|| key =='W') <br /> {<br /> keyFront = false;<br /> }<br /> else if (key == 's'|| key =='S')<br /> {<br /> keyBack = false;<br /> }<br /> if (key == 'a'|| key =='A')<br /> {<br /> keyLeft = false;<br /> }<br /> else if (key == 'd'|| key =='D')<br /> {<br /> keyRight = false;<br /> }<br />}<br />