Unity3d 统一摄像机跟踪滚球。在相机的Z轴上没有旋转和移动

Unity3d 统一摄像机跟踪滚球。在相机的Z轴上没有旋转和移动,unity3d,camera,rotation,runner,Unity3d,Camera,Rotation,Runner,所以,我正在制作一个3D跑步者,我在让摄像机跟随球时遇到了很多问题。我在谷歌上呆了几个小时,找不到任何不过时的东西,也找不到我需要的东西。我想要一个跟在我的球后面但在X轴上笔直移动的相机。当有楼梯时,相机需要沿Y轴移动 我只是不希望我的相机旋转(因为我的对象是一个滚动的球)并在Z轴上移动 var myPos : Vector3; var myPlay : Transform; function Update() { transform.position = myPlay.position +

所以,我正在制作一个3D跑步者,我在让摄像机跟随球时遇到了很多问题。我在谷歌上呆了几个小时,找不到任何不过时的东西,也找不到我需要的东西。我想要一个跟在我的球后面但在X轴上笔直移动的相机。当有楼梯时,相机需要沿Y轴移动

我只是不希望我的相机旋转(因为我的对象是一个滚动的球)并在Z轴上移动

var myPos : Vector3;
var myPlay : Transform;

function Update()
{
transform.position = myPlay.position + myPos;
}
这是我已经拥有的。它不旋转,但在Z轴上跟随。我不想那样

这是检查员的外观。

根据:


我不能评论@HDL_CinC_Dragon answer,因为我的名声不好,但我想补充一点,使用公共访问修饰符是一个非常坏的习惯。相反,您应该在字段上使用带有SerializeField属性的private access修饰符,如下所示:

public class CameraController : MonoBehaviour
    {
        [SerializeField]
        private GameObject player;

        private Vector3 offset;

请显示您迄今为止尝试的代码参见我发布的答案您使用的是哪个版本的Unity?与以前的版本相比,Unity 5具有独特的引用对象的方式。。。此外,我认为不应该使用C#标记。是的,Unity使用C#但这是一个Unity特定的问题,而不是C#问题…@HDL_CinC#u Dragon re:您建议的编辑-C#标记有问题,但Unity标记肯定是错误的-它应该是unity3d,因为unity标签是关于一个完全不同的库,它甚至明确表示不要将其用于unity3d。我目前正在使用unity 5。我很抱歉把C#标记放进去了,我没有真正考虑它。在这种情况下,玩家
GameObject
已经是一个公共成员,因为它是项目中的一项资产,而不是相机控制器的成员,因为
player
本质上只是公共对象的一个挂钩。我说的不对吗?(到目前为止,我还不是Unity专家,但我觉得这是一个非常具体的案例,
private
[SerializeField]的使用
属性不应该是必需的…除非您希望
游戏对象
在Inspector中显示为摄影机对象的参数,而不仅仅是使用
GetComponent
来定义
玩家
?这与私有和[Serialized Field]不是“必需的”无关,您的属性应该始终是私有的。您可以在任何有关OOP的书籍中阅读原因。我不知道Unity团队是如何构建此项目的,但没有充分的理由将此变量设置为公共的,您有很多不同的方法来避免这一点,在inspector中使用序列化字段只是其中之一。因此,我如何将其添加到脚本中,以便cam不在Z轴上移动?我已经有的脚本有问题。我强烈建议您在提供的链接中观看5分钟的视频。它将比我更好地为您提供所需的信息。
public class CameraController : MonoBehaviour
    {
        [SerializeField]
        private GameObject player;

        private Vector3 offset;