首页 > 其他 > 详细

旋转抖动

时间:2017-11-12 23:58:40      阅读:452      评论:0      收藏:0      [点我收藏+]

项目需要做一个茶壶的壶盖抖动的动画

RotationShake

=========================================================

using UnityEngine;

/// <summary>
/// 旋转抖动动画
/// </summary>
public class RotationShake : MonoBehaviour {

    public float zAngle = 30f; // 左右摆动的角度
    public float perAngle = 10f; // 每次更新增加的角度
    public GameObject obj;

    private bool isPositive = true; //是否正向增加

    private float baseAngle;
    private float positiveAngle;
    private float negativeAngle;

    public float currentZAngle;
    // Use this for initialization
    void Start () {
        // localEulerAngles的角度是从0~360,直接相减为负数会转化
        baseAngle = obj.transform.localEulerAngles.z;
        positiveAngle = baseAngle + zAngle;
        positiveAngle = positiveAngle > 180 ? positiveAngle - 360 : positiveAngle;

        negativeAngle = baseAngle - zAngle;
        negativeAngle = negativeAngle < -180 ? negativeAngle + 360 : negativeAngle;
    }
    
    // Update is called once per frame
    void Update () {

        currentZAngle = obj.transform.localEulerAngles.z > 180 ? obj.transform.localEulerAngles.z - 360f : obj.transform.localEulerAngles.z;
        if (currentZAngle > positiveAngle)
        {
            isPositive = false;
        }
        else if (currentZAngle < negativeAngle)
        {
            isPositive = true;
        }

        if (isPositive)
        {
            obj.transform.localEulerAngles = new Vector3(obj.transform.localEulerAngles.x, obj.transform.localEulerAngles.y, obj.transform.localEulerAngles.z+ perAngle);
        }
        else
        {
            obj.transform.localEulerAngles = new Vector3(obj.transform.localEulerAngles.x, obj.transform.localEulerAngles.y, obj.transform.localEulerAngles.z - perAngle);
        }
    }
}

旋转抖动

原文:http://www.cnblogs.com/alps/p/7823494.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!