每秒保持产卵对象

时间:2014-07-20 12:40:12

标签: javascript three.js

我有一个函数可以将RandomBlock对象添加到场景中并将其移到屏幕上。

function enemyPaddleMovement()
{
scene.add(RandomBlock);
RandomBlock.translateX(-8);
}

RandomBlock由以下代码制作:

var shapes = [LeftBlock, RightBlock, middleRightBlock, middleLeftBlock, middleBlock];
var shape = shapes[Math.floor(Math.random()*shapes.length)];`

RandomBlock = new THREE.Object3D();
RandomBlock.add(shape);

我想要做的是每秒产生一个新的RandomBlock对象并将其向下移动到屏幕上。我尝试使用setInterval,但它只替换相同的RandomBlock对象,而不是每次都创建一个新对象。

任何帮助?

2 个答案:

答案 0 :(得分:0)

您还需要存储此新对象。我认为你覆盖旧对象,这就是重新创建的原因。 您可以使用BlockContainer代替RandomBlock,这将是一个列表。

答案 1 :(得分:0)

这个问题实际上根本不涉及Three.js;只是你没有制作任何新物品,你多次重复使用同一个物体。尝试这样的事情:

// this line stays outside the function
var shapes = [LeftBlock, RightBlock, middleRightBlock, middleLeftBlock, middleBlock];
function enemyPaddleMovement()
{
    var shape = shapes[Math.floor(Math.random()*shapes.length)];
    var randomBlock = new THREE.Object3D();
    randomBlock.add(shape);
    scene.add(randomBlock);
    randomBlock.translateX(-8);
}

请注意,该功能之外不再提及randomBlock。这是因为的一个对象是函数的一次调用并且是唯一的。

我假设您想为每个新对象选择不同的形状。如果你没有,那么只需将var shape = ...移回功能之外。