[Unity3D]关于Camera摄像头跟随物体移动的几种方法

 

目录

 

序言        

法一——摄像头与物体存在父子关系

法二——Lerp函数加上坐标变换

Lerp函数(线性插值函数)

 使用场景

法三——第一人称类游戏 

法四——固定不动

 结束


序言        

        首先说一句,关于摄像头移动的方式有多种,每种都对应着一个情景。这篇文章就针对不同的情景展开摄像头用法的说明。

法一——摄像头与物体存在父子关系

        这是最简单的方法,只需要把摄像头拖拽到被观察物体的下面,使得被观察物体成为摄像头的父物体。

        由于父子物体间存在位矢与方向角的关系,且这种关系会由Unity3D引擎计算维持。所以此方法不需要任何代码,即可实现摄像头跟随物体移动。

 

 

这种方式虽然简单,但弊端极大:

        物体移动时,摄像头会抖动;

        物体旋转时,摄像头会因为移动不平滑而导致玩家出现“晕3D”的效果;

所以就有了第二种办法。

法二——Lerp函数加上坐标变换

         位置变换大家应该都知道。先看图:

 

 \overrightarrow{\Delta r}保持一定,即摄像机(A物体)与被观察者(B物体)简单位置关系保持不变。

<

  • 21
    点赞
  • 126
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
以下是使用DOTween插件在Unity中实现摄像机跟随路径运动的示例代码: 1. 首先,您需要安装DOTween插件。您可以在Unity Asset Store中搜索“DOTween”并安装它。 2. 创建一个空对象并将其命名为“CameraPath”。 3. 将路径上的所有点作为子对象添加到“CameraPath”对象中。每个子对象应该包含一个Transform组件,指定该点的位置。 4. 在“CameraPath”对象上添加一个脚本组件,并使用以下代码: ```csharp using UnityEngine; using DG.Tweening; public class CameraPathController : MonoBehaviour { public Transform[] waypoints; // 存储路径上的所有点 public float duration = 10.0f; // 动画持续时间 public Ease easeType = Ease.Linear; // 动画插值类型 void Start() { Camera.main.transform.DOPath(GetWaypoints(), duration, PathType.CatmullRom).SetEase(easeType); // 创建路径动画 } Vector3[] GetWaypoints() { Vector3[] path = new Vector3[waypoints.Length]; // 创建路径数组 for (int i = 0; i < waypoints.Length; i++) // 将路径上的所有点添加到路径数组中 { path[i] = waypoints[i].position; } return path; } } ``` 在此示例中,我们使用DOTween的DOPath方法来创建路径动画。我们将路径上的所有点存储在“waypoints”数组中,并使用GetWaypoints方法将它们转换为一个Vector3数组。我们还可以指定动画的持续时间和插值类型。 5. 将摄像机添加到场景中,并将其设置为“CameraPathController”脚本中使用的摄像机。 6. 运行场景并观察摄像机沿着路径移动的效果。 请注意,您可以根据需要调整路径点的数量和位置,并在“CameraPathController”脚本中调整动画的持续时间和插值类型。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

追蝴蝶的大皮卡

同志,我谢谢您咯

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值