6

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

注意到目前为止,我的所有代码都在 C# 中。

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

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

就我看来它们的优点和缺点:

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

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

4

1 回答 1

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。

于 2012-10-31T03:20:31.030 回答