第一人称和第三人称之间的相机切换。显示错误

Posted

技术标签:

【中文标题】第一人称和第三人称之间的相机切换。显示错误【英文标题】:Camera switch between First and third person. Showing error 【发布时间】:2021-11-19 10:16:58 【问题描述】:

我正在尝试在第一人称和第三人称之间切换相机。代码如下:

[SerializeField]
private Camera ThirdPersonCam;
private KeyCode switchKey;

//Assingables
public Transform playerCam;
public Transform orientation;

private void Update()

    MyInput();
    Look();

    if (Input.GetKeyDown(switchKey))
    
        playerCam.enabled = !playerCam.enabled;
        ThirdPersonCam.enabled = !ThirdPersonCam.enabled;
    

但是,在这一行playerCam.enabled = !playerCam.enabled; 中,它显示了这个错误:

'Transform' does not contain a definition for 'enabled' and no accessible extension method 'enabled' accepting a first argument of type 'Transform' could be found (are you missing a using directive or an assembly reference?

但在它下面的行中,它没有显示。我很困惑为什么会这样,enabledTransform 的定义。谁能帮我解决一下。

谢谢。

【问题讨论】:

正确。转换没有启用的属性。游戏对象可以。要么保持引用点头游戏对象或调整你的代码告诉游戏对象启用 【参考方案1】:

正如它所说,Transform 没有定义enabled。您应该将变量类型从 Transform 更改为 Camera,因为您尝试访问相机而不是位置。

所以不是这个,

private Transform playerCam;

改成这个;

private Camera playerCam;

【讨论】:

【参考方案2】:

据我所知,文档中没有“启用”Transform:https://docs.unity3d.com/ScriptReference/Transform.html 如果您想通过引用其转换来反转活动状态(也称为启用),请使用:

playerCam.gameObject.SetActive(!playerCam.gameObject.activeSelf)

由于这有点令人费解,因此保留对游戏对象本身的引用而不是它们的变换通常是有意义的。

【讨论】:

【参考方案3】:

您已将全局/可序列化 playerCam 定义为转换类型,因此您无法启用/禁用它们。 把类型改成Camera就好了

[SerializeField]
private Camera ThirdPersonCam;
private KeyCode switchKey;

//Assingables
public Camera playerCam;
public Transform orientation;

【讨论】:

以上是关于第一人称和第三人称之间的相机切换。显示错误的主要内容,如果未能解决你的问题,请参考以下文章

Unity3d怎么控制第三人称的朝向

OpenGL,第一人称相机翻译

Unity使用官方第一人称控制器(第三人称参考)

sedog绅士常来

unity3d第三人称wasd控制的C#代码move函数的

使用vue学习three.js之移动相机-使用第一人称控件FirstPersonControls控制相机