通过修改四元数的方法实现相机抖动特效

相机下创建CameraShake脚本

using UnityEngine;

using System.Collections;

public class CameraShake: MonoBehaviour {

    private Vector3 thisPosition;

    private Quaternion thisRotation;

    //抖动强度

    public float shake_decay;

    //衰减速度

    public float shake_intensity;

    void Start() {

        thisPosition = transform.position;

        thisRotation = transform.rotation;

    }

    void Update()  {

        //点击鼠标右键,实现抖动效果

        if (Input.GetMouseButton(1)) Shake();

        if (shake_intensity > 0)   {

            //改变相机的位置

            transform.position = thisPosition + Random.insideUnitSphere * shake_intensity;

            //改变相机的旋转

            transform.rotation = new Quaternion(

            thisRotation.x + Random.Range(-shake_intensity, shake_intensity) * .2f,

            thisRotation.y + Random.Range(-shake_intensity, shake_intensity) * .2f,

            thisRotation.z + Random.Range(-shake_intensity, shake_intensity) * .2f,

            thisRotation.w + Random.Range(-shake_intensity, shake_intensity) * .2f);

            shake_intensity -= shake_decay;

        }

        else  {

            //变回为原来的位置和旋转

            transform.position = thisPosition;

            transform.rotation = thisRotation;

        }

    }

    void Shake() {

        shake_intensity = 0.1f;

        shake_decay = 0.001f;

    }

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值