UNITY3D:将玩家控制权改为目标模型(FPS)

时间:2012-10-08 01:17:52

标签: c# unity3d

我正在Unity 3.5.5f中开发一个小型游戏原型 - 玩家控制着一个控制外星人的小脑袋。玩家需要能够控制目标人类NPC,将所有摄像头和控制切换到相关人员。

N.B。到目前为止,我的所有代码都在C#中。

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

  1. 关卡中的每个人都有一个停用的FPS控制器脚本(以及随附的脚本)。这些脚本在受控制时被激活(在此期间禁用外星人的脚本)。
  2. 从外星人那里分离当前的脚本并将它们附加到目标人类身上。
  3. 就我看来的利弊而言:

    1. 可以有单独的外星人/人控制脚本(即不需要使用国家输入 - 例如可以在人类身上开枪,而不是在LMB上作为外星人进行近战)。这种方法很烦人。
    2. 此方法很干净,但播放器的代码文件会大得多,因为我无法轻易分离输入代码。
    3. 编辑:一位朋友指出,是的,NPC有自己的脚本需要被禁用。

1 个答案:

答案 0 :(得分:2)

这在概念上非常简单。 让NPC类似于玩家类,因为只要某些事情属实,它就会接受控制。
例如:

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。