美文网首页
物体随机浮动的效果

物体随机浮动的效果

作者: xiaoxingyun | 来源:发表于2016-10-01 14:56 被阅读302次

    分享一段在Unity中实现物体在水上随机浮动效果的程序。实现的主要原理是把物体的position和rotation变化用Sin或Cos运动曲线来表示,实现随机效果。
    那么我们先来复习一下高中的数学知识吧,看一下百度的解释:

    sin.PNG

    可以这样理解,A是运动曲线的振幅,ω是角速度,大小为2π*f(f=1/T),控制正弦周期,ψ为x=0时的相位,k为偏距,即曲线沿y轴上下移动的值。这样就可以用这个公式来表示曲线运动了。

      //X、Y、Z轴上正弦曲线的ω值
       public float wX = 1;
       public float wY = 1;
       public float wZ = 1;
        //X、Y、Z轴上正弦曲线的A值
       public float aX = 0.2f; 
       public float aY = 0.2f;
       public float aZ = 0.2f;
       public float speed = 1f;
       public float range = 1;
       private float t = 0;
       private Vector3 originPos;
       private Vector3 originRotation;
    
       void Awake()
       {
              originPos = transform.position;
              originRotation = transform.eulerAngles;
       }
    
       void Update () {
              t += Time.deltaTime * speed;             
              transform.position = new Vector3(aX * Mathf.Sin(wX * t ), aY * Mathf.Sin(wY * t), aZ * Mathf.Sin(wZ * t ))*range;
              transform.rotation =  Quaternion.Euler(new Vector3(aX * 20 * Mathf.Sin(wX * t ), aY * 20 * Mathf.Sin(wY * t ), aZ * 20 * Mathf.Sin(wZ * t +)));
       }
    

    这样一个简单的效果就实现啦。具体的运动幅度可以通过调节参数来控制。

    GIF_20161001_145104.gif

    相关文章

      网友评论

          本文标题:物体随机浮动的效果

          本文链接:https://www.haomeiwen.com/subject/mrvryttx.html