在下面的程序中,我希望球绕着圆圈移动,而不是通过它。球应该始终跟随鼠标,永远不要停止移动。有帮助吗?感谢。
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));
}
}
答案 0 :(得分:1)
有很多方法可以做到这一点。这实际上取决于你正在努力实现的目标。
最基本的,你可以像你一样尝试使用dist()函数,但不要总是将(0,5)添加到该位置,让它移动远来自圈子。
您还可以查看名为潜在字段的内容。谷歌是你的朋友,但基本上,使用圆圈的位置和鼠标的位置来加权屏幕上的每个位置。位置越接近圆圈,您从圆圈移动远离的重量就越大。位置离鼠标越远,移动朝鼠标移动的重量就越大。
另外,请参阅Processing编辑器附带的示例。在圈子之间进行碰撞有几个例子。