码迷,mamicode.com
首页 > 编程语言 > 详细

Unity3D之2D游戏的背景补偿效果

时间:2017-06-16 11:33:45      阅读:145      评论:0      收藏:0      [点我收藏+]

标签:ack   cti   oid   round   更新   smo   vector   效果   scale   

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;  } }

Unity3D之2D游戏的背景补偿效果

标签:ack   cti   oid   round   更新   smo   vector   效果   scale   

原文地址:http://www.cnblogs.com/weiqiangwaideshijie/p/7026314.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!