我有一个函数可以将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对象,而不是每次都创建一个新对象。
任何帮助?
答案 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 = ...
移回功能之外。