【问题标题】:CreateJS Collision DetectionCreateJS 碰撞检测
【发布时间】:2014-08-21 01:51:21
【问题描述】:

我在设置碰撞检测时遇到问题。我已经关注了这个论坛和网络上的一些帖子,但似乎无法让它发挥作用。我正在尝试使用位于函数中的方形边界框方法。

Square 是随着用户输入在画布上移动的形状,impactSquare 是我试图测试影响的静止形状。我似乎无法弄清楚是什么部分导致它不起作用。

//square bounding box
if (impactSquare.x < square.x + square.width &&
    impactSquare.x + impactSquare.width > square.x &&
    impactSquare.y < square.y + square.height &&
    impactSquare.height + impactSquare.y > square.y) {
    // collision detected!
    //square.graphics.beginFill("#F4F4F4");
    console.log("Collision Detected");
} else {
    // no collision
    //square.graphics.beginFill("#FF0000");
    console.log("No Collision"); 
}
//stage.update();

感谢您提供的帮助!

【问题讨论】:

  • 您能否提供jsfiddle.net(和/或)控制台中出现的任何错误消息?仅从该代码中,我看不到碰撞问题。这段代码多久调用一次?
  • 就是这样,我没有收到任何错误 =) 如果我添加一个 Ticker 调用,它只会一遍又一遍地写“无影响”,即使应该有碰撞。我正在调用函数 detectCollision();在我的 init() 中;功能。
  • 但是这个碰撞函数并没有什么问题(假设其他一切都正确),请看这里的 Fiddle:jsfiddle.net/AniHouse/zxe2a5aL

标签: javascript createjs


【解决方案1】:

您可能遇到问题,因为您正在尝试像素完美的 hitTest。

在这里,使用这个:https://github.com/olsn/Collision-Detection-for-EaselJS 就像一个魅力。

如果路口是空的,那是因为没有碰撞。

if (intersection !== null) {
   //  hit
} 

干杯,

【讨论】:

  • 这是bounding box碰撞检测,效率高,经常使用。我做过无数次这样的碰撞检测。我不明白你为什么认为它有问题。
  • 我的所有代码都可以在这里找到:Link
  • 将我的形状更改为位图/jpg 并且 Collision-Detection-for-EaselJS 效果很好!但它不适用于形状,因此您必须使用位图。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-05
  • 2019-04-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多