1

p5.j​​s は初めてで、毎日より多くのことを学ぼうとしています。基本的に、私は現在粒子システムとオブジェクトについて学んでおり、コードの量に戸惑っています。とにかく、関数 mousePressed() で、作成したパーティクル (パーティクル システム) の配列が表示されるようにしたいと思います。また、パーティクル システムがマウスの位置を追跡できれば素晴らしいと思います。したがって、基本的に、画面上でマウスをクリックすると、パーティクルがその位置に表示され、マウスを追跡します。

コードに何が欠けているのかわかりません。私はそれの半分が何をしているのかについて少し迷っています(私の教授はそれをたくさん書いていました)。mousePressed 関数を追加すると、すべてがポットに送られます。圧倒されすぎて、何が欠けているのかわからないような気がします。ヘルプに加えて、私が何をする必要があるか、およびそのソリューションが機能する理由についての詳細な洞察をいただければ幸いです。ありがとうございました!

var particles = [];
var now = null;

function setup() {
  createCanvas(windowWidth, windowHeight);

}

function draw() {
  background(255, 25, 25);
  function mousePressed() {
  particles.push(new Particle(new p5.Vector(mouseX, mouseY)));


//particles.push(new Particle(new p5.Vector(width / 2, height / 1.5)));
  for (var i = 0; i < particles.length; i++) {
    // if our particle is dead, remove it
    if (particles[i].lifespan <= 0) {
      //splice is a way of removing a specific
      //element from an array
      particles.splice(i, 2);
    } else {
      particles[i].update();
      particles[i].display();
    }



      //this.particle = new ParticleSystem(createVector(mouseX, mouseY));
 // patricles.push(p);

    }
  }
}

function Particle(loc) {
  this.loc = loc;
  this.acc = new p5.Vector();
  this.vel = new p5.Vector(random(-100, 100), random(-2, 0));
  this.lifespan = 555;
}

Particle.prototype = {
  constructor: Particle,
  update: function() {
    this.vel.add(this.acc);
    this.loc.add(this.vel);
    this.lifespan -= 4.0;

  },
  display: function() {
    stroke(random(0), this.lifespan);
    fill(random(255), random(255), random(255))
    ellipse(this.loc.x, this.loc.y, 20, 20);
  }
}
4

1 に答える 1

1

まず第一に、あなたのmousePressed()関数はあなたの関数のdraw()にあります。それはあまり意味がありません。mousePressed()関数を関数と同じレベルにする必要がありますdraw()

function draw(){
   //draw code here
}

function mousePressed(){
   //mousePressed code here
}

私があなただったら、もっと小さく始めます。単一の楕円を描くプログラムを作成できますか? マウスをクリックしたときに単一の楕円が表示されるようにすることはできますか? 次に、その楕円をマウスに追従させることができますか? それだけで完全に機能する場合にのみ、複数の楕円を追加することを検討する必要があります。

あなたは最終目標から離れて逆戻りしようとしていますが、それはあなたを混乱させるだけです. 代わりに、可能な限り単純なスケッチから始めて、一度に 1 つの小さなステップを実行します。その後、行き詰まった場合は、特定の質問とともにMCVEを投稿できます。これにより、サポートが容易になります。

于 2016-04-11T15:51:53.397 に答える