如何在动画过程中检查对象是否击中了另一个对象。

杰瑞德·史密斯(Jared Smith)

您好,感谢您的宝贵时间和帮助。我正在使用HTML 5 Canvas构建迷你高尔夫游戏。我有一个高尔夫球,可以用特定的力量和方向击打它,并相应地停止和减速。

但是,我一直坚持寻找一种检测球是否击中或越过障碍物的最佳方法。我将每个障碍物存储在一个数组中。因此,很容易访问对象的x,y,height和width。我当时认为最好有一个for循环遍历每个对象,以检查动画过程中球是否击中了其中的任何一个。同样,高尔夫球的x和y易于访问,其值存储在字典中。

对测试是否有障碍遇到任何建议?

这是关于我如何测试边界并让球正确反弹的代码

function animateGolfBall(timestamp){
    if(powerBar.widthChange != 0){
        context.clearRect(0, 0, canvasTag.width, canvasTag.height);    

        if (golfBall.x > canvasTag.width - 5 || golfBall.x < 5 ) {
           golfBall.angle = 180 - golfBall.angle;
           updateGolfBall();
           drawEverything();
        } 

        else if (golfBall.y > canvasTag.height - 5 || golfBall.y < 5) {
            golfBall.angle = 360 - golfBall.angle;
            updateGolfBall();
            drawEverything();
        }
        else{
            updateGolfBall();
            drawEverything();
        }

        window.requestAnimationFrame(animateGolfBall);
        powerBar.widthChange -= 1;
    }
    else{
        golfBall.isMoving = false;
        drawEverything();
    }
}

这是重新绘制障碍物的代码,我认为应该放置检查以查看高尔夫球是否在击中障碍物

function drawObstacle(){  
    for(var i = 0; i < obsticles.length; i++){
        obsticles[i].createSquare(obsticles[i].squareX/canvasTag.width,
                                  obsticles[i].squareY/canvasTag.height,
                                  obsticles[i].squareWidth/canvasTag.width,
                                  0,
                                  obsticles[i].squareHeight/canvasTag.height,
                                  0,"pink",3,"yellow"); 


       // if { need help with logic here

            //And what to put here, and how ever many logical statements will be needed    

       // } 

}

任何帮助或提示将不胜感激。如果您需要更多代码,或者我对某些内容不清楚,请让我知道,请及时更新我的​​问题。

托比亚斯·贝芬(Tobias Beuving)

这称为碰撞检测。有很多处理冲突的方法。取决于对象的形状(它们是圆形,正方形还是汽车形)以及发生碰撞时要发生的情况。球会反弹吗?会停止吗?在物体边缘检测到碰撞是否最重要?

您可以在此处阅读有关使用正方形或圆形对象的简单碰撞检测的信息

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

检查对象是否包含JavaScript中另一个对象的任何元素

来自分类Dev

检查对象是否在 ng-repeat 中的另一个对象数组中

来自分类Dev

检查对象是否存在于另一个模型外键字段中

来自分类Dev

如何检查一个对象是否包含另一个对象,例如

来自分类Dev

如何检查一个对象是否嵌套在另一个对象的属性中作为属性?

来自分类Dev

如何检查对象的属性是否表示另一个对象的超集?

来自分类Dev

检查对象列表是否在另一个对象列表中已经存在

来自分类Dev

检查对象列表是否在另一个对象列表中已经存在

来自分类Dev

如何检查一个列表中的对象是否在另一个嵌套列表中?

来自分类Dev

如何检查表示数字的对象是否大于另一个对象?

来自分类Dev

如何检查嵌套对象是否是另一个不使用 jQuery 的对象的后代

来自分类Dev

如何在C ++中检查对象是否== this

来自分类Dev

如何在Swift中检查对象是否无效?

来自分类Dev

如何检查对象是否不是最后一个以及如何处理它?

来自分类Dev

检查对象内部的另一个数组中是否包含一个数组

来自分类Dev

检查对象数组是否是另一个对象数组的子集

来自分类Dev

关于检查对象是否为Python中的迭代器的一个示例的困惑

来自分类Dev

如何知道一个对象是否包含另一个对象

来自分类Dev

如何测试一个对象是否是另一个对象

来自分类Dev

reactjs如何过滤/检查数组中的任何对象是否存在于另一个对象数组中?

来自分类Dev

如何在另一个过程中调用一个过程

来自分类Dev

检查对象键值是否存在,如果存在则获取另一个键值

来自分类Dev

检查对象值数组是否存在于另一个数组中,但长度不同

来自分类Dev

如何在另一个数据库的存储过程中创建一个数据库对象?

来自分类Dev

如何检查对象是否是 JavaScript 中的常规对象

来自分类Dev

通过传递关系检查一个对象是否等于另一个对象

来自分类Dev

对象是否面对另一个

来自分类Dev

我如何测试某个特定对象是否完全在另一个对象内?

来自分类Dev

如何使用math.atan2函数检测某个对象是否在另一个对象的“视线”中?

Related 相关文章

  1. 1

    检查对象是否包含JavaScript中另一个对象的任何元素

  2. 2

    检查对象是否在 ng-repeat 中的另一个对象数组中

  3. 3

    检查对象是否存在于另一个模型外键字段中

  4. 4

    如何检查一个对象是否包含另一个对象,例如

  5. 5

    如何检查一个对象是否嵌套在另一个对象的属性中作为属性?

  6. 6

    如何检查对象的属性是否表示另一个对象的超集?

  7. 7

    检查对象列表是否在另一个对象列表中已经存在

  8. 8

    检查对象列表是否在另一个对象列表中已经存在

  9. 9

    如何检查一个列表中的对象是否在另一个嵌套列表中?

  10. 10

    如何检查表示数字的对象是否大于另一个对象?

  11. 11

    如何检查嵌套对象是否是另一个不使用 jQuery 的对象的后代

  12. 12

    如何在C ++中检查对象是否== this

  13. 13

    如何在Swift中检查对象是否无效?

  14. 14

    如何检查对象是否不是最后一个以及如何处理它?

  15. 15

    检查对象内部的另一个数组中是否包含一个数组

  16. 16

    检查对象数组是否是另一个对象数组的子集

  17. 17

    关于检查对象是否为Python中的迭代器的一个示例的困惑

  18. 18

    如何知道一个对象是否包含另一个对象

  19. 19

    如何测试一个对象是否是另一个对象

  20. 20

    reactjs如何过滤/检查数组中的任何对象是否存在于另一个对象数组中?

  21. 21

    如何在另一个过程中调用一个过程

  22. 22

    检查对象键值是否存在,如果存在则获取另一个键值

  23. 23

    检查对象值数组是否存在于另一个数组中,但长度不同

  24. 24

    如何在另一个数据库的存储过程中创建一个数据库对象?

  25. 25

    如何检查对象是否是 JavaScript 中的常规对象

  26. 26

    通过传递关系检查一个对象是否等于另一个对象

  27. 27

    对象是否面对另一个

  28. 28

    我如何测试某个特定对象是否完全在另一个对象内?

  29. 29

    如何使用math.atan2函数检测某个对象是否在另一个对象的“视线”中?

热门标签

归档