Unity利用Slerp实现弧线跟踪效果

本文介绍了Unity中实现弧线跟踪弹的思路和代码,通过固定物体速度,利用Vector3.Slerp进行弧线差值计算,调整物体方向。在FixedUpdate()方法中更新方向,并通过判断距离实现跟踪效果。代码示例中,将transform.right替换为transform.up会使弧线更偏向上方。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近在B站乱七八糟看了很多不同的视频,
发现弧线的跟踪弹实现的思路基本都是类似的

思路

固定物体的速度,利用圆形弧线差值来改变物体的方向。
Vector3.Slerp(Vector3 origin,Vector3 end, float smooth);
smooth趋近0返回第一个参数smooth趋近1返回第二个参数
0到1之间经过复杂的计算得到两个参数对应方向之间,根据 smooth/1.得到两者之间角度的占比,返回该角度对应的方向在弧线上的坐标。

演示

  for (int i = 0; i < 11; i++)
  {
     Debug.DrawLine(vec3, Vector3.Slerp(point1.position, point2.position, i*0.1f), Color.red);
  }

在这里插入图片描述

跟踪弹代码

  private void FixedUpdate()
    {
        direction = (targetPos - transform.position).normalized;

        if (!arrived)
        {
            transform.right = Vector3.Slerp(transform.right, direction, lerp / Vector2.Distance(transform.position, targetPos));
            rigidbody.velocity = transform.right * speed;//就算已经到达了目标位置,速度也不会变所以继续向前
        }
        if (Vector2.Distance(transform.position, targetPos) < 1f && !arrived)
        {
            arrived = true;
        }
    }

改成这样会让弧线更偏上

  transform.up= Vector3.Slerp(transform.up, direction, lerp / Vector2.Distance(transform.position, targetPos));
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值