pbInfo.ro
Probleme
Probleme - clasa a IX-a
Probleme - clasa a X-a
Probleme - clasa a XI-a
Probleme din concursuri
Căutare problemă
Exerciții
Programează cu Blockly
Desenează cu Processing
Exersează SQL
Soluţii
Resurse
Resurse pentru clasa a IX-a
Resurse pentru clasa a X-a
Resurse pentru clasa a XI-a
Subiecte bacalaureat
Ajutor
Autentificare
Înregistrare
Autentificare
Utilizator sau email
Parola
Acest site foloseşte cookies. Navigând în continuare, vă exprimaţi acordul asupra folosirii cookie-urilor.
Îti place pbInfo? Atunci acceptă-l cu totul! Dezactivează modulul de blocare a reclamelor!
Lista scripturi
Script Nou
Ajutor
"Minecraft 3D" - Processing
ID
Autor
Duplicat din
Ultima modificare
#6180
6B - Dumitrache Nicolae (Nicky_Dumitrache)
-
Joi, 15 aug 2024, 23:08
let bs = 20; // Block size. let bh = 8*bs; // Block height. let freq = bs*32; // Perlin frequency. let amp = bs*3; // Perlin amplitude. let grass; // Grass texture. let soil; let mc = true; // Minecraft look? let pos = 0; // Position in Perlin terrain. let rows = 24; // How many blocks? let cols = 24; function preload(){ // soil = loadImage('soil.jpg'); // grass = loadImage('grass.png'); } function setup() { createCanvas(600, 400, WEBGL); angleMode(DEGREES); strokeWeight(1); noiseSeed(99); // Offset in Perlin terrain, to avoid // mirroring of terrain features. adjust = floor(bs*999); // Centre mouse. mouseX = 0; mouseY = width*0.5; // Determine number of blocks across // by width of display. cols = (width*2)/bs; // Or not! cols = rows; genTerrain(); } // Toggle 'minecraft' look. function mousePressed(){ mc = !mc; genTerrain(); } function draw(){ genTerrain(); } function genTerrain(){ background(0,64,255); push(); // Lighting. let locX = mouseX - width * 0.5; pointLight(255, 255, 0, locX, -1000, 2000); // Positioning of camera. translate(0,height*1.6,-700); rotateX(-45); // Steer left and right. rot = map(mouseX, 0, width, 22, -22); rotateY(rot); // Move through Perlin terrain. // Note how speed here ('bs*3') is // derived from block size (bs). pos += bs*3; // Our grid of blocks. for (let z = -rows; z < 0; z++){ for (let x = -cols*0.5; x < cols*0.5; x++){ push(); // Perlin noise to derive y-pos // of each block. let y = noise((adjust+x*bs)/freq, (adjust+z*bs-pos)/freq)*amp; // If 'minecraft' mode of appearance, // round down y pos to a whole number, // and draw black block outlines. if (mc) { y = floor(y); stroke(0); } else { noStroke(); } // Translate to block pos. translate(x*bs, floor(-y*bs), floor(z*bs)); //texture(soil); specularMaterial(200,200,32); shininess(1); box(bs,bh,bs); // Now translate to just above block // to draw another, flat block to // serve as grass. translate(0,-bh*0.5,0); //texture(grass); specularMaterial(0,255,0); // White 'snow' if at particular height. if (y > 32)emissiveMaterial(255); shininess(100); box(bs,bs*0.1,bs); pop(); } } pop(); }
Duplicare
Executare
Cod
Cod HTML
<iframe sandbox="allow-scripts" src="/p5js/index.php?id=6180" style="width:408px; height:408px;border:solid 1px gray; overflow: scroll;"></iframe>
Duplicare script
Denumirea noului script
Du-te sus!