/// <summary> /// [InitContoroller] /// 初期化を行う /// 引数1: This Agent /// </summary> public void InitContoroller(DogAIAgent thisAgent) { m_navMeshAgent = thisAgent.navMeshAgent; m_transform = thisAgent.transform; m_rigidBody = thisAgent.rigidBody; m_rigidBody.constraints = RigidbodyConstraints.FreezeRotation; m_rigidBody.isKinematic = true; m_rigidBody.useGravity = true; }
/// <summary> /// [StartAIFunction] /// AIAgentで呼び出すStart関数 /// 引数1: 自身の所属するAIAgent /// 引数2: 自身の所属するAITable /// </summary> public override void StartAIFunction(AIAgent aiAgent, AITable aiTable) { base.StartAIFunction(aiAgent, aiTable); dogAIAgent = aiAgent as DogAIAgent; #if UNITY_EDITOR if (dogAIAgent == null) { Debug.LogError("Error!! DogAIFunction->StartAIFunction\n AIAgent->DogAIAgent cast failed"); } #endif }
/// <summary> /// [AddServant] /// DogAIAgentを登録する /// 引数1: DogAIAgent /// </summary> public void AddServant(DogAIAgent dogAgent) { //debug only, invalid key対策 #if UNITY_EDITOR if (m_servants.ContainsKey(dogAgent.aiAgentInstanceID)) { Debug.LogError("Error!! ServantManager->AddServant\n ContainsKey(instanceID) == true"); return; } #endif m_servants.Add(dogAgent.aiAgentInstanceID, dogAgent); }
/// <summary> /// [RemoveServant] /// DogAIAgentを登録解除する /// 引数1: DogAIAgent /// </summary> public void RemoveServant(DogAIAgent dogAgent) { //debug only, invalid key対策 #if UNITY_EDITOR if (!m_servants.ContainsKey(dogAgent.aiAgentInstanceID)) { Debug.LogError("Error!! ServantManager->RemoveServant\n ContainsKey(instanceID) == false"); return; } #endif m_servants.Remove(dogAgent.aiAgentInstanceID); }
/// <summary> /// [UnregisterPlayerOfServant] /// DogAIAgentとPlayerを紐付け解除する /// 引数1: DogAIAgent /// 引数2: PlayerObject /// </summary> public void UnregisterPlayerOfServant(DogAIAgent dogAgent, GameObject player) { //debug only, invalid key対策 #if UNITY_EDITOR if (!m_servants.ContainsKey(dogAgent.aiAgentInstanceID)) { Debug.LogError("Error!! ServantManager->RegisterPlayerOfServant\n ContainsKey(instanceID) == false"); return; } if (!m_servantByPlayers.ContainsKey(player.GetInstanceID())) { Debug.LogError("Error!! ServantManager->RegisterPlayerOfServant\n ContainsKey(instanceID) == false"); return; } #endif m_servantByPlayers[player.GetInstanceID()].Remove(dogAgent); }
/// <summary> /// [LinkPlayer] /// プレイヤーとの紐付けを行う /// 引数1: 紐付けるPlayer /// 引数2: 紐付けるDogAgent /// </summary> public void LinkPlayer(GameObject player, DogAIAgent dogAIAgent) { bool isOldLinked = isLinked; //ID登録 linkPlayerID = player.GetInstanceID(); linkServantID = dogAIAgent != null ? dogAIAgent.aiAgentInstanceID : -1; //Managerに紐付け登録 if (!isOldLinked) { PlayerAndTerritoryManager.instance.allPlayers[linkPlayerID].playerInfo.AddMarkPoint(this); } //Timer計測開始 m_timer.Start(); //ポイントタイマーをポーズさせる m_timer.Pause(); //Callback LinkPoint(); }
/// <summary> /// [RegisterPlayerOfServant] /// DogAIAgentとPlayerを紐付けする /// return: dogAgentのPlayer別Index /// 引数1: DogAIAgent /// 引数2: PlayerObject /// 引数3: dogAgent.linkPlayerServantsOwnIndex(out) /// </summary> public void RegisterPlayerOfServant(DogAIAgent dogAgent, GameObject player, out int linkPlayerServantsOwnIndex) { //debug only, invalid key対策 #if UNITY_EDITOR if (!m_servants.ContainsKey(dogAgent.aiAgentInstanceID)) { Debug.LogError("Error!! ServantManager->RegisterPlayerOfServant\n ContainsKey(instanceID) == false"); linkPlayerServantsOwnIndex = -1; return; } if (!m_servantByPlayers.ContainsKey(player.GetInstanceID())) { Debug.LogError("Error!! ServantManager->RegisterPlayerOfServant\n ContainsKey(instanceID) == false"); linkPlayerServantsOwnIndex = -1; return; } #endif m_servantByPlayers[player.GetInstanceID()].Add(dogAgent); linkPlayerServantsOwnIndex = m_servantByPlayers[player.GetInstanceID()].Count - 1; }