Javascript 保持每秒生成一个对象
我有一个功能,可以将随机块对象添加到场景中,并将其在屏幕上向下移动Javascript 保持每秒生成一个对象,javascript,three.js,Javascript,Three.js,我有一个功能,可以将随机块对象添加到场景中,并将其在屏幕上向下移动 function enemyPaddleMovement() { scene.add(RandomBlock); RandomBlock.translateX(-8); } 随机块由以下代码生成: var shapes = [LeftBlock, RightBlock, middleRightBlock, middleLeftBlock, middleBlock]; var shape = shapes[Math.floor(
function enemyPaddleMovement()
{
scene.add(RandomBlock);
RandomBlock.translateX(-8);
}
随机块由以下代码生成:
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对象,而不是每次都创建一个新对象
有什么帮助吗?您还需要存储此新对象。我认为您覆盖了旧对象,这就是重新创建的原因。
您可以使用BlockContainer代替RandomBlock,它将是一个列表。这个问题实际上根本不涉及Three.js;只是你没有创造任何新的对象,而是多次重复使用同一个对象。请尝试以下方法:
// this line stays outside the function
var shapes = [LeftBlock, RightBlock, middleRightBlock, middleLeftBlock, middleBlock];
请注意,在函数之外不再提到randomBlock
。这是因为它是该函数的一次调用的对象,并且是该函数的唯一对象
我假设你想为每个新对象选择不同的形状。如果没有,则只需将
var shape=…
移回函数外部。您尝试的代码在哪里?var block=function(){RandomBlock=new THREE.Object3D();RandomBlock.add(shape);}setInterval(block,1000);试试这个var block=function(){var RandomBlock=new THREE.Object3D();RandomBlock.add(shape);return RandomBlock;}setInterval(block,1000)代码>什么也没发生,谢谢回复:)谢谢回复,我尝试了你的解决方案,但没有成功。这让我想到了我的代码结构,我想问题可能就在那里。
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);
}