前言
最近学习了《代码本色》这本书,本书介绍了用计算机模拟自然系统涉及的编程策略与技术,涵盖了基本的数学和物理概念,以及可视化地展示模拟结果所需的高级算法。读者将从构建基本的物理引擎开始,一步一步地学习如何创建智能移动的物体和复杂的系统,为进一步探索生成设计奠定基础。相关的知识点包括力、三角、分形、细胞自动机、自组织和遗传算法。
看完之后,了解到可以使用一行行的代码来模拟这个复杂的世界,深受触动,感受颇深,在此编写了一个小游戏,来学习书中的技术。
游戏展示
游戏非常简单,使用方向键来控制加农炮的移动和瞄准,使用空格键来蓄力发射,其中小球的运动及与墙壁和地面的碰撞用到了书中向量与力的知识,小球射出三秒之后会爆炸四散,运用了书中粒子效果的知识。
关键技术
首先为了使炮弹能够进行物理运动,需要为其赋予位置、速度、加速度、质量等值:
class Ball {
constructor(x, y, radius, mass) {
this.loc = createVector(x, y);
this.radius = radius;
this.mass = mass;
this.acc = createVector(0, 0);
this.vel = createVector(0, 0);