創作內容

13 GP

[C#/Unity] 腳本分享 - 攝影機捕捉多角色

作者:HaoX@ミリシタ│Unity(遊戲引擎)│2019-02-09 02:30:45│巴幣:2,022│人氣:802
Unity 腳本分享 - 攝影機捕捉多角色

[前言]

最近在開發2D遊戲攝影機的時候,參考到一篇2D攝影機設計經典文章

就是2015年的這篇 Scroll Back - 2D 捲軸遊戲的攝影機理論與實務 (感謝大統領翻譯)

其中有提到,在多人操作的時候,會希望攝影機能照到所有角色,這篇就將討論如何實做這件事。

任天堂明星大亂鬥是這種攝影機的翹楚

[分析]

在開始製作之前,我們先試著簡化遇到的問題


從上面這張圖來看,四個紅圈是我們的目標(角色),我們希望的是將他們都顯示在畫面中。
那也就是說,我們希望能夠用一個長方形(螢幕)來塞下他們全部。

如下圖

我當初看到這個問題的時候,馬上想到演算法學到的convex-hull問題,
找出最小凸包之後,就可以沿著凸包求得最小的方形。

但是在我們攝影機不會旋轉的情況,我們不需要那麼麻煩,因為軸是固定的,
我們只要找到這些點之中最大和最小的x,y值即可
如下圖

判斷的程式碼如下

接著我們就可以利用判斷出來的這四個點做延伸,找出目標的長方形


此時將攝影機放在這個長方形的中心點,再將攝影機縮放到比長方形大小還要大
就可以拍到所有角色囉!

[實作]

接下來實作長方形大小的計算,以及攝影機的縮放部分

這邊我的攝影機縮放以orthographic的攝影機為例(因為直接size乘上去就好),
使用投影的情況就再額外計算Z軸距離吧!

以下是我實作的程式碼:

使用前面說的方法獲得整個長方形的四個點之後,可以簡單地算出他們的中心點(第15行)
接著算出畫面長寬相對於長方形的長寬比例,將較大的一方回傳給攝影機設定就可以了!(17~20行以及22行所做)


執行結果大致如下影片

整個專案的repo在這,如果有興趣也歡迎參考使用喔XD
引用網址:https://home.gamer.com.tw/TrackBack.php?sn=4287854
All rights reserved. 版權所有,保留一切權利

相關創作

同標籤作品搜尋:C#|CSharp|Programming|程式|遊戲製作|Unity|遊戲引擎|Unity(遊戲引擎)|Unity(遊戲引擎)

留言共 0 篇留言

我要留言提醒:您尚未登入,請先登入再留言

13喜歡★haolf2 可決定是否刪除您的留言,請勿發表違反站規文字。

前一篇:[C#/Unity] O... 後一篇:[遊戲上架] \遊戲上架...

追蹤私訊切換新版閱覽

作品資料夾

Lobster0627全體巴友
大家可以多多來我的YT頻道看看哦(*´∀`)~♥https://www.youtube.com/@lobstersandwich看更多我要大聲說11小時前


face基於日前微軟官方表示 Internet Explorer 不再支援新的網路標準,可能無法使用新的應用程式來呈現網站內容,在瀏覽器支援度及網站安全性的雙重考量下,為了讓巴友們有更好的使用體驗,巴哈姆特即將於 2019年9月2日 停止支援 Internet Explorer 瀏覽器的頁面呈現和功能。
屆時建議您使用下述瀏覽器來瀏覽巴哈姆特:
。Google Chrome(推薦)
。Mozilla Firefox
。Microsoft Edge(Windows10以上的作業系統版本才可使用)

face我們了解您不想看到廣告的心情⋯ 若您願意支持巴哈姆特永續經營,請將 gamer.com.tw 加入廣告阻擋工具的白名單中,謝謝 !【教學】