Scratch3.0与物理引擎
文章目录
前言
由于@griffpatch的出色工作, 我们可以在Scratch3.0中使用box2d作为物理引擎。 大家可以在scratch3v3.codelab.club体验它,选择box2d插件即可。
来看个演示:
这个演示结合了box2d插件和Leap Motion。
物理引擎
维基百科对物理引擎的解释非常清晰:
物理引擎是一个计算机程序模拟牛顿力学模型,使用质量、速度、摩擦力和空气阻力等变量。可以用来预测这种不同情况下的效果。它主要用在计算物理学和电子游戏以及计算机动画当中。
以大家熟悉的《塞尔达传说 旷野之息》为例,它拥有极高的自由度,物理引擎功不可没,这款游戏
添加了名为“化学引擎”(Chemistry Engine)的游戏机制,允许游戏中的物体相互影响和引发类似现实世界中的交互反应;例如林克可以使用火把点燃草丛,而风可以使火蔓延到更广的地方,燃烧的草丛产生的热空气能让林克使用滑翔翼飞起来。这种元素之间的叠加会让玩家在探索游戏世界时有更多的选择、可能性和自由度。
box2d
Box2D是一款免费的开源二维物理引擎。
为Scratch3.0添加物理引擎的思路
如果把运动看作时间序列上的位置变化,那么为Scratch3.0添加物理引擎就不困难。并不需要hack底层的东西,通过runtime,我们可以set和get到target的舞台位置数据,于是就可以创建一个extension来负责计算这些数据的变化,从而赋予target物理属性。
后话
从Scratch的这个用例中,我们可以看到这个Scratch强大的可扩展性。
参考
文章作者 种瓜
上次更新 2019-01-30