Animation 在加工过程中设置形状集合动画的最简单方法?
我一直在学习处理,现在觉得画形状和编辑颜色等都很舒服。我试着为我以前的一个作品制作动画,但我似乎总是走到死胡同,或者我无法让这个单元连贯地移动。基本上,我正在尝试以任何方式在屏幕上移动这把吉他,只要它完好无损。如果您有什么建议,我将不胜感激 目前的代码如下:Animation 在加工过程中设置形状集合动画的最简单方法?,animation,processing,Animation,Processing,我一直在学习处理,现在觉得画形状和编辑颜色等都很舒服。我试着为我以前的一个作品制作动画,但我似乎总是走到死胡同,或者我无法让这个单元连贯地移动。基本上,我正在尝试以任何方式在屏幕上移动这把吉他,只要它完好无损。如果您有什么建议,我将不胜感激 目前的代码如下: void setup() { size(600,600); smooth(); noLoop(); } void draw() { //pegs strokeJoin(SQUARE); fill(255,255,
void setup() {
size(600,600);
smooth();
noLoop();
}
void draw() {
//pegs
strokeJoin(SQUARE);
fill(255,255,255);
rect(530,105,20,20);
rect(565,70,20,20);
rect(473,50,20,20);
rect(505,18,20,20);
//neck and head
strokeWeight(60);
strokeCap(SQUARE);
strokeJoin(ROUND);
stroke(165,42,42);
line(490,110,560,40);
fill(255,255,255);
strokeWeight(45);
strokeCap(SQUARE);
strokeJoin(ROUND);
line(300,295,500,105);
//guitar body
noStroke();
fill(222,184,135);
ellipse(200,400,200,200);
ellipse(280,310,150,150);
//Sound Hole
fill(255,140,0);
ellipse(235,360,110,110);
fill(0,0,0);
ellipse(235,360,100,100);
//strings
stroke(255,255,255);
strokeWeight(3);
line(170,390,540,40);
line(180,400,550,45);
line(195,410,560,50);
line(207,420,570,55);
//string attatchment bottom
strokeWeight(6);
strokeCap(SQUARE);
stroke(165,42,42);
line(210,425,170,385);
}
下面的代码将为吉他设置动画,使其沿正x轴移动。这只是一个示例,让您了解“动画”的实际工作原理:
// this will be used to move the guitar along x
int alongX = 0;
void setup() {
background(128);
size(600, 600);
smooth();
//noLoop();
}
void draw() {
background(128);
//pegs
strokeJoin(SQUARE);
fill(255, 255, 255);
rect(530+alongX, 105, 20, 20);
rect(565+alongX, 70, 20, 20);
rect(473+alongX, 50, 20, 20);
rect(505+alongX, 18, 20, 20);
//neck and head
strokeWeight(60);
strokeCap(SQUARE);
strokeJoin(ROUND);
stroke(165, 42, 42);
line(490+alongX, 110, 560+alongX, 40);
fill(255, 255, 255);
strokeWeight(45);
strokeCap(SQUARE);
strokeJoin(ROUND);
line(300+alongX, 295, 500+alongX, 105);
//guitar body
noStroke();
fill(222, 184, 135);
ellipse(200+alongX, 400, 200, 200);
ellipse(280+alongX, 310, 150, 150);
//Sound Hole
fill(255, 140, 0);
ellipse(235+alongX, 360, 110, 110);
fill(0, 0, 0);
ellipse(235+alongX, 360, 100, 100);
//strings
stroke(255, 255, 255);
strokeWeight(3);
line(170+alongX, 390, 540+alongX, 40);
line(180+alongX, 400, 550+alongX, 45);
line(195+alongX, 410, 560+alongX, 50);
line(207+alongX, 420, 570+alongX, 55);
//string attatchment bottom
strokeWeight(6);
strokeCap(SQUARE);
stroke(165, 42, 42);
line(210+alongX, 425, 170+alongX, 385);
// incrementing alongX to move it along +x, decrement it to move it along -x
alongX++;
}
这个想法很简单。动画基本上是一种运动错觉。对象看起来是在移动的,但效果非常简单,只需在屏幕上不同位置绘制和重画(以一定速度:帧速率
)对象,就可以让观看者感觉它们好像在移动,而实际上它们不是
要使此效果有效,草图(或任何其他动画包)中必须包含某些内容:
- 您需要有控制对象位置的变量,以便 要移动对象时,可以轻松更改值 以这样一种方式控制位置的变量 给人运动的错觉
- 在这种情况下,您还需要不断重新绘制背景。那个
这就是为什么我添加了
背景(128)在
draw()方法中的code>line。 如果你把那行注释掉,你会看到效果是 不同的吉他会留下痕迹(也许这就是你想要的 想要…一条以后会消失的轨迹吗?由你决定!)
你在草图中还需要考虑的另一件事是
rect
s和eliple
s只需要在中更改一个变量
命令它们从左向右移动(在这种情况下
草图),line
s需要由您的
变数
setup()
中的noLoop()
是专门设计的,因此您可以停止
draw()
从其无限循环
或游戏循环
但停止
draw()
表示没有动画效果。例如,您可以使用noLoop()
例如,在按下某个关键点时停止动画,但
还希望提供loop()
,以继续播放动画
按一个键。这些都是你需要思考的事情和决定
四处走动和玩耍在熟悉了移动物体的概念之后,我将研究向量,以及如何使用向量来设置物体的方向和速度。看一看正在处理的。足以让你使用PVectors。但我会在物体上这样做。例如,一个完整的
吉他
对象。不在单个行
s和rect
s上。在您的问题中添加语言标记。如果其他人看不到标记,则正在处理该语言。哦,对不起。我没有意识到。