Unity2D中实现子弹的弧线轨迹
前言
大家好!我是第一次写blog的Unity2D初学者,最近在研究射击RPG时看到一些比较酷炫的弧线子弹射击,很多2D平台射击游戏、弹幕射击游戏都使用了这种功能,今天试着做了一下这个功能的实现,和大家分享下。
这里借用bilibili视频av54898959的图片,具体思路也借鉴于这个视频,大家可以去看看~
视频传送门:如何做出漂亮的追踪子弹轨迹
设计思路
首先对弧线运动做一下几何分析,如下图:
这里我们看到,其实弧线运动时,每一刻的速度都遵循同一个特点:都偏向目标点的同一侧且为弧线外侧。因此可以构想出两种思路:
- 逐帧矫正
在每一帧中都先将子弹朝向矫正向正对目标点,然后在这个方向的基础上进行一定程度的偏转,保证每一刻的速度组合为弧线的切线; - 利用插值法
在加载物体时将初始朝向设置为存在较大偏转,然后利用插值法(这里是使用弧型插值Slerp方法)逐帧向正对目标点的方向靠近,实现“弧线接近”的感觉。
代码实现
方法1的实现:
float moveSpeed;
Vector3 moveDir;
Vector3 destination;
float targetAngle,circleAngle;//矫正用的角度和偏离用的角度
// Start is called before the first frame update
void Start()
{
moveSpeed = 7;
circleAngle = 40;