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