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

Vik*_*ran 6 c# unity-game-engine

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

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

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

  1. 级别中的每个人都有一个停用的FPS控制器脚本(以及附带的脚本).这些脚本在受控时被激活(在此期间禁用外星人的脚本).
  2. 从外星人那里分离当前的脚本并将它们附加到目标人类身上.

就我看来它们的利弊:

  1. 可以有单独的外星人/人类控制脚本(即不需要使用状态输入 - 例如可以在人类身上开枪,而不是在LMB上作为外星人进行近战).这种方法非常困难.
  2. 这个方法很干净,但播放器的代码文件要大得多,因为我不能轻易地分离输入代码.

编辑:一位朋友指出,是的NPC有他们自己的脚本需要被禁用.

Phx*_*per 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.
    }
}
Run Code Online (Sandbox Code Playgroud)

}

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