xxxxxxxxxx
170
class Walker {
constructor(x, y, baseX, baseY, walkerStepping, walkerGreenSize) {
this.x = x;
this.y = y;
this.baseX = baseX;
this.baseY = baseY;
this.walkerStepping = walkerStepping;
this.walkerGreenSize = walkerGreenSize;
}
displayBon() {
//Bon
for ( let i=-50; i>-sizeY; i-=2) {
push();
translate(0, 0, i);
fill(255,10);
push();
rotateX(PI/2);
noStroke();
shininess(300);
specularMaterial(255);
noStroke();
cylinder(100*sin(i*0.05+2.25), 2, 24, 2);
pop();
pop();
}
//Root
stroke(180);
strokeWeight(10);
line(0,0, -75, 0,0, 0);
//platform Surface
push();
translate(0, 0, -sizeZ-10/2);
fill(255);
stroke(255);
strokeWeight(1);
box(sizeX*2, sizeY*2, 10);
pop();
//platform leg01
push();
translate(0+(sizeX-10/2), 0+(sizeY-10/2), -sizeZ-10/2-10);
fill(255);
stroke(255);
strokeWeight(1);
box(10, 10, 10);
pop();
//platform leg02
push();
translate(0-(sizeX-10/2), 0-(sizeY-10/2), -sizeZ-10/2-10);
fill(255);
stroke(255);
strokeWeight(1);
box(10, 10, 10);
pop();
//platform leg03
push();
translate(0-(sizeX-10/2), 0+(sizeY-10/2), -sizeZ-10/2-10);
fill(255);
stroke(255);
strokeWeight(1);
box(10, 10, 10);
pop();
push();
translate(0+(sizeX-10/2), 0-(sizeY-10/2), -sizeZ-10/2-10);
fill(255);
stroke(255);
strokeWeight(1);
box(10, 10, 10);
pop();
//red carpet
push();
translate(0,0,-sizeZ-30);
rotateX(PI/2);
stroke(255);
strokeWeight(1);
fill(255);
shininess(300);
specularMaterial(255);
noStroke();
cylinder(150, 5, 48, 2);
pop();
}
steps() {
let stepx = int(random(-2, 2));
let stepy = int(random(-2, 2));
this.x = this.x+10*random(2)*stepx;
this.y = this.y+10*random(2)*stepy;
this.x = constrain(this.x, this.baseX-sizeX, this.baseX+sizeX);
this.y = constrain(this.y, this.baseY-sizeY, this.baseY+sizeY);
}
collect() {
let storeSteps = createVector(this.x, this.y, t*200);
let greenSize = createVector(random(40, 50), random(40, 50), 40);//bigger
this.walkerStepping.push(storeSteps);
this.walkerGreenSize.push(greenSize);
}
treeGrow(){
if(repeat){
repeatingNumber = repeatingNumber + 1;
if(repeatingNumber > walkerStepping.length){
repeatingNumber = walkerStepping.length
}
}else{
repeatingNumber = walkerStepping.length
}
for (let i=0; i<repeatingNumber; i++) {
let nLoc01 = this.walkerStepping[i];
let nowGreenSize = this.walkerGreenSize[i];
//branches
if (i%50 == 0) {
stroke(255);
strokeWeight(2);
line(0, 0, 0, nLoc01.x-this.baseX, nLoc01.y-this.baseY, nLoc01.z);
}
if (i%5 == 0) {
push();
translate(nLoc01.x-this.baseX, nLoc01.y-this.baseY, nLoc01.z);
/*
let from = color('#FFD500'); //dark green
let to = color('#005BBB'); //light green
let colorValue = map(i, 0, walkerStepping.length, 0.0, 1.0);
let transColor = lerpColor(from, to, colorValue);
fill(transColor); //green
*/
shininess(300);
if(i<300){
fill(255, 213, 0, 224);
}else{
fill(0, 91, 187, 224);
}
//transColor.setAlpha(200);
noStroke();
shininess(100);
//box(nowGreenSize.x, nowGreenSize.y, nowGreenSize.z);
sphere(nowGreenSize.x/2);
pop();
}
}
}
}