首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当相机跟随一个球时,哪一个应该控制摄像机的位置?球还是摄像机本身?

当相机跟随一个球时,哪一个应该控制摄像机的位置?球还是摄像机本身?
EN

Stack Overflow用户
提问于 2019-06-17 15:27:18
回答 1查看 69关注 0票数 2

我正在学习Unity3D,现在创建一个琐碎(无用)的游戏如下所示。

球从倾斜的地板上滚下,摄像机必须跟着球,有以下的关系

  • x摄像机= x
  • y摄像机= y球+3
  • z摄像机= z - 10

有两种可能的方法来控制相机的位置。

球控制着摄像机

在这个场景中,我将下面的脚本附加到球上。

代码语言:javascript
复制
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;
    }
}

相机控制自己

在这个场景中,我将下面的脚本附加到照相机上。

代码语言:javascript
复制
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;
    }
}

问题

尽管这两种方法都如预期的那样工作,但我想知道每种方法是否都有任何优缺点。我应该用哪一种?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-06-17 15:51:03

正如您已经提到的,这两个示例都如预期的那样工作。

不过,我喜欢做的是将功能分配给负责执行“操作”的对象。在这种情况下,相机是‘跟踪’的东西。目前,它是跟踪球,但后来,如果你想让它跟随其他东西,它是否有意义,必须导航到你的球游戏对象,以改变这种行为?我不这么认为。

通过根据“责任”为对象分配功能,您通常会发现,从长远来看,您的代码最终是更加模块化的。

当然,这种实践对于游戏开发或软件开发来说都不是什么新鲜事。它补充了单一责任原则,并分享了它的许多品质。

但是,在一天结束时,如果您单独处理代码,那么您将从内到外了解代码基。所以这真的取决于你!

我还建议尽可能根据这些职责创建Components。因此,我将创建一个Camera组件,并将其附加到相机上,而不是一个通用的FollowTarget组件。在这样做的过程中,您将能够使用相同的Component使其他任意对象跟随游戏中的另一个任意对象。

学习愉快!

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56634419

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档