unity3d - 如何在 Unity 中从目标对象后面跟踪摄像机
问题描述
我必须让相机从后面跟踪一个球体对象。相机应该在中间捕捉它,同时面向对象速度方向的相同方向。
并且相机和物体之间的距离应该始终相同。
我可以通过此代码使相机面向对象速度方向的相同方向。
Quaternion lookRotation = Quaternion.LookRotation(targetRb.velocity);
lookRotation.z = 0;
lookRotation.x = 0;
camera.transform.rotation = Quaternion.Lerp(camera.transform.rotation, lookRotation, 0.4f);
但我找不到如何计算相机应该在的位置。
你能告诉我怎么做吗?
解决方案
你可以添加例如
var targetPosition = targetRb.position - targetRb.velocity.normalized * DESIRED_OFFSET;
camera.transform.position = Vector3.Lerp(camera.transform.position, targetPosition, 0.4f);
它总是将相机移向DESIRED_OFFSET
目标后面的位置单位。
或者,如果您真的希望球体始终固定在中心,您可以使用相机的当前方向
var targetPosition = targetRb.position - camera.transform.forward * DESIRED_OFFSET;
camera.transform.position = targetPosition;
或者你也可以Lerp
再来一次。我想你必须尝试几个选项,看看最适合你想要的结果。
推荐阅读
- java - 通过 ADB 导入 .VCF 文件
- vue.js - 无法访问已安装的道具
- selenium-webdriver - 如何将 Codeception 集成到本地代码中?
- python - 如何通过 Python 脚本将列添加到 Athena 存在表中的特定位置?
- python - 填充字典时出现 KeyError
- forms - 网站定制 联系我们 表单定制
- android - 如何从我上传到firebase存储的文件中获取文件
- numbers - 我有一个字符串和一个数字。我需要找到第一个包含与数字长度相同的字符的子字符串
- c# - C# - “开关”功能的问题。不将值写入变量
- r - 使用 Tidyverse 为每个用户/参与者输出一系列汇总统计表