2016-09-29 68 views
2

我尝试在javascript中编写一个小游戏,并且存在这个问题:我不知道如何识别圆圈中的空圆来递增得分了。Javascript - 如何识别圆弧中的圆弧碰撞

我在食者圈和球之间增加碰撞,如果球碰到食者的“身体”,它将显示游戏结束(已完成),并且如果球触及食者的“嘴”它必须增加分数。

这里是小游戏的代码:http://jsbin.com/gujove/edit?html,css,js,output

不要犹豫,告诉我,如果您有关于如何做到这一点的想法。

谢谢。

回答

2

提供您了解以下内容:

  • 你知道吃和半径的中心坐标。 (您的参考平面的中心)
  • 您可以计算弧末端的坐标(centerY + sinA),(centerX + cosA)等。
  • 您知道球的中心和半径。

然后:

  • 你必须计算如果球的中心和任何电弧的端部是小于或等于,则球的半径(如果距离小于之间的距离。 ,这意味着弧角在球内,因此你已经击中了)

  • 最重要的是,从球的中心到球的中心画出的线的角度应该在角度如果将食者的中心视为食物的参考点,则将线条绘制到圆弧的两侧平面。 (如果角度介于和第一个条件成立,那么你正在通过空的空间。

+0

感谢您的回复。我其实有一个食人的中心,它是canvas.height/2和canvas.width/2这是x:300和y:300。食者的半径是40.你能解释我这部分吗?“你可以计算圆弧末端的坐标(centerY + sinA),(centerX + cosA) “。Thx –

+0

这是一个参考,在一个圆圈里,如果你知道角度坐标,通过应用基本的三角函数可以非常容易地计算出圆的时间点上的位置,https://en.wikipedia.org/维基/ Unit_circle –

+0

好吧,它需要我一些时间,但我做到了:)谢谢你的帮助。祝你今天愉快。 –