Unity3D中怎样让摄像机跟随小球移动而不旋转?

在Unity中,我们经常需要让摄像机跟随一个物体移动,如果物体是水平移动的,而自身没有发生任何的偏转,那么我们可以直接将摄像机放在该物体下。这样就可以实现它们一起移动了,但是,如果移动的物体是圆的,比如小球,它在移动的过程中,自身是不断旋转的,所以,摄像机也会跟着一起旋转,那么我们看到得画面将是天旋地转的,很明显,这样是不行的。那么我们该如何正确的让摄像机跟随小球一起运动呢?

不可用的方法:

  • 01

    如图所示,我们已经给小球添加了移动的脚本,小球是Sphere,现在想实现的是让摄像机MainCamera跟随小球一起运动。

  • 02

    我们先来看看上面说的不可行的方法:如图,直接将"Main Camera"拖动到"Sphere"的子目录,即让摄像机成为小球的子物体,这样,两个对象就可以一起运动了,那么我们来看看到底可不可行。

  • 03

    我们记录一开始两物体的位置,此时让小球向右移动,此时,我们从这个视角看去,的确是一起运动了,但是,这不是我们在游戏里面看到得视角,我们看到的是摄像机的视角。

  • 04

    运行游戏后,我们可以看到,画面是"天旋地转"的。所以,这种方法对于自身还在运动的物体来时,是不可行的。那么下来我们说说正确的做法。

正确的方法:

  • 01

    我们要实现的是让相机跟随物体一起移动,其实就是让相机和小球的相对位置不变即可。这里我们需要使用代码来控制两个对象之间的相对位置,使其保持不变。 首先,在MainCamera里面创建一个C# 脚本。如图所示,点击MainCamera,在右边属性栏最下方,选择 AddComponent。然后,在弹出的选项里拉到最下方,选择NewScript,然后创建一个C#脚本,命名为 Move。此时可以看到,我们新添加的一个C#脚本。

  • 02

    然后,开始写代码了。我们打开这个C# 脚本,我们要让摄像机和小球的相对位置保持不变,那么就必须获取到小球的位置。在Unity里,我们用transform 组件来获取一个物体的位置。所以先定义一个transform组件,命名为bolltransform,选择保存。

  • 03

    此时,我们返回Unity,在MainCamera的C#脚本里,多了一项。这里就是我们要添加的组件,可以看到这里还没有添加组件。我们要获取的是小球的位置,所以我们需要添加Sphere:将Sphere用鼠标拖进这个选择框即可。这样,我们就成功的将摄像机和小球关联了起来。

  • 04

    我们点击小球,在右边的属性栏里可以看见小球的一个transform属性,只要小球一开始运动,那么它的transform属性的值就被传递到了相机的bolltransform那里。我想,这里大家都是非常明白的。

  • 05

    我们已经获取到了小球的位置,要使得它们之间的位置不变,也就是说小球和摄像机之间初始的偏移量始终不变就可以了。 所以,第一步:我们首先要计算出小球和摄像机之间的偏移量。 我们把偏移量设为offset,并且计算出offset。用代码定义出来,因为偏移量是三维空间,所以我们用到Vector3。继续在c#脚本里写。如图所示:

  • 06

    第二步:写出它们之间的关系,即 初始偏移量=摄像机的位置-小球的位置。用代码表示出来如下图所示:

  • 07

    第三步,我们要通过此公式确定摄像机的位置,即:小球的位置+偏移量就等于摄像机的位置。而小球是不停地在动的,我们要不停的更新计算摄像机的位置,而在unity里,update方法是不停地执行的。所以这一步的公式需要写在 Update方法里面就可以了。在update里面写上:transform.postion=offset+bolltransform.postion ;

  • 08

    这样,整个过程就完成了,我们保存,开始运行,可以看到,现在摄像机看到的画面也就一起跟着小球运动了。这就是在unity中用代码控制两个对象,使其距离保持不变的方法。我想,通过我这样的讲解,大家应该都懂了吧!

    总结:

    • 01

      Unity3D是一款非常不错的游戏引擎,也是非常强大和值得学习的。这其中有许许多多的方法的技巧,是值得我们去向别人请教的。我和大家一样,也是unity3D的爱好者。在unity3D的学习中,如果大家有什么疑问,都可以在下方留言,我非常乐意和大家一起讨论!

    (0)

    相关推荐

    • Unity3D摄像机跟随小球移动而不旋转的设置方法

      在Unity中,我们经常需要让摄像机跟随一个物体移动,如果物体是水平移动的,而自身没有发生任何的偏转,那么我们可以直接将摄像机放在该物体下.这样就可以实现它们一起移动了,但是,如果移动的物体是圆的,比 ...

    • Unity3D摄像机跟随小球移动而不旋转如何设置

      Unity3D摄像机跟随小球移动而不旋转如何设置

    • Word中怎么做文字跟随文本框一起旋转的效果?

      有时我们会在Word中画简单地图,这时会用到文本框,会让其内的文字跟随文本框一起旋转,下面简单介绍一下 1.打开Word文档,并插入文本框,在文本框内输入需要的文字 2.复制该文本框,然后点击“编辑” ...

    • 在Word中怎么使文字跟随文本框一起旋转

      有时我们会在Word中画简单地图,这时会用到文本框,会让其内的文字跟随文本框一起旋转,下面简单介绍一下 操作方法 01 打开Word文档,并插入文本框,在文本框内输入需要的文字 02 复制该文本框,然 ...

    • 3Dmax怎么做摄像机跟随路径动画-试汇8.5怎么做

      3Ds max9试题汇编为人力资源和社会保障部计算机信息高新技术考试指定教材:现在分享学习动画部分8.5怎么做,即怎么做一个摄像机跟随路径动画: 操作方法 01 打开题目指定的素材文件:如8.4题,选 ...

    • unity3d中如何创建UI按钮功能

      unity3d中通过对一个按钮的创建使用,从而了解unity3d中UI的使用. 1.打开unity3d项目"GameObject"--"UI"--"B ...

    • unity3d中四种光源有什么区别?

      之前简单介绍了一下unity3d中的光源分类,默认情况下的光源是白色的.对于需要创建绚丽或者唯美的游戏,实在不妥.可是很好,unity3d中的光源经过合适的调整,就可以创建出非常美丽的画面,下面对此详 ...

    • unity3d中怎么创建UI按钮功能?

      unity3d中通过对一个按钮的创建使用,从而了解unity3d中UI的使用. 1.打开unity3d项目“GameObject”--“UI”--“Button”,创建一个按钮. 2.在“Rect T ...

    • unity3d 中添加天空盒子

      这篇主要讲诉了在unity3d场景中如何添加天空盒子 操作方法 01 第一步,先下载组成天空盒子的天空图片 02 第二步,把天空图片拖进unity3d中创建的文件夹 03 第三步,新建一个材质球 04 ...