Unity中的Camera类不直接提供震屏效果,但可以使用代码来实现。以下是一个简单的示例:

using UnityEngine;

public class CameraShake : MonoBehaviour
{
    public float shakeDuration = 0.1f;  // 震屏持续时间
    public float shakeAmount = 0.1f;  // 震屏强度

    private Vector3 originalPosition;
    private float shakeTimer = 0f;

    private void Start()
    {
        originalPosition = transform.localPosition;
    }

    private void Update()
    {
        if (shakeTimer > 0)
        {
            // 通过随机偏移来实现震屏效果
            transform.localPosition = originalPosition + Random.insideUnitSphere * shakeAmount;

            shakeTimer -= Time.deltaTime;
        }
        else
        {
            shakeTimer = 0f;
            transform.localPosition = originalPosition;
        }
    }

    public void Shake()
    {
        shakeTimer = shakeDuration;
    }
}

在代码中,我们通过修改Camera的localPosition来实现震屏效果。首先,我们记录了相机的原始位置,然后在Update函数中,如果shakeTimer大于0,则通过添加一个随机偏移来实现震屏效果。当shakeTimer减少到0时,相机恢复到原始位置。

要使用震屏效果,可以在其他脚本中调用Shake()函数,例如:

public class PlayerController : MonoBehaviour
{
    public CameraShake cameraShake;

    private void OnCollisionEnter(Collision collision)
    {
        if (collision.gameObject.CompareTag("Obstacle"))
        {
            // 碰撞到障碍物时触发震屏效果
            cameraShake.Shake();
        }
    }
}

在上述示例中,当玩家与障碍物碰撞时,调用cameraShake的Shake()函数触发震屏效果

unity camera自带的震屏

原文地址: http://www.cveoy.top/t/topic/iYUf 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录