【问题标题】:Javascript collision detection on canvas画布上的 Javascript 碰撞检测
【发布时间】:2014-02-16 00:54:51
【问题描述】:

我正在努力为剑和敌人编写碰撞检测。尝试使用变量 swdX 和 swdY 为剑实现坐标会导致剑变形而不是跟随角色并保持形状。

我使用的碰撞码是

//subtract hp enemy on sword swing
if (swdX == enmX){
    enmhplevel--;
}

但是,我的 swdX 输出从未显示 swdX 发生变化。

可以在此处找到链接。

http://jsfiddle.net/Qt7zd/3/

Pointy - 我所有的代码都在 JSfiddle 上。我尝试用

更新循环
swdX == posX +80;
swdY == posY -40; 

但是,这不会更新坐标。你有什么指点吗?

【问题讨论】:

  • 这就是你的全部代码吗?在“swdX”初始化后,没有任何东西会为其分配新值;你为什么希望它改变?
  • '已经断了剑'并不是对问题的准确描述。就目前而言,我会推荐一个铁匠。
  • 吸地毯的人。停止吸地毯,你可能会意识到铁匠对电脑没什么用处。
  • 我推荐你使用 bacon.js

标签: javascript canvas collision-detection game-physics


【解决方案1】:

swdX = posX +80; swdY = posY -40; 添加到循环中确实可以很好地更新坐标。然而,在你的问题中,你有==,这不是赋值,它是一个等于运算符。

那么你在这个例子中的碰撞检测需要扩展以适应敌人的半径(所以如果点在敌人内部的任何地方,剑就会击中,而不仅仅是在它的中心),以及剑的角度(所以当剑在不在敌人身上的某个地方旋转时它不会击中)。

if ((swdX >= enmX - 30 || swdX > enmX + 30) && (Z % 360 >= 10 && Z % 360 < 60)) {
    enmhplevel--;
}

对于游戏,您肯定需要摆脱硬编码的常量,考虑 y 方向,考虑剑尖何时穿过敌人等,但示例在这里有效:http://jsfiddle.net/j84zU/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-07-03
    • 1970-01-01
    • 2017-08-28
    • 2021-04-12
    • 1970-01-01
    • 2014-08-30
    • 2014-08-28
    • 1970-01-01
    相关资源
    最近更新 更多