首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >p5.play中利用不可移动物体进行碰撞检测的尝试

p5.play中利用不可移动物体进行碰撞检测的尝试
EN

Stack Overflow用户
提问于 2022-10-07 13:07:56
回答 1查看 52关注 0票数 0

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

然而,我似乎找不出使精灵对碰撞检测的反应正确的确切方法,因为墙壁似乎附着在玩家sprite (?)当它被碰撞,而不是停留在原地,这是它的本意。

代码语言:javascript
复制
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)

}
EN

回答 1

Stack Overflow用户

发布于 2022-11-02 17:50:32

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

它具有大量的二维碰撞函数。对于您的使用,您正在寻找collideRectRect。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73987635

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档