这是自从制作以来的最好表现最好的一个例子了。
Flash( )
一个赛车的例子,这样来制作路线的话是比较灵活的,可以自己来设计各种各样的路线,但是这样的路线是不能循环的,也就是说不能设计环形的赛道。更多的游戏请看www.toswf.com www.wawayaya.net
这次加入了两个多边形之间的碰撞冲量的计算,首先需要知道的是他们的碰撞点和碰撞的面,这里我没有修改以前的冲量的计算方法。但是似乎问题不是很大,问题还是有的,就是多变形没有办法来停止,这我怀疑和整体的结构有关系,看来需要重新来写了。
点击鼠标可以看到一些效果,但是需要说明的是这个例子是没有碰撞的检测的,因此如果出现了两个点碰撞的情况就会出问题,因此我在这里做了一些限制。
最近的一段时间一直都在学习物理引擎的知识,今天终于有所得了,这是一个最基本的例子。
操作方法:鼠标点击的位置和小圆的距离就是小圆的速度,他和多边形的边缘的碰撞点为红色的十字位置。实际上如果判断两个多边性的话要更复杂一些。
多边形的碰撞点可能有多个,这里只能监测到2个
操作方式:靠近其中的一个顶点,按鼠标的左键或者是按UP键
推荐给大家一个网站,一个专门讲2D的多边形碰撞的。源文件在打包的文件中。有兴趣的朋友可以下载来看看。很不错的资料。
碰撞的形式有很多种,方法也有很多种,这里我检测的是圆形和直线的碰撞。
两点可以确定一条直线,这里我们给出一些点来绘制一个不规则的线框,如图所示:
我们需要计算一下圆形的中心到直线的距离Dis,如果小于圆形的半径R,就可以知道他们已经碰撞了。
要像得到他们的距离Dis,必须知道两个点,即圆心的坐标和经过圆心的和已知直线L相垂直的直线L'的交点的坐标P。
根据直线方程y=k*x+b,我们只需要计算出k和b的值就可以确定这条经过圆心的直线L'。
因为和L垂直,我们可以计算出L'k=-(1/Lk)。根据直线L的已知两点,我们先计算出Lk=(y2-y1)/(x2-x1),x1,y1,x2,y2是已知的两点的坐标。
因此我们知道了L'k=-(x2-x1)/(y2-y1)。知道了L'k,接下来计算一下L'b,因为圆心的坐标是已知的,将其代入到y=kx+b,可以计算出L'b=y-kx;
我们最终确定了这条直线L',但是最终的目标是计算L'和L的交点,对L'和L的两个直线方程解方程组。最终我们得到了交点的坐标P。
看一下效果:(拖动圆靠近直线)
已知条件是我们已经知道了一个球的运动的速度为Vi=[20,10],两个点p1=[10,30],p2=[40,20]确定的一条直线S:如图所示: