尝试使用p5.play中的不可移动对象来进行碰撞检测



我正试图解决一个制作游戏的练习问题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)
}

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

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

最新更新