// 搜刮尸体 public void OnCorpseTry_Imp() { if (state == Room1State.FindingNeeded) { // TODO: 拿到了尸体C4 state = Room1State.FindingIDCard; Destroy(corpse); } }
// Use this for initialization void Start() { // 场景状态初始 state = Room1State.Initing; gameObjects = new GameObject[gameObjectCount]; elevator.playOnAwake = false; //camera = GameObject.FindWithTag("MainCamera").GetComponent<Camera>(); //enemysList = new List<GameObject>(); FadeInOutUtil.SetFadingState(5.0f, Util.GetCamera(), Color.black, FadeInOutUtil.FADING_STATE.FADING_IN); }
// 改进后的函数,所有钥匙的事件分ID处理 public void OnKeyGot_Imp(int id) { Debug.Log("id: " + id + " state: " + state); switch (id) { // 第一个钥匙 case 0: if (state == Room1State.FindingKey1) { Destroy(key1); state = Room1State.FindingKey2; AIController.instance.CreateAI(2, 0, "AIborn2", _wanderAIAgentInitParams[3]); AIController.instance.CreateAI(2, 0, "AIborn2", _wanderAIAgentInitParams[4]); AIController.instance.CreateAI(2, 0, "AIborn2", _wanderAIAgentInitParams[5]); } break; // 第二个钥匙 case 1: if (state == Room1State.FindingKey2) { Destroy(key2); state = Room1State.TryingToOpenRoom; AIController.instance.CreateAI(2, 0, "AIborn3", _wanderAIAgentInitParams[6]); AIController.instance.CreateAI(2, 0, "AIborn3", _wanderAIAgentInitParams[7]); AIController.instance.CreateAI(2, 0, "AIborn3", _wanderAIAgentInitParams[8]); } break; // ID卡(也当成钥匙了) case 2: if (state == Room1State.FindingIDCard) { Destroy(IDCard); state = Room1State.EscapingRoom; escapeGameObject.SetActive(true); escapePosition = escapeGameObject.transform.position; AIController.instance.CreateAI(2, 3, "AIborn1", _trackingAIAgentInitParams[0]); AIController.instance.CreateAI(2, 3, "AIborn1", _trackingAIAgentInitParams[0]); AIController.instance.CreateAI(2, 3, "AIborn1", _trackingAIAgentInitParams[0]); AIController.instance.CreateAI(2, 3, "AIborn2", _trackingAIAgentInitParams[0]); AIController.instance.CreateAI(2, 3, "AIborn2", _trackingAIAgentInitParams[0]); AIController.instance.CreateAI(2, 3, "AIborn2", _trackingAIAgentInitParams[0]); AIController.instance.CreateAI(2, 3, "AIborn3", _trackingAIAgentInitParams[0]); AIController.instance.CreateAI(2, 3, "AIborn3", _trackingAIAgentInitParams[0]); AIController.instance.CreateAI(2, 3, "AIborn3", _trackingAIAgentInitParams[0]); AIController.instance.CreateAI(2, 3, "AIborn4", _trackingAIAgentInitParams[0]); AIController.instance.CreateAI(2, 3, "AIborn4", _trackingAIAgentInitParams[0]); AIController.instance.CreateAI(2, 3, "AIborn4", _trackingAIAgentInitParams[0]); } break; } }
// Update is called once per frame void Update() { FadeInOutUtil.UpdateState(); switch (state) { // 场景的初始状态 case Room1State.Initing: InitAllGameObject(); subtitlesToDisplay = subtitleInitToDisplay; Key1WorldPosition = key1.transform.position; Key2WorldPosition = key2.transform.position; CropseWorldPosition = corpse.transform.position; IDCardWorldPosition = IDCard.transform.position; //StartCoroutine(EnemyCreateRountine()); state = Room1State.FindingKey1; break; // 玩家正在找第一个钥匙 case Room1State.FindingKey1: break; // 玩家正在找第二个钥匙 case Room1State.FindingKey2: break; // 玩家正准备尝试开最后一个门 case Room1State.TryingToOpenRoom: break; // 玩家正在找必需品 case Room1State.FindingNeeded: subtitlesToDisplay = subtitleOpenDoorFalseToDisplay; break; // 玩家正在找ID卡 case Room1State.FindingIDCard: break; // 玩家正在逃离房间 case Room1State.EscapingRoom: subtitlesToDisplay = subtitleEscapingToDisplay; break; } }
// 改进后的函数,所有门的事件分ID处理 public void OnDoorOpen_Imp(int id) { switch (id) { // 第一扇门 case 0: if (state == Room1State.FindingKey1) { Debug.Log("WindyIce"); doorStart.GetComponent <DoorScript>().OpenAndDestroy(10.0f, DoorScript.DoorOpenDirection.ZNegative); doorStart.GetComponent <HintableObject>().DestroyThis(); } break; // 第二扇门 case 1: if (state == Room1State.FindingKey2) { door1.GetComponent <DoorScript>().OpenAndDestroy(10.0f, DoorScript.DoorOpenDirection.XPositive); door1.GetComponent <HintableObject>().DestroyThis(); } break; // 第三扇门 case 2: if (state == Room1State.TryingToOpenRoom) { // TODO: 玩家打开门失败 state = Room1State.FindingNeeded; } else if (state == Room1State.FindingIDCard) { C4Door.SetActive(true); StartCoroutine(WaitForExplosion(9.0f)); } break; } }