一、效果
//游戏效果动图
该游戏模拟了自治智能体的群体运动和物体间的引力。玩家可通过鼠标操控小球群运动,鼠标移动越快,球体之间的距离越大,反之粒子会趋向于聚集到一起。游戏过程中会随机出现大小位置不同的吸引子,对群体粒子产生引力,小球一旦被吸引子吸入则消失。游戏通过操控群体粒子到达目标点来计分,所有粒子被吸引子吸入则游戏结束。
二、实现
1、粒子群的实现
单个粒子
小球会跟着鼠标的移动转换运动方向,当小球离鼠标距离很近时,小球受到鼠标位置的影响会变小。小球下一帧速度的方向是由小球当前速度方向的向量与小球位置与鼠标位置之间的向量相减产生的,为了防止小球移动的速度过大,设定了一个maxspeed,限制了小球运动的最大速度,另外minspeed规定了小球与鼠标距离很近时的速度大小。
代码如下:
this.move=function()//移动位置计算
{
this.targetchange();
op=this.valocity.sub(target);
op=op.normalize();
if(target.mag()<50)
op=op.mult(this.minspeed);
else
op=op.</