在諸如天天跑酷等2D游戲中。因為游戲須要表現出運動的感覺。通常都會使游戲背景連續循環滾動以增強視覺效果,那么今天。博主就來帶領大家一起來實現連續滾動背景吧。
首先來講述一下原理。准備兩張連續的圖片(博主這里使用了一張圖片,好吧,我偷懶了),我們使用正交投影的攝像機對准第一張背景,然后使用腳本讓圖片自右向左開始移動,當第一張圖片移出攝像機的視野時。第二張圖片馬上接在第一張圖的后面,繼續向左移動,而當第二張圖片移出攝像機視野時,第一張圖片會馬上接在第二張圖片的后面,如此周而復始,就實現了連續滾動背景。好了,以下,我們一起開始,首先我們創建一個空的項目,我們須要增加一個Plane並將其命名為Bg0、一個 平行光源。
參數設置例如以下圖:
接下來。我們 將 實現准備好的背景圖片拖放到Bg0上,然后調整攝像機的視野大小,使第一張圖片恰好位於其視野中,然后我們將Bg0復制出一個副本並命名為Bg1。調整其位置,使其接在第一張圖片的后面,此時,場景效果例如以下圖:
好了。接下來。我們開始編寫腳本。代碼十分簡單:
- using UnityEngine;
- using System.Collections;
- public class BGControll : MonoBehaviour {
- //Move Speed;
- private float mSpeed=3.0F;
- void Start ()
- {
- }
- void Update ()
- {
- //Translate form right to left
- transform.Translate(Vector3.right * Time.deltaTime * mSpeed);
- // If first background is out of camera view,then show sencond background
- if(transform.position.x<=-11.8F)
- {
- //We can chenge this value to reduce the wdith between 2 background
- transform.position=new Vector3(11.8F,transform.position.y,transform.position.z);
- }
- }
- }
我認為大家對代碼應該不會有什么疑問吧,唯一的疑問可能來自於-11.8。這個值是第一張圖片離開攝像機視野的臨界值,這個值怎么得到呢。大家能夠將游戲視圖改為標准視圖,然后用鼠標拖動第一個背景圖片來獲取,這里就不再多說了,最后來看下游戲執行效果吧。
以后的效果演示都會採用動畫演示,希望大家喜歡,謝謝!
補充內容:經過博主自己研究,假設在畫面滾動的時候出現縫隙,這是因為兩個畫面在運動過程中相互碰撞導致的,所以我們僅僅須要將其碰撞器勾選isTrigger取消碰撞就可以,
轉載:本文出處:原文出處