前言
Hi,我是陈皮皮。
概述
主线任务
本文的主线任务(核心主题)是「抛射体运动(Projectile Motion)」。
抛射体运动常常出现在我们的日常生活中,例如篮球运动员投篮后篮球在空中的运动。
在各种电子游戏中也可以看到抛射体运动的身影,例如《坦克世界》中坦克射击后炮弹在空中的运动。
如你所见,本文的标题是《抛射体运动在游戏开发中的实践》,我们将一起推导抛射体运动的各种公式,并在游戏中应用这些公式,实现各种有趣的功能。
支线任务
除了主线任务,本文还包括一些支线任务:
- 3D 游戏中的对象交互与射线投射
- 三维空间中矢量的点乘与叉乘(线性代数)
- 三维空间中矢量在平面上的投影计算
- 三维空间中矢量的有向角计算
- 实时预绘制炮弹的运动轨迹
成果
效果展示
这是我们要实现的效果:
在线预览:https://ifaswind.gitee.io/cocos-case-projectile/
示例项目
与本文一同出现的示例项目「炮弹投射(Projectile)」为开源项目。
为了避免文章又臭又长,项目中的一些功能特性没有在文章中介绍,同时我会对项目代码进行整合再插入文内,所以实际的项目结构与代码和文章中出现的会有些许差异。
项目仓库:https://gitee.com/ifaswind/cocos-case-projectile
Cocos 商店:https://store.cocos.com/app/detail/3680
本项目使用的游戏引擎为 Cocos Creator 3.4.2。
正文
场景搭建
先来一段轻松愉快的搭积木体验。
环境
快速搭建一个简单的场景,放置一些五颜六色且高矮不一的障碍物(或者说是平台)。
记得给这些东西都加上合适的碰撞器(Collider),这样我们才能够通过射线和它们进行交互。