xxxxxxxxxx
94
function setup() {
createCanvas(600, 400);
}
let time = 0
let xo = 0
function draw() {
dt = round(deltaTime/1000,3)
if(dt < 1){ // prevents issues from being offscreen
time += round(deltaTime/1000,3)
if(dt > 1) print(dt)
if(xo > 20) print("xo: " + xo + " time: " + time)
background(0,10,3);
fill(0,10,3);
stroke(0,160,40)
strokeWeight(4)
rect(-10,224,200,10)
rect(-10,236,300,15)
if(time%5 < 0.2){
fill(0,160,40)
rect(300,184,300,32)
fill(0,10,3);
}
rect(-10,252,100,60)
rect(-10,312,20,60)
triangle(-10,360,-10,410,140,410)
rect(-10,153,180,25)
rect(30,120,10,30)
rect(-10,120,40,30)
noStroke()
rect(380 + (time%5)*10000,184,60,32)
stroke(0,160,40)
push()
if(time%5<0.5){
xo = -sin((time%5)*PI*1.5)*100
}else if(time%5 >= 0.5 && time%5 < 2.2){
xo += 43*dt
}else{
xo = round(xo)
}
translate(xo,0)
rect(40,180,400,40) // cannon
rect(60,185,60,30) // breach
if((time%5) < 2.8) rect(62,190,40,20)
let open = (time%5 > 2.5 && time%5 < 4)? max(0,min(60, ( sin( ((time%5)-2.5)*PI )*100 ) )):0
rect(60+open,185,60-open,30)
if(time%5 < 0.2) fill(0,160,40)
rect(390,185,10,30) // vents
rect(405,185,10,30)
rect(420,185,10,30)
pop()
push()
translate(xo/5,0)
rect(-10,180,49,40)
pop()
// casing eject
if(time%5 > 2.8){
push()
translate(82-( (time%5 - 2.8) * 180 ),200 - sin((time%5 - 2.8)*4 )*80)
rotate(time%5*PI*-4)
rect(-20,-10,40,20)
pop()
}
}
}