[Unity3D]Unity3D游戲開發之連續滾動背景


 在諸如天天跑酷等2D游戲中。因為游戲須要表現出運動的感覺。通常都會使游戲背景連續循環滾動以增強視覺效果,那么今天。博主就來帶領大家一起來實現連續滾動背景吧。

         首先來講述一下原理。准備兩張連續的圖片(博主這里使用了一張圖片,好吧,我偷懶了),我們使用正交投影的攝像機對准第一張背景,然后使用腳本讓圖片自右向左開始移動,當第一張圖片移出攝像機的視野時。第二張圖片馬上接在第一張圖的后面,繼續向左移動,而當第二張圖片移出攝像機視野時,第一張圖片會馬上接在第二張圖片的后面,如此周而復始,就實現了連續滾動背景。好了,以下,我們一起開始,首先我們創建一個空的項目,我們須要增加一個Plane並將其命名為Bg0、一個 平行光源。

參數設置例如以下圖:


       接下來。我們 將 實現准備好的背景圖片拖放到Bg0上,然后調整攝像機的視野大小,使第一張圖片恰好位於其視野中,然后我們將Bg0復制出一個副本並命名為Bg1。調整其位置,使其接在第一張圖片的后面,此時,場景效果例如以下圖:

      

         好了。接下來。我們開始編寫腳本。代碼十分簡單:

[csharp]  view plain copy print ? 在CODE上查看代碼片 派生到我的代碼片
  1. using UnityEngine;  
  2. using System.Collections;  
  3.   
  4. public class BGControll : MonoBehaviour {  
  5.       
  6.     //Move Speed;  
  7.     private float mSpeed=3.0F;  
  8.     void Start ()   
  9.     {  
  10.       
  11.     }  
  12.       
  13.       
  14.     void Update ()   
  15.     {  
  16.        //Translate form right to left  
  17.        transform.Translate(Vector3.right * Time.deltaTime * mSpeed);  
  18.        // If first background is out of camera view,then show sencond background  
  19.        if(transform.position.x<=-11.8F)  
  20.        {  
  21.           //We can chenge this value to reduce the wdith between 2 background  
  22.           transform.position=new Vector3(11.8F,transform.position.y,transform.position.z);  
  23.        }  
  24.     }  
  25. }  

           我認為大家對代碼應該不會有什么疑問吧,唯一的疑問可能來自於-11.8。這個值是第一張圖片離開攝像機視野的臨界值,這個值怎么得到呢。大家能夠將游戲視圖改為標准視圖,然后用鼠標拖動第一個背景圖片來獲取,這里就不再多說了,最后來看下游戲執行效果吧。


       以后的效果演示都會採用動畫演示,希望大家喜歡,謝謝!

       補充內容:經過博主自己研究,假設在畫面滾動的時候出現縫隙,這是因為兩個畫面在運動過程中相互碰撞導致的,所以我們僅僅須要將其碰撞器勾選isTrigger取消碰撞就可以,


轉載:本文出處:原文出處


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM