【问题标题】:Trying to make collision detection work using immovable objects in p5.play尝试使用 p5.play 中的不可移动对象进行碰撞检测
【发布时间】:2022-11-03 01:51:16
【问题描述】:

我正在尝试解决从https://pdm.lsupathways.org/2_graphics/3_bugsquish/2_lesson_2/sprite-interactivity-1/ 制作游戏的练习问题,他们要求您创建细长的矩形精灵作为创建可以将可移动玩家精灵保持在屏幕内的边框的方法。这个想法是玩家精灵会撞到“墙壁”,而墙壁将充当阻止它离开屏幕的屏障。

但是,我似乎无法弄清楚使精灵对碰撞检测的响应正确工作的确切方法,因为墙壁似乎会在与玩家精灵(?)发生碰撞时将其自身连接到玩家精灵(?)而不是保持原状。 .

let walls;

let ball, player, wall1, wall2, wall3, wall4;

function setup() {
  createCanvas(600, 600);
  
  
  
  ball = createSprite(300, 300, 20,20);
  ball.shapeColor = [0,0,0];
  
  player = createSprite(50, 300, 25, 75);
  player.shapeColor = [20, 200, 20];
  
  walls = new Group();
  
  wall1 = createSprite(width/2, 0, width, 10);
  
  wall2 = createSprite(0, height/2, 10, height);
  
  wall3 = createSprite(width/2, height, width, 10);
  
  wall4 = createSprite(width, height/2, 10, height);
  
  walls.add(wall1)
  walls.add(wall2)
  walls.add(wall3)
  walls.add(wall4)
 
  walls.immovable = true;
}

function draw() {
  background(220);
 drawSprites();
  
    if (keyIsDown(LEFT_ARROW)) {
    player.setSpeed(10, 180);
  } else if (keyIsDown(RIGHT_ARROW)) {
    player.setSpeed(10, 0);
  } else if (keyIsDown(UP_ARROW)) {
    player.setSpeed(10, 270);
  } else if (keyIsDown(DOWN_ARROW)) {
    player.setSpeed(10, 90);
  }
  player.bounce(ball)
  ball.collide(walls)
  player.bounce(walls)

}
  

【问题讨论】:

    标签: javascript collision-detection p5.js


    【解决方案1】:

    你应该看看这个库https://github.com/bmoren/p5.collide2D

    它有很多二维碰撞功能。为了您的使用,您可能正在寻找 collideRectRect。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-08-27
      • 2016-02-24
      • 1970-01-01
      • 1970-01-01
      • 2010-11-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多