首页 > 解决方案 > 相机跟随播放器时的相机抖动效果

问题描述

我正在开发一个 3d 游戏,其中相机不断跟随玩家对象。现在,当炸弹击中玩家对象时,我想播放带有爆炸粒子效果的相机抖动。

我已经为相机抖动编码了这个:

public IEnumerator PlayCameraShakeAnimation(float duration, float magnitude)
{
    Vector3 originalPosition = transform.localPosition;
    float elapsedTime = 0f;

    while(elapsedTime < duration)
    {
        float x = Random.Range(-1f, 1f) * magnitude;
        float y = Random.Range(-1f, 1f) * magnitude;

        transform.localPosition = new Vector3(x, y,originalPosition.z);
        elapsedTime += Time.deltaTime;

        yield return null;
    }

    transform.localPosition = originalPosition;
}

Camera Follow 是我为跟随玩家而编写的普通脚本。由于正在运行 Camera Follow 脚本,我们无法在屏幕上显示相机抖动效果。

如果我关闭相机跟随脚本,那么我们可以清楚地看到相机抖动,否则不会。

如果我关闭相机跟随脚本一小段时间,那么我在跟随玩家时会失去流畅性,因为玩家位置在爆炸后会更新。因此,当我重新开始跟随玩家时,它会在运动中猛烈地到达目标位置。

此外,相机在两个领域中都跟随玩家的位置和旋转。现在为我提供一些建议,以在跟随玩家的同时实现相机抖动效果。

标签: unity3d

解决方案


这实际上很简单:

将其分成两个 GameObjects:

parentObject
|--Camera
  • parentObject跟随玩家。
  • CameralocalPosition相对于parentObject

结果:在parentObject跟随玩家Camera时,它会自动随之移动。无需打开任何东西;)


推荐阅读