We are about to switch to a new forum software. Until then we have removed the registration on this forum.
How would I make collision with boxes in P3D, using the Queasycam library?
elaborate.
https://forum.processing.org/two/discussion/comment/102262/#Comment_102262
I mean collision between you and the boxes, so that you hit the boxes instead of going through them. Here's my code:
import queasycam.*; QueasyCam cam; float x, y, z; float s; void setup() { size(1280, 904, P3D); x = 100; y = 100; z = 0; s = 0.1; cam = new QueasyCam(this); cam.speed = 10; cam.sensitivity = 0; } void draw() { background(151, 212, 247); noStroke(); lights(); directionalLight(200, 200, 200, 0, 100, 0); translate(width/2, y-470+(width/2), z); rotateX(361.26); // World // Stone for (float i = -1000; i<1000; i+=100) { for (float j = -1000; j<1000; j+=100) { stoneBlock(i, -100, j); } } // Grass for (float i = -1000; i<1000; i+=100) { for (float j = -1000; j<200; j+=100) { grassBlock(i, 0, j); } } for (float i = -1000; i<1000; i+=100) { for (float j = 400; j<1000; j+=100) { snowBlock(i, 0, j); } } // Snow snowBlock(-1000, 100, 900); snowBlock(-1000, 200, 900); snowBlock(-1000, 100, 800); snowBlock(-900, 100, 900); // River for (float i = -1000; i<1000; i+=100) { waterBlock(i, 0, 300); waterBlock(i, 0, 200); } // Trees tree(-200, 0, 0); tree(500, 0, -700); zombie(0, 275, 0, 10); // Rotating if (mousePressed) { cam.sensitivity = 1.2; } else { cam.sensitivity = 0; } } void zombie(float mx, float my, float mz, float rote) { pushMatrix(); translate(mx, my, mz); rotateY(rote); scale(0.73); // Head fill(101, 128, 78); box(50, 80, 100); pushMatrix(); translate(0, 50); fill(80, 112, 51); box(50, 20, 100); pushMatrix(); translate(-27, -45, 13); rotateY(55); fill(0, 0, 0); rect(0, 0, 23, 12); translate(-46, 0, 0); rect(0, 0, 23, 12); translate(23, -12, 0); fill(80, 112, 51); rect(0, 0, 23, 12); popMatrix(); translate(50, -40); fill(80, 112, 51); box(50, 100, 100); popMatrix(); // Body pushMatrix(); translate(25, -90); fill(77, 161, 153); box(50, 100, 100); translate(0, -60, -37); box(50, 25, 25); popMatrix(); // Legs pushMatrix(); translate(25, -215, 13); fill(63, 79, 161); box(50, 150, 75); translate(0, -11, -50); box(50, 127, 25); popMatrix(); // Feet pushMatrix(); translate(25, -300, 0); fill(100, 100, 100); box(50, 20, 100); popMatrix(); // Arms pushMatrix(); translate(25, -65, 75); fill(77, 161, 153); box(50); translate(-75, 0, 0); fill(101, 128, 78); box(100, 50, 50); popMatrix(); pushMatrix(); translate(25, -65, -75); fill(77, 161, 153); box(50); translate(-75, 0, 0); fill(101, 128, 78); box(100, 50, 50); popMatrix(); popMatrix(); } // Tree void tree(float bx, float by, float bz) { pushMatrix(); translate(bx, by, bz); woodBlock(0, 400, 0); woodBlock(0, 300, 0); woodBlock(0, 200, 0); woodBlock(0, 100, 0); woodBlock(0, 0, 0); for (float i = -200; i <= 200; i+=100) { for (float j = -200; j <= 200; j+=100) { leavesBlock(i, 400, j); } } for (float i = -100; i <= 100; i+=100) { for (float j = -100; j <= 100; j+=100) { leavesBlock(i, 500, j); } } leavesBlock(0, 600, 0); leavesBlock(-100, 600, 0); leavesBlock(100, 600, 0); leavesBlock(0, 600, 100); leavesBlock(0, 600, -100); popMatrix(); } // Grass block void grassBlock(float bx, float by, float bz) { pushMatrix(); translate(bx, by-7, bz); fill(100, 63, 25); box(100, 85, 100); translate(0, 50); fill(70, 128, 23); box(100, 15, 100); popMatrix(); } // Sand block void sandBlock(float bx, float by, float bz) { pushMatrix(); translate(bx, by, bz); fill(194, 178, 128); box(100); popMatrix(); } // Wood block void woodBlock(float bx, float by, float bz) { pushMatrix(); translate(bx, by, bz); fill(199, 147, 69); box(80, 100, 80); pushMatrix(); translate(0, 0, -45); fill(92, 52, 8); box(100, 100, 10); popMatrix(); pushMatrix(); translate(0, 0, 45); fill(92, 52, 8); box(100, 100, 10); popMatrix(); pushMatrix(); translate(-45, 0, 0); fill(92, 52, 8); box(10, 100, 100); popMatrix(); pushMatrix(); translate(45, 0, 0); fill(92, 52, 8); box(10, 100, 100); popMatrix(); popMatrix(); } // Stone block void stoneBlock(float bx, float by, float bz) { pushMatrix(); translate(bx, by, bz); fill(130, 130, 130); box(100); popMatrix(); } // Water block void waterBlock(float bx, float by, float bz) { pushMatrix(); translate(bx, by, bz); fill(0, 100, 255, 50); box(100); popMatrix(); } // Lava block void lavaBlock(float bx, float by, float bz) { pushMatrix(); translate(bx, by, bz); fill(255, 75, 0, 200); box(100); popMatrix(); } // Leaves block void leavesBlock(float bx, float by, float bz) { pushMatrix(); translate(bx, by, bz); fill(57, 107, 23); pushMatrix(); translate(0, 0, -50); drawLeaf(); popMatrix(); pushMatrix(); translate(0, -50, 7.5); rotateX(89.5); drawLeaf(); popMatrix(); pushMatrix(); translate(0, 0, 50); drawLeaf(); popMatrix(); pushMatrix(); translate(0, 50, 7.5); rotateX(89.5); drawLeaf(); popMatrix(); pushMatrix(); translate(-50, 0, 7.5); rotateY(89.5); rotateZ(89.5); drawLeaf(); popMatrix(); pushMatrix(); translate(50, 0, 7.5); rotateX(89.5); rotateY(89.5); drawLeaf(); popMatrix(); popMatrix(); } // Snow block void snowBlock(float bx, float by, float bz) { pushMatrix(); translate(bx, by-7, bz); fill(100, 63, 25); box(100, 85, 100); translate(0, 50); fill(245, 253, 255); box(100, 15, 100); popMatrix(); } // Leaves void drawLeaf() { for (float i = x-100; i<100; i+=13) { for (float j = y-100; j<100; j+=13) { pushMatrix(); translate(i-50, j-50); box(10, 7, 1); popMatrix(); } } }
I'm trying to remember -- does the QueasyCam FPS example sketch already have collision detection in it?
Answers
elaborate.
https://forum.processing.org/two/discussion/comment/102262/#Comment_102262
I mean collision between you and the boxes, so that you hit the boxes instead of going through them. Here's my code:
I'm trying to remember -- does the QueasyCam FPS example sketch already have collision detection in it?