【问题标题】:How to prevent overlap in p5.js如何防止 p5.js 中的重叠
【发布时间】:2018-05-21 07:36:56
【问题描述】:

阅读之前: 这是 P5.js https://p5js.org

好的,我要问的问题的一个简单形式是这样,看下面的代码:

function setup() {
    createCanvas(1000,650);
}

var x = 0;
function draw() {

    background(200,200,200);

    if(x+50<750){x+=17;}
    fill(0,0,0);
    rect(750,0,250,550);
    fill(0,0,255);
    rect(x,height/2,50,50);


}

如果你运行它,正方形将“越过”黑色屏障而不是停在它旁边,因为增量是 17,而如果增量是 1,它会完美地执行。我试图将帧速率提高到 6000,但由于显而易见的原因,这不起作用。 这只是一个例子,但我如何(我正在制作平台物理)有一个动态的方法来使广场与障碍物顺利碰撞?

【问题讨论】:

  • 无耻的自我推销:查看this tutorial 的碰撞检测。这是用于处理的,但所有相同的想法都适用于 P5.js。
  • 哈哈好吧__________
  • 它似乎在一帧中消失了。减慢帧速率(2);并将x速度更改为不规则数字...它会消失

标签: javascript processing collision-detection overlap p5.js


【解决方案1】:

您应该检查x 位置加上矩形的width 以检测碰撞。如果在处理新的x 时总和大于您的障碍物位置。这是如何处理它的简化示例。

function setup() {
  createCanvas(1000, 650);
}

var x = 0,
dir = 1,
rectSize = 50;

function draw() {
  var acc = 17 * dir,
      nextX = x + acc;
      if (nextX + rectSize > 750) {
        dir = -1;
        x = 750 - rectSize;
      } else if (nextX < 0 ) {
        dir = 1;
        x = 0;
      }
  background(200, 200, 200);
  fill(0, 0, 0);
  rect(750, 0, 250, 750);
  fill(0, 0, 255);
  rect(x, height / 2, rectSize, rectSize);

  x += acc;
}
&lt;script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/0.6.1/p5.min.js"&gt;&lt;/script&gt;

有用于碰撞检测的库p5.collide2D,我建议你检查一下。

【讨论】:

  • 我在 sn-p 中看到它仍然在碰撞时重叠
  • 我会看碰撞 2d
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-18
  • 1970-01-01
相关资源
最近更新 更多