首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么我的球下沉到地板上而不是反弹回来?

问为什么我的球下沉到地板上而不是反弹回来?
EN

Stack Overflow用户
提问于 2021-11-09 16:45:27
回答 1查看 61关注 0票数 0

我不明白为什么它会掉到地板上。我猜是因为它在地板下面出了点故障,然后速度变成了负值,持续了无限长的时间。我只是不知道该怎么解决它

代码语言:javascript
复制
var gravity = 9.8
var velocity = 5;
var circleOne;

function setup() {
  createCanvas(400, 400);
  circleOne = new newCircle(200, 50, 50, "black");
}

function draw() {
  background("white");
  circleOne.display();
  circleOne.bounce();
}


class newCircle {
  constructor(x,y,radius,color) {
    this.x = x
    this.y = y
    this.radius = radius
    this.color = color
    this.velocity = 1;
  }
  
  display() {
    fill(this.color)
    ellipse(this.x,this.y,this.radius);
  }
  
  bounce() {
    if (this.y + this.radius > height) {
      this.velocity = -this.velocity * 0.5
    }
    else if (this.y < 0) {
      this.velocity = -this.velocity * 0.5
    }
    else  {
      this.velocity += 1;
    }
    this.y += this.velocity
    
  }
}
EN

回答 1

Stack Overflow用户

发布于 2021-11-09 20:18:27

您已经告诉球在每次到达某个点以下时翻转速度。但是翻转速度并不一定意味着球在下一帧将高于阈值。因此,如果球连续两帧低于阈值,它将翻转两次,使速度与两帧前完全相同。

球会下沉,因为速度一旦太低,每一帧都会翻转。

在翻转速度时,应将额外的布尔值设置为true,然后确保只要此布尔值为true,就不要再次翻转它。当球超过阈值时,可以将布尔值重新设置为false。

然而,如果你的目标是做一个更复杂的物理引擎,我强烈建议你阅读this article。过去在我自己的物理引擎上工作时,它帮了我很大的忙。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69901954

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档