javascript - 碰撞检测p5.js

标签 javascript collision detection p5.js pong

只是想在 p5.js 中制作一个简单的乒乓球游戏。我最近接触了 JavaScript,无法弄清楚球和球棒之间的碰撞检测。我已经尝试了几种方法来做到这一点,但它主要只是阻止了我的代码运行......等等......希望得到任何帮助!

这是我的源代码:

function setup() {     
  createCanvas(750, 750);
    } 

var x = 50;    
var y = 50;    
var direction = 5;    
var arrow = 0;    
var ball;    
var bat;

function draw() {     
  background(220);    
  fill ('white');    
  ball = ellipse (x, y, 50, 50);    
  x = x + direction;

  if (x > width - 25){    
    direction = -5;    
  }

  if (x < 25) {    
    direction = 5;    
  }

  x++;    
  y++;

  if (keyIsDown(RIGHT_ARROW)){    
    arrow += 7;    
  }

  if (keyIsDown(LEFT_ARROW)){    
    arrow += -7;    
  }

  fill ('black');    
  bat = rect(arrow, 600, 150, 15);
  }

最佳答案

你的问题很宽泛,但基本上你想做的是在球周围想象一个“边界矩形”,然后使用矩形-矩形碰撞来检查球是否与桨碰撞。如果是,则通过将球的水平速度乘以 -1 来“反弹”球。

我写了一篇关于碰撞检测的教程可用here , 但基本的 if 语句如下所示:

if(rectOneRight > rectTwoLeft && rectOneLeft < rectTwoRight && rectOneBottom > rectTwoTop && rectOneTop < rectTwoBottom){

您可能还想阅读该教程的Collision Detection with Moving Objects部分。它是为 Processing 编写的,但也适用于 P5.js。

如果您在使用它时遇到问题,那么请从更基本的草图重新开始,该草图仅显示两个硬编码的矩形。当它们没有碰撞时让它们变成红色。然后从那里开始工作。很难回答一般性的“我该怎么做”类型的问题,所以如果您发布特定的“我试过 X,期望 Y,但得到的是 Z”类型的问题,您的运气会好得多。祝你好运。

关于javascript - 碰撞检测p5.js,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45650655/

相关文章:

swift - 初学者 swift Sprite 工具包 - 节点碰撞检测帮助(SKPhysicsContact)

c - Features2d 中的函数检测

iphone - 基于接近度的设备通信或通知

r - 在嘈杂的时间序列中检测循环最大值(峰值)(在 R 中?)

javascript - 使用 Javascript 计算圆的周长和面积 - 函数不起作用

javascript - 如果所有复选框都具有相同的名称,如何验证复选框选择?

javascript - PHP计时器在刷新页面时停止重新启动

java - Java中如何在当前类中引用不同类的实例

javascript - React-router 自动将任何路由重定向到 root "/"除了 "/main"

java - 矩形之间的碰撞