首页 > 解决方案 > 平滑的相机跟随而不是随着角色的动画而摇摆

问题描述

我想要的只是让我的相机平滑地跟随,但它会继续跟随我得到的动画运动:

问题的视频截图

我主要了解问题所在,但我尝试了 100 种不同的解决方案,但都没有积极的结果。

我的第一个想法是创建一个 avatar parent 来容纳玩家和相机的孩子,然后相机将留在里面。但是父母不和孩子一起移动……是有道理的。

所以我通过更新和延迟更新手动匹配位置,但由于某种原因整个游戏对象从地板上掉了下来。

所以我在父母身上附加了一个对撞机,它仍然失败了。我正在使用光子,所以我不能将刚体移动到父级,因为光子视图需要它。

我还尝试将相机作为根游戏对象的父级,希望不会有摇摆……失败!

即使屏幕捕获使用的是vector3 Slerp,我也尝试过lerp,但它是线性解释,所以即使它解决了它,Slerp 对我来说更有意义。

虽然我有可能如果我用可能解决它的值的负值来抵消旋转但是如果我故意旋转我的角色而不是我遇到问题。

虽然这只是一种变体,但我知道它可能会有所帮助:

/// <summary>
///   puts the camera in the correct location andsets the camera to look at the hero
/// </summary>
public void position_the_camera()
{

    //camera.transform.position = player.camera_position.transform.position;

    camera.transform.position = Vector3.Slerp(
        player.camera_position.transform.position,
        player.camera_position.transform.position - camera_offset,
        camera_follow_smoothing_time);

    camera.transform.LookAt(player.look_at_target.transform);
}

标签: unity3dgame-development

解决方案


将 Tolerance 应用于移动,即如果玩家位置或旋转的差异低于指定限制,则不要移动相机。

您必须亲自尝试这些值,才能找到最适合您的游戏的值。

如果限制太小,相机会摇晃/振动。如果限制太大,视频将不稳定/生涩。

自从我上次使用 Unity 以来已经有一段时间了,无法帮助编写代码。对不起。


推荐阅读