如何让球在物体周围移动?

时间:2014-12-21 19:30:38

标签: processing

在下面的程序中,我希望球绕着圆圈移动,而不是通过它。球应该始终跟随鼠标,永远不要停止移动。有帮助吗?感谢。

PVector position = new PVector(0,0);
PVector velocity = new PVector();

void setup()
{
  size(600,600);
}

void draw()
{
  background(0);
  ellipse(width/2,height/2,100,100);
  ellipse(position.x,position.y,20,20);

  float angle = atan2(mouseY - position.y, mouseX - position.x);
  velocity = new PVector(cos(angle), sin(angle));
  velocity.mult(5);
  position.add(velocity);

  if(dist(width/2,height/2,position.x,position.y) < 100)
  {
    position.add(new PVector(0,5));
  }
}

1 个答案:

答案 0 :(得分:1)

有很多方法可以做到这一点。这实际上取决于你正在努力实现的目标。

最基本的,你可以像你一样尝试使用dist()函数,但不要总是将(0,5)添加到该位置,让它移动来自圈子。

您还可以查看名为潜在字段的内容。谷歌是你的朋友,但基本上,使用圆圈的位置和鼠标的位置来加权屏幕上的每个位置。位置越接近圆圈,您从圆圈移动远离的重量就越大。位置离鼠标越远,移动鼠标移动的重量就越大。

另外,请参阅Processing编辑器附带的示例。在圈子之间进行碰撞有几个例子。