我正在尝试解决一个从https://pdm.lsupathways.org/2_graphics/3_bugsquish/2_lesson_2/sprite-interactivity-1/制作一个游戏的练习问题,他们要求你创建一个长方形精灵,作为一种可以将可移动玩家精灵保持在屏幕内的边界的方法。这个想法是玩家精灵会撞到“墙壁”,而墙会起到屏障的作用,阻止它走出屏幕。
然而,我似乎找不出使精灵对碰撞检测的反应正确的确切方法,因为墙壁似乎附着在玩家sprite (?)当它被碰撞,而不是停留在原地,这是它的本意。
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)
}发布于 2022-11-02 17:50:32
您应该看看这个库https://github.com/bmoren/p5.collide2D。
它具有大量的二维碰撞函数。对于您的使用,您正在寻找collideRectRect。
https://stackoverflow.com/questions/73987635
复制相似问题