【问题标题】:how do i make an objects continuously spawn on kaboom.js我如何使对象在 kaboom.js 上不断生成
【发布时间】:2022-12-17 10:16:25
【问题描述】:

当我射击小行星时,它们会消失,这正是我想要的,但是我希望产生更多的小行星,而不是它们永远消失。我不确定要在此代码中添加什么以在游戏中产生更多的小行星。

任何帮助表示赞赏

我认为将小行星的数量设为常数可以确保屏幕上始终显示 5 颗小行星,但这似乎不起作用

// the asteroids

 const NUM_ASTERIODS = 3;

for (let i = 0; i < NUM_ASTERIODS; i++) {
  var spawnPoint = asteroidSpawnPoint();
  var a = add([
      sprite("asteroid"),
      pos(spawnPoint),
      rotate(rand(1,90)),
      origin("center"),
      area(),
      scale(0.2),      
      solid(),
      "asteroid",
      "mobile",
      "wraps",
      {
          speed: rand(5, 10),
          initializing: true
      }
  ]);

while (a.isColliding("mobile")) {
  spawnPoint = asteroidSpawnPoint();
  a.pos = spawnPoint;
  a.pushOutAll();
}

a.initializing = false;
  a.pushOutAll();



}

function asteroidSpawnPoint() {
   // spawn randomly at the edge of the scene
   return choose([rand(vec2(0), vec2(width(), 0)),
           rand(vec2(0), vec2(0, height())),
           rand(vec2(0, height()), vec2(width(), height())),
           rand(vec2(width(), 0), vec2(width(), height()))]);
}


【问题讨论】:

    标签: game-development spawning kaboom


    【解决方案1】:

    尝试从屏幕顶部生成连续的精灵时,我遇到了类似的问题。我发现以下代码可以在屏幕顶部(y 轴)的随机位置(x 轴)生成我的精灵。

    Kaboom 建议在他们的教程中使用递归函数中的 wait() 方法,这样可以避免使用循环并允许您控制生成的频率。

     function spawnAsteroid() {
        add([sprite('asteroid'),
        pos(rand(width()), 0),
        origin(),
        body(),
        'dangerous'
        ])
    
        wait(rand(0.5, 1), spawnAsteroid);
    
      }
    
      spawnAsteroid();
    

    【讨论】:

      猜你喜欢
      • 2013-10-12
      • 2022-11-28
      • 1970-01-01
      • 2020-08-02
      • 2014-07-17
      • 1970-01-01
      • 2022-06-30
      • 2014-12-02
      • 2019-10-18
      相关资源
      最近更新 更多