C# UNITY3D:将播放器控件更改为目标模型(FPS)

C# UNITY3D:将播放器控件更改为目标模型(FPS),c#,unity3d,C#,Unity3d,我正在Unity 3.5.5f中开发一个小游戏原型,在这个原型中,玩家控制一个控制心灵的外星人。玩家需要能够控制一个目标人体NPC,将所有摄像机和控制开关切换到相关的人体 注意,到目前为止,我所有的代码都是C语言 关于如何取得进展,我有两个想法,哪一个更可行?(我很乐意听取其他想法) 该级别中的每个人都有一个已停用的FPS控制器脚本(以及附带的脚本)。这些脚本在受控时被激活(在持续时间内禁用外星人的脚本) 从外星人分离当前脚本并将其附加到目标人类 就我看来,它们的优点和缺点是: 可以有单独的外侨

我正在Unity 3.5.5f中开发一个小游戏原型,在这个原型中,玩家控制一个控制心灵的外星人。玩家需要能够控制一个目标人体NPC,将所有摄像机和控制开关切换到相关的人体

注意,到目前为止,我所有的代码都是C语言

关于如何取得进展,我有两个想法,哪一个更可行?(我很乐意听取其他想法)

  • 该级别中的每个人都有一个已停用的FPS控制器脚本(以及附带的脚本)。这些脚本在受控时被激活(在持续时间内禁用外星人的脚本)
  • 从外星人分离当前脚本并将其附加到目标人类
  • 就我看来,它们的优点和缺点是:

  • 可以有单独的外侨/人类控制脚本(即不需要使用状态输入-例如,可以在人类时开火,而不是在LMB上作为外侨进行近战)。这种方法非常混乱
  • 这个方法是干净的,但是播放器的代码文件会更大,因为我不能很容易地分离输入代码

  • 编辑:一位朋友指出,是的,NPC有自己的脚本,需要禁用。

    这在概念上非常简单。 让NPC类似于player类,因为它在任何情况下都接受控制。
    例如:

    class NPC {
    static bool isBeingControlled = false;
    public void OnUpdate() {
        if (isBeingControlled)
        {
            //set camera position to NPC position (make sure you're using NPC as an instantiated class)
            //accept key input WASD or whatever you are using and move NPC according to input.
        }
    }
    
    }

    您必须为游戏中的每个NPC实例化NPC