/** * @brief 캐릭터가 죽을 시 리스폰을 하는 코루틴 입니다. * * @param playerObject 리스폰 시킬 플레이어 게임오브젝트 * @param _teamInfo 리스폰 시킬 플레이어의 팀 정보 */ IEnumerator CouroutinRespawn(GameObject playerObject, ETeamInfo _teamInfo) { // 플레이어 오브젝트가 없다면 코루틴 종료 if (!playerObject) { Debug.LogError("Have not Player Information"); yield break; } // 캐릭터를 잠시 비활성화 시킴 playerObject.SetActive(false); // 설정된 리스폰 딜레이 시간만큼 기다림 yield return(new WaitForSeconds(respawnDelay)); // 플레이어 오브젝트의 최상위 부모를 가져옴 Transform playerTransform = playerObject.transform; // 위치를 스타팅 지점으로 초기화 playerTransform.position = startingList[(int)_teamInfo].position; // 캐릭터 회전값 초기화 playerTransform.forward = startingList[(int)_teamInfo].forward; // 플레이어 컴포넌트를 가져옴 UPlayer _playerComponent = playerObject.GetComponent <UPlayer>(); if (_playerComponent) { // 플레이어의 체력 등 필요한 정보를 초기화 _playerComponent.Initialize(); } // 리스폰 시간이 지났다면 다시 활성화 playerObject.SetActive(true); yield break; }