手机上能用的物理模拟器有哪些?推荐几款超赞的!

天美租号

说起这物理模拟器,我可有的聊了。一开始也没想着要搞这个,纯粹是闲着没事,加上我家那小子,天天缠着我问东问西,什么东西为啥会掉下来,为啥皮球拍一下会弹起来,诸如此类。我寻思着,光靠嘴巴讲,他也未必能明白,不如整个能看得见摸得着的东西给他玩玩,顺便自己也重温一下当年的物理知识不是?

最初的念头

我也是没啥头绪,就想着网上找找看有没有现成的轮子,或者那种专门给小孩子玩的物理实验APP。搜了一圈,确实有那么几个,什么《物理大师》,《虚拟实验》,看着介绍都挺唬人的,又是动画视频又是虚拟操作的。但下载了几个瞅了瞅,要么就是太偏理论,要么就是操作太复杂,不适合我这种想快速上手、简单演示一下的懒人。

手机上能用的物理模拟器有哪些?推荐几款超赞的!

我总觉得别人做好的东西,玩起来没啥参与感。就琢磨着,能不能自己动手搞个最简单的那种,能动就行,不用太花哨。

动手开干

说干就干,我先是回忆了一下大学那会儿学过的一点点编程皮毛,那时候好像接触过一些游戏引擎啥的,里面就有物理模块。但那些玩意儿太庞大了,杀鸡用牛刀了属于是

我的目标很明确:

  • 能创建几个简单的形状,比如小球、方块。
  • 手机上能用的物理模拟器有哪些?推荐几款超赞的!

  • 能给这些形状加上重力,让它们往下掉。
  • 形状之间能发生碰撞,别互相穿过去就行。
  • 最好能用鼠标拖拽一下,给它们个初始力。

然后我就开始找一些轻量级的2D物理引擎库。这个过程也挺折腾的,看了好几个,有的文档不全,有的是英文看着费劲。选了一个感觉示例代码比较清晰,上手快点的。

具体步骤大概是这么几步:

手机上能用的物理模拟器有哪些?推荐几款超赞的!

  1. 搭环境: 这个还按照说明一步步来,把库文件啥的配置
  2. 创建世界: 就是初始化一个物理世界,设定一下边界,比如屏幕的四条边,省得物体掉出去了找不着。
  3. 添加物体: 这就开始画小球、画方块了。每个物体都得有自己的属性,比如质量、摩擦力、弹性系数啥的。这些参数一开始我也是瞎调,凭感觉来。
  4. 赋予物理特性: 最关键的是得让它们动起来,还得符合点物理规律不是?把创建好的物体加到物理世界里,引擎就会自动处理重力、碰撞这些。
  5. 渲染显示: 光有数据不行,得画出来才能看见。我就用了最简单的图形接口,把物理引擎计算出来的物体位置实时画在屏幕上。
  6. 手机上能用的物理模拟器有哪些?推荐几款超赞的!

遇到的坑和乐趣

这过程里头,坑可没少踩。一开始那叫一个乱,小球满天飞,要么就是直接穿墙而过,要么就是堆在一起抖个不停。印象最深的是调碰撞参数,那弹性系数和摩擦力,稍微调得不对,小球要么像石头一样砸地上不动了,要么就像个超级弹力球一样,一碰就飞出屏幕外,怎么也停不下来。调参数调到头秃,真的。

还有就是物体堆叠的时候,有时候会因为计算精度或者迭代次数不够,导致物体之间互相渗透一点点,然后就疯狂抖动,或者直接“爆炸”开来,那场面,啧啧。

不过乐趣也挺多的。当第一个小球在重力作用下稳稳地掉下来,然后跟地面发生一个还算逼真的碰撞,弹了几下停住的时候,那成就感,别提了!后来慢慢琢磨,加上了鼠标拖拽,能用鼠标点一点,给物体一个力,看着它们弹来弹去,或者搭积木一样把方块堆起来,然后一把推倒,我家小子在旁边看得是手舞足蹈,我自己也玩得不亦乐乎。

最终的效果和一点感悟

手机上能用的物理模拟器有哪些?推荐几款超赞的!

捣鼓出来的东西,挺简陋的。就是个白板背景,上面飘着几个彩色的圈圈和方块,能掉、能撞、能用鼠标瞎捣乱。没有啥炫酷的特效,也没有复杂的场景。

但我把这个过程记录下来,主要是觉得这个实践挺有意思的。从一个模糊的想法,到自己动手去查找资料、尝试、遇到问题、解决问题,看到一个能跑起来的东西,这个过程本身就挺锻炼人的。

虽然做的挺糙的,功能也简单,但整个过程下来,自己动手捣鼓出来的东西,感觉就是不一样。也算是对我家小子那些“为什么”有了一个直观的解答。下次他再问说不定我又得琢磨整个新玩意儿出来了,哈哈。

发表评论

快捷回复: 表情:
AddoilApplauseBadlaughBombCoffeeFabulousFacepalmFecesFrownHeyhaInsidiousKeepFightingNoProbPigHeadShockedSinistersmileSlapSocialSweatTolaughWatermelonWittyWowYeahYellowdog
验证码
评论列表 (暂无评论,6人围观)

还没有评论,来说两句吧...