将对象移动到另一个对象,在tween.js中创建动画

时间:2015-12-12 03:21:40

标签: javascript animation tween.js

我有一个对象是一条线。我想用一个移动线的所有顶点的对象制作一个动画,它可以是一个球体。为此,我将使用tween.js。我的问题是我无法实现其所有顶点动画。如何让动画从起点到终点显示?我有这段代码:

enter image description here

//myline.geometry.vertices  -> array with vertices of the line (1000 vertices for example)
//myline.geometry.vertices[0]=>x:1,y:2:z:0;
//myline.geometry.vertices[1]=>x:3,y:5:z:0;
//...
new TWEEN.Tween( mysphere.position ).to( { x: myline.geometry.vertices[0].x, y: myline.geometry.vertices[0].y, z: myline.geometry.vertices[0].z }, 9000 ).to( { x: myline.geometry.vertices[1].x, y: myline.geometry.vertices[1].y, z: myline.geometry.vertices[1].z }, 9000 ).delay(2000).start(); 

我使用“.to”方法并且效果很好,如果我将顶点移动到我要移动的位置。但如果我有1000个顶点,我将不得不把它们全部放入。我能做什么?。 。我需要沿着一条线移动一个球体。

1 个答案:

答案 0 :(得分:1)

您可以简单地创建一个循环,指定每个顶点的过渡。您还需要将球体的位置设置为前一个顶点,否则将缓存位置,并且每个补间将在执行循环之前从球体的位置开始。此外,由于这些补间在循环内执行得如此之快,因此您需要指定延迟,以便转换可以在正确的时间开始。

// Get the vertices for each line.
var vertices = line.geometry.vertices;
// Specify the duration for each tween.
var duration = 500;
// Iterate through each vertex in the line, starting at 1.
for (var i = 1, len = vertices.length; i < len; i++) {
    // Set the position of the sphere to the previous vertex.
    sphere.position.copy(vertices[i - 1]);
    // Create the tween from the current sphere position to the current vertex.
    new TWEEN.Tween(sphere.position).to(vertices[i], duration).delay(i * duration).start();
}