Unity 4.x遊戲開發技巧集錦第2章攝像機的應用
Unity 4.x遊戲開發技巧集錦第2章攝像機的應用
作為遊戲開發者,千萬不要忽略了攝像機(Camera)的重要性。畢竟玩家是通過攝像機,才看到了遊戲的檢視。本章將介紹一些攝像機的常見應用。本文選自《Unity 4.x遊戲開發技巧集錦》
Unity 4.x遊戲開發技巧集錦2.1 設定雙遊戲檢視
很多遊戲裡,一個遊戲的檢視中,經常會包含另一個遊戲檢視。而兩個檢視所呈現的,是由兩個攝像機在場景的不同位置所拍攝的畫面。例如,《QQ飛車》中,除了第三人稱檢視以外,遊戲檢視的右側還有一個跑道位置預覽檢視,如圖2-1所示。本節將模擬這種情況,然後說明生成這種檢視效果的方法。本文選自《Unity 4.x遊戲開發技巧集錦》
圖2-1 《QQ飛車》中的雙遊戲檢視
Unity 4.x遊戲開發技巧集錦2.1.1 環境準備
首先,除了場景中預設生成的Main Camera物件外,還需要為場景新增4個遊戲物件:Directional light、Camera、Cube和Sphere。改變兩個攝像機的位置,使得它們看到場景中不同的遊戲物件,如圖2-2所示。
圖2-2 為場景新增遊戲物件,並調整它們的位置
Main Camera所拍攝到的檢視裡有球體,Camera所拍攝到的檢視裡有立方體,修改Camera拍攝檢視的背景顏色,具體操作是:選中Camera,在檢視器中修改名為Camera的元件的Background屬性為其它的顏色,如圖2-3所示。最終兩個遊戲檢視合併時,背景顏色可以區分兩個檢視的邊界。本文選自《Unity 4.x遊戲開發技巧集錦》
圖2-3 修改攝像機所拍攝檢視的背景顏色
Unity 4.x遊戲開發技巧集錦2.1.2 編寫指令碼
然後,在Project檢視裡建立一個C#指令碼檔案,並命名為PictureInPicture。開啟指令碼檔案,並向其中新增如下程式碼:本文選自《Unity 4.x遊戲開發技巧集錦》
- 01 using UnityEngine;
- 02
- 03 public class PictureInPicture : MonoBehaviour
- 04 {
- 05 //定義列舉型別
- 06 public enum HorizontalAlignment{left, center, right};
- 07 public enum VerticalAlignment{top, middle, bottom};
- 08 public enum ScreenDimensions{pixels, screen_percentage};
- 09 //定義列舉型別的變數
- 10 public HorizontalAlignment horizontalAlignment = HorizontalAlignment.left;
- 11 public VerticalAlignment verticalAlignment = VerticalAlignment.top;
- 12 public ScreenDimensions dimensionsIn = ScreenDimensions.pixels;
- 13
- 14 public int width = 50;
- 15 public int height= 50;
- 16 public float xOffset = 0f;
- 17 public float yOffset = 0f;
- 18 public bool update = true;
- 19
- 20 private int hsize, vsize, hloc, vloc;
- 21 //遊戲物件初始化時,呼叫此函式
- 22 void Start ()
- 23 {
- 24 AdjustCamera ();
- 25 }
- 26 // 遊戲執行時,每一幀都呼叫此函式
- 27 void Update ()
- 28 {
- 29 if(update)
- 30 AdjustCamera ();
- 31 }
- 32 void AdjustCamera()
- 33 {
- 34 if(dimensionsIn == ScreenDimensions.screen_percentage) //調節檢視為指定百分比大小
- 35 {
- 36 hsize = Mathf.RoundToInt(width * 0.01f * Screen.width);
- 37 vsize = Mathf.RoundToInt(height * 0.01f * Screen.height);
- 38 }
- 39 else //調節檢視為指定畫素大小
- 40 {
- 41 hsize = width;
- 42 vsize = height;
- 43 }
- 44 if(horizontalAlignment == HorizontalAlignment.left) //水平方向上是左對齊
- 45 {
- 46 hloc = Mathf.RoundToInt(xOffset * 0.01f * Screen.width);
- 47 }
- 48 else if(horizontalAlignment == HorizontalAlignment.right) //水平方向上是右對齊
- 49 {
- 50 hloc = Mathf.RoundToInt((Screen.width - hsize) - (xOffset * 0.01f * Screen.width));
- 51 }
- 52 else //水平方向上是居中對齊
- 53 {
- 54 hloc = Mathf.RoundToInt(((Screen.width * 0.5f) -
- 55 (hsize * 0.5f)) - (xOffset * 0.01f * Screen.height));
- 56 }
- 57 if(verticalAlignment == VerticalAlignment.top) //垂直方向上是頂端對齊
- 58 {
- 59 vloc = Mathf.RoundToInt((Screen.height - vsize) - (yOffset * 0.01f * Screen.height));
- 60 }
- 61 else if(verticalAlignment == VerticalAlignment.bottom) //垂直方向上是底端對齊
- 62 {
- 63 vloc = Mathf.RoundToInt(yOffset * 0.01f * Screen.height);
- 64 }
- 65 else //垂直方向上是居中對齊
- 66 {
- 67 vloc = Mathf.RoundToInt(((Screen.height * 0.5f) -
- 68 (vsize * 0.5f)) - (yOffset * 0.01f * Screen.height));
- 69 }
- 70 camera.pixelRect = new Rect(hloc,vloc,hsize,vsize);
- 71 }
- 72 }
指令碼將依據使用者自定義的設定,決定該如何擺放,以及以多大的尺寸,顯示Camera所拍攝的檢視。本文選自《Unity 4.x遊戲開發技巧集錦》
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29597077/viewspace-1304304/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 喵的Unity遊戲開發之路 - 軌道攝像機Unity遊戲開發
- PageMaker排版製作精彩應用技巧集錦
- Portal開發與配置技巧集錦(一)
- Portal開發與配置技巧集錦(二)
- Portal開發與配置技巧集錦(三)
- Unity遊戲示例來了,用Unity開源遊戲資源做遊戲,遊戲開發不再難!Unity遊戲開發
- 3D遊戲引擎之遊戲攝像機的使用 公開課直播視訊3D遊戲引擎
- 搭建一個攝像頭應用程式 應用程式內部攝像頭
- 【Unity3D開發小遊戲】《戰棋小遊戲》Unity開發教程Unity3D遊戲
- 《Unity 3D 遊戲開發(第2版)》讀後感Unity3D遊戲開發
- .NET 攝像頭採集
- 橫版遊戲的攝像機移動理論與實踐(上)遊戲
- 攝像機控制軟體CaptureGRID更好的幫您管理攝像機APT
- 喵的Unity遊戲開發之路 - 推球:遊戲中的物理Unity遊戲開發
- Unity 3d UI獲取外部攝像頭拍攝Unity3DUI
- SYBASE 使用技巧集錦(zt)
- UVC 攝像頭在 RK3399 上的應用
- 成功在德國發布應用或遊戲的 6 個技巧遊戲
- 遊戲開發第6天遊戲開發
- 機器學習將在遊戲開發中的6種應用機器學習遊戲開發
- Android開發錯誤集錦Android
- unity3d開發的大型網路遊戲Unity3D遊戲
- 《Unity移動遊戲開發》讀後感Unity遊戲開發
- iOS應用自動撥打電話,開啟攝像頭缺陷iOS
- 安卓開發之呼叫攝像頭安卓
- 17款Unity開發遊戲可以用到的外掛Unity開發遊戲
- 【Unity 框架】 QFramework v1.0 使用指南 工具篇: 16. LiveCodingKit 寫程式碼不用停止執行的利器 | Unity 遊戲框架 | Unity 遊戲開發 | Unity 獨立遊戲Unity框架Framework遊戲開發
- 遊戲開發工具推薦:Unity Pro 2018 for Mac遊戲開發UnityMac
- unity 區域網遊戲開發知識點Unity遊戲開發
- 【Unity遊戲開發】SpriteAtlas與AssetBundle最佳食用方案Unity遊戲開發
- PHP開發常用程式碼集錦PHP
- 知物由學|遊戲開發者如何從容應對Unity手遊風險?遊戲開發Unity
- android 開啟攝像頭Android
- Win10系統如何開啟網路攝像頭應用設定Win10
- 用Unity開發一款塔防遊戲(一):攻擊方設計Unity遊戲
- win10相機為什麼打不開攝像頭黑屏 win10攝像頭開啟黑屏Win10
- 對話遊戲開發平臺Unity高管:疫情下的遊戲產業挑戰與機遇並存遊戲開發Unity產業
- unity遊戲開發雜項系列:unity在商店裡下載的package儲存位置Unity遊戲開發Package
- Unity中國全面支援OpenHarmony遊戲開發,多款遊戲率先完成適配Unity遊戲開發