当前位置:   article > 正文

Unity3D ——游戏开炮,开枪屏幕震动效果实现_unity 打击屏幕震动

unity 打击屏幕震动

RPG或者动作游戏最重要的就是打击感,好的打击效果可以给游戏增色不少,而一种最方便最简单的提升打击感的效果就是震屏效果,短短几十行代码就可以让我们的游戏效果提升不少。
那么在我们进行游戏战斗场景开发时,常常为了加强临场感,会在有爆炸或者撞击的时候加入震屏的效果,原理其实很简单,就是对场景主相机进行坐标和角度的变化。

话不多说,看一下代码:

// 相机震动效果
using UnityEngine;

public class CameraShakeEffect : MonoBehaviour
{
/// <summary>
/// 相机震动方向
/// </summary>
public Vector3 shakeDir = Vector3.one;
/// <summary>
/// 相机震动时间
/// </summary>
public float shakeTime = 1.0f;  

private float currentTime = 0.0f;
private float totalTime = 0.0f;

public void Trigger()
{
    totalTime = shakeTime;
    currentTime = shakeTime;
}

public void Stop()
{
    currentTime = 0.0f;
    totalTime = 0.0f;
}

public void UpdateShake()
{
    if (currentTime > 0.0f && totalTime > 0.0f)
    {
        float percent = currentTime / totalTime;

        Vector3 shakePos = Vector3.zero;
        shakePos.x = UnityEngine.Random.Range(-Mathf.Abs(shakeDir.x) * percent, Mathf.Abs(shakeDir.x) * percent);
        shakePos.y = UnityEngine.Random.Range(-Mathf.Abs(shakeDir.y) * percent, Mathf.Abs(shakeDir.y) * percent);
        shakePos.z = UnityEngine.Random.Range(-Mathf.Abs(shakeDir.z) * percent, Mathf.Abs(shakeDir.z) * percent);

        Camera.main.transform.position += shakePos;

        currentTime -= Time.deltaTime;
    }
    else
    {
        currentTime = 0.0f;
        totalTime = 0.0f;
    }
}

void LateUpdate()
{
    UpdateShake();
}

void OnEnable()
{
    Trigger();
}

}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62

接下来咱们看一下设计思路:
1.创建类,带参数构造方法:
2.获得相机的起始位置,方便震动结束之后恢复相机状态:
3.相机震动操作:
这里我直接通过while循环来实现了,当然在MonoBehavior中也可以在Update方法中实现这样的操作,这里为了封装,所以抽离了一些MonoBehavior的特性。
4.震动结束后恢复相机参数:

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/125374
推荐阅读
相关标签
  

闽ICP备14008679号