您现在的位置是:网站首页> 编程资料编程资料

html5 迷宫游戏(碰撞检测)实例一HTML5实现的熊猫弹跳小游戏源码HTML5实现的卡牌配对小游戏源码js实现的魔塔闯关类小游戏源码使用数据结构给女朋友写个Html5走迷宫游戏

2021-09-01 1197人已围观

简介 通过鼠标拖拽在画布上添加墙壁,通过方向键控制多边形上下左右移动,遇到墙壁则无法前进,下面为大家介绍下需要解决的问题及具体的实现代码,感兴趣的朋友可以学习下

游戏效果图
 
通过鼠标拖拽在画布上添加墙壁,通过方向键控制多边形上下左右移动,遇到墙壁则无法前进。

需要解决的问题

鼠标按下,鼠标拖动,鼠标释放事件的检测
多边形的绘制
墙壁的绘制
多边形和墙壁的碰撞检测(实质上是圆和线段的相交判断)

MYCode:

复制代码
代码如下:



迷宫






难点

多边形和线段碰撞检测的方法
函数intersect()负责检测多边形和线段是否相交
记线段上一点p(x,y)
线段2个端点是(sx,sy)和(fx,fy)



dx=fx-sx

dy=fy-sy

x和y可以表示如下

x=sx+t*dx

y=sy+t*dy

要判断线段和多边形是否相交,转化为判断线段和多边形的外接圆是否相交
为此需要找到线段上离圆心o最近的一点p
如果|op|<圆的半径,则可以判断线段和圆相交。
否则不相交。

怎么找到线段上离圆心距离最近的点呢?

p点到o点的距离可以表示为

distance=sqrt((x-cx)*(x-cx)+(y-cy)*(y-cy));

代入

x=sx+t*dx和y=sy+t*dy

可以得到distance是一个关于t的函数

对此函数求导

求出函数值为0时对应的t值就可以得到距离圆心最近的点

相关内容

-六神源码网