unity camera自带的震屏
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()函数触发震屏效果
原文地址: http://www.cveoy.top/t/topic/iYUf 著作权归作者所有。请勿转载和采集!