zoukankan      html  css  js  c++  java
  • Unity3D之2D游戏的背景补偿效果

    public class BackgroundParallax : MonoBehaviour

    {    

         public Transform[] backgrounds; //背景物体

         public float parallaxScale;  //摄像机移动偏移值的缩放系数

         public float parallaxReductionFactor;//背景每一层补偿的系数

         public float smoothing; //背景物体移动的平滑量

          private Transform cam;//摄像机

         private Vector3 previousCamPos;//摄像机上一针的位置   

        void Awake ()

         {

            cam = Camera.main.transform;

         }

         void Start ()

       {  

            previousCamPos = cam.position;

        }

       void Update ()

      {   

         //得到摄像机和上一帧的偏移值

      float parallax = (previousCamPos.x - cam.position.x) * parallaxScale;

         for(int i = 0; i < backgrounds.Length; i++)

      {      

        //每一层的背景补偿运动的速度有不一样,I越大,补偿的速度也就越大

       float backgroundTargetPosX = backgrounds[i].position.x + parallax * (i * parallaxReductionFactor + 1);

       //Y轴方向不动

       Vector3 backgroundTargetPos = new Vector3(backgroundTargetPosX, backgrounds[i].position.y, backgrounds[i].position.z);

       //平滑的移动

       backgrounds[i].position = Vector3.Lerp(backgrounds[i].position, backgroundTargetPos, smoothing * Time.deltaTime);

      }

      //更新上一帧摄像机的位置   previousCamPos = cam.position;  } }

  • 相关阅读:
    mysql 安装
    flying-saucer-pdf使用中字符串过长换行出问题的解决办法
    杂想
    关于MATLAB实验结果求交点问题
    关于学习方向问题
    关于读取文件夹中的图片问题
    关于ROC曲线的碎碎念
    win7(64)+vs2013+opencv3.0配置的辛酸路程
    验证模式和辨识模式
    指纹识别认证
  • 原文地址:https://www.cnblogs.com/weiqiangwaideshijie/p/7026314.html
Copyright © 2011-2022 走看看