亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

當讓相機跟隨一個球時,應該由哪一個來控制相機的位置?球還是相機本身?

當讓相機跟隨一個球時,應該由哪一個來控制相機的位置?球還是相機本身?

C#
藍山帝景 2023-04-16 09:52:03
我正在學習 Unity3D,現在正在創建一個簡單的(無用的)游戲,如下所示。球從傾斜的地板上滾下,相機必須跟隨球,具有以下關系x相機=x球y相機 =y球 + 3z相機 = z- 10有兩種可能的方式來控制相機位置。球控制相機在這種情況下,我將以下腳本附加到球上。public class Ball : MonoBehaviour{    [SerializeField]    private Transform cameraTransform;    void Start() { }    void Update()    {        Vector3 newCameraPos = new Vector3        {            x = transform.position.x,            y = transform.position.y + 3f,            z = transform.position.z - 10f        };        cameraTransform.position = newCameraPos;    }}相機自己控制在這種情況下,我將以下腳本附加到相機。public class Camera : MonoBehaviour{    [SerializeField]    private Transform ballTransform;    void Start() { }    void Update()    {        Vector3 newCameraPos = new Vector3        {            x = ballTransform.position.x,            y = ballTransform.position.y + 3f,            z = ballTransform.position.z - 10f        };        this.transform.position = newCameraPos;    }}問題盡管這兩種方法都按預期工作,但我想知道每種方法是否有優缺點。我應該使用哪一個?
查看完整描述

1 回答

?
梵蒂岡之花

TA貢獻1900條經驗 獲得超5個贊

正如您已經提到的,這兩個示例都按預期工作。

不過,我喜歡做的是將功能分配給負責執行“操作”的對象。在這種情況下,相機正在“跟隨”某物。目前,它正在跟隨球,但以后如果您想讓它跟隨其他東西,是否必須導航到您的球類游戲對象以更改該行為是否有意義?我想不是。

通過根據“職責”為對象分配功能,您通常會發現從長遠來看,您的代碼最終會更加模塊化。

當然,這種做法對于游戲開發或軟件開發來說并不是什么新鮮事。它補充了單一職責原則并分享了它的許多特性。

但是,歸根結底,如果您是獨自編寫代碼,那么您就會對代碼庫了如指掌。所以這真的取決于你!

我還建議Components盡可能根據這些職責進行創建。因此,Camera我不會創建一個通用組件,而是創建一個FollowTarget組件并將其附加到相機上。這樣做時,您將能夠使用相同的功能Component讓其他任意對象跟隨您游戲中的另一個任意對象。

快樂學習!


查看完整回答
反對 回復 2023-04-16
  • 1 回答
  • 0 關注
  • 118 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號