Невозможно прочесть свойство 'position' для undefined работает в функции отображения, но не в прыжке - PullRequest
0 голосов
/ 25 мая 2020

Я использую библиотеку p5. js andatter. js (liabru).

Следующее сообщение возвращает ошибку «Не удается прочитать свойство 'position' of undefined»

jump(){
    this.body.position.y -= 20
  }

пока что, когда он вставлен в функцию отображения, например

  display(){
    var angle = this.body.angle;
    push();
    translate(this.body.position.x, this.body.position.y);
    rotate(angle);
    imageMode(CENTER);
    image(this.image, 0, 0, this.width, this.height);
    this.body.position.y -= 20
    pop();
  }

, похоже, он работает нормально.

Код всего класса

class Player {
  constructor(x, y, width, height, angle) {
    var options = {
        'restitution':0.8,
        'friction':1.0,
        'density':1.0
    }
    this.body = Bodies.rectangle(x, y, width, height, options);
    this.width = width;
    this.height = height;
    this.image = loadImage("images/bike.png");
    World.add(world, this.body);
  }
  display(){
    var angle = this.body.angle;
    push();
    translate(this.body.position.x, this.body.position.y);
    rotate(angle);
    imageMode(CENTER);
    image(this.image, 0, 0, this.width, this.height);

    pop();
  }

  jump(){
    this.body.position.y -= 20
  }

  shoot() {
    bullet1 = new bullet(displayWidth/4,displayHeight-500,100,100) 
    var force = 10;

        var deltaVector = Matter.Vector.sub(mouse.position, bullet1.position);
        var normalizedDelta = Matter.Vector.normalise(deltaVector);
        var forceVector = Matter.Vector.mult(normalizedDelta, force);
        Matter.bullet1.applyForce(bullet1.body, bullet1.position, forceVector);
  }

}

...