53 lines
1.2 KiB
JavaScript
53 lines
1.2 KiB
JavaScript
class Walker {
|
|
constructor(x = 0, y = 0) {
|
|
this.position = createVector(x, y)
|
|
this.velocity = createVector(0, 0)
|
|
this.accelaration = createVector(0, 0)
|
|
}
|
|
|
|
step() {
|
|
let target = createVector(mouseX, mouseY)
|
|
let difference = p5.Vector.sub(target, this.position)
|
|
this.accelaration = difference.copy()
|
|
this.accelaration.setMag(1000/difference.mag())
|
|
|
|
const dt = deltaTime/1000
|
|
this.velocity.add(p5.Vector.mult(this.accelaration, dt))
|
|
this.position.add(p5.Vector.mult(this.velocity, dt))
|
|
|
|
|
|
if (this.position.x < 0) {
|
|
this.position.x += width
|
|
}
|
|
if (this.position.x > width) {
|
|
this.position.x -= width
|
|
}
|
|
|
|
if (this.position.y < 0) {
|
|
this.position.y += height
|
|
}
|
|
if (this.position.y > height) {
|
|
this.position.y -= height
|
|
}
|
|
}
|
|
|
|
draw() {
|
|
stroke(0)
|
|
circle(this.position.x, this.position.y, 20)
|
|
}
|
|
}
|
|
|
|
let walker
|
|
|
|
function setup() {
|
|
createCanvas(640, 240)
|
|
background(255)
|
|
walker = new Walker(width/2, height/2)
|
|
}
|
|
|
|
function draw() {
|
|
background(255)
|
|
walker.step()
|
|
walker.draw()
|
|
}
|