public static IEnumerator CreateTownControllUnitAsync(int PosX, int PosY, System.Action <MyTownUnit> callback) { GameObject _townUnit = new GameObject(); _townUnit.name = "MyTownUnit"; MyTownUnit mtu = _townUnit.AddComponent <MyTownUnit>(); mtu.gameObject.transform.localScale = new Vector3(1.4f, 1.4f, 1.4f); Vector3 pos = NaviTileInfo.instance.GetTilePos(PosX, PosY); NavMeshHit navHit; if (NavMesh.SamplePosition(pos, out navHit, 10, -1)) //<--- 네비게이션 메쉬 높이 때문에 이것도 계산해 주었어야 한다.(몬스터의 값은 비슷하게 온다.) { pos = navHit.position; } mtu.transform.position = pos; mtu.Height = 2.47f; yield return(SceneManager.instance.StartCoroutine(mtu.InitAsync())); mtu.BeforePosX = PosX; mtu.BeforePosY = PosY; callback(mtu); }
public static MyTownUnit CreateTownControllUnit(int PosX, int PosY) { GameObject _townUnit = new GameObject(); _townUnit.name = "MyTownUnit"; MyTownUnit mtu = _townUnit.AddComponent <MyTownUnit>(); mtu.gameObject.transform.localScale = new Vector3(1.4f, 1.4f, 1.4f); Vector3 pos = NaviTileInfo.instance.GetTilePos(PosX, PosY); NavMeshHit navHit; if (NavMesh.SamplePosition(pos, out navHit, 10, -1)) //<--- 네비게이션 메쉬 높이 때문에 이것도 계산해 주었어야 한다.(몬스터의 값은 비슷하게 온다.) { pos = navHit.position; } mtu.transform.position = pos; mtu.Height = 2.47f; mtu.Init(); mtu.BeforePosX = PosX; mtu.BeforePosY = PosY; return(mtu); }
/// <summary> /// 맵로드가 끝나면 캐릭터 생성. /// </summary> void CreateMyTownUnit() { int regenX; int regenY; NetworkClient.instance.GetRegenPos(out regenX, out regenY); NaviTileInfo.instance.LoadTile("maintown"); // take 0.8sec MyHero = MyTownUnit.CreateTownControllUnit(regenX, regenY); // take 0.9 sec MyHero.m_rUUID = NetData.instance._userInfo._charUUID; }
public void Init() { TownState townstate = SceneManager.instance.CurrentStateBase() as TownState; if (townstate != null) { TownUnit = townstate.MyHero; } StartCoroutine(CreateTownNpcs()); CreatePotals(); StartCoroutine(CreateCreatures()); SetNewMyTownHero(TownUnit); }
/*헷갈릴거 같으니 주석. * //움직임 정지 콜라이더와 충돌이 실행시킨다 * public void ChangeStateIdle() * { * TownUnit.moveTargetPotal = false; * TownUnit.ChangeState(UnitState.Idle); * } */ /// <summary> /// 플레이어 캐릭터가 삭제되고 생성될때 호출됨. /// </summary> /// <param name="newUnit"></param> public void SetNewMyTownHero(MyTownUnit newUnit) { TownUnit = newUnit; for (int i = 0; i < Potals.Length; i++) { Collider bc = Potals[i].GetComponentInChildren <Collider>(); CollisionTownModel ctm = bc.GetComponent <CollisionTownModel>(); ctm.SetNewTargetCollider(TownUnit.GetComponent <Collider>()); } for (int i = 0; i < NpcModels.Count; i++) { //BoxCollider bc = NpcModels[i].GetComponentInChildren<BoxCollider>(); NpcModels[i].SetNewTargetCollider(TownUnit.GetComponent <Collider>()); } }
IEnumerator CreateMyTownUnitAsync() { int regenX; int regenY; NetworkClient.instance.GetRegenPos(out regenX, out regenY); //NaviTileInfo.instance.LoadTile("maintown"); // take 0.8sec yield return(StartCoroutine(NaviTileInfo.instance.LoadTitleAsync("maintown"))); yield return(StartCoroutine(MyTownUnit.CreateTownControllUnitAsync(regenX, regenY, (retVal) => { MyHero = retVal; }))); MyHero.m_rUUID = NetData.instance._userInfo._charUUID; yield return(null); }
public void NpcClickEvent() { TownPanel panel = UIMgr.GetTownBasePanel() as TownPanel; if (panel == null || panel.IsHideTown)//무시 { return; } MyTownUnit myHero = SceneManager.instance.GetState <TownState>().MyHero; if (myHero == null || myHero.IsMiniMapMove)//미니맵으로 온것의 경우 그냥 무시한다. { return; } //퀘스트 NPC if ((NPCTYPE)NPCType == NPCTYPE.QUEST_NPC) { Quest.QuestInfo info = QuestManager.instance.CheckSubQuest(QuestSubType.NPCTALK, (uint)NpcId); if (info != null && 0 < info.QuestTalkSceneID) { UIMgr.OpenMissionPanel(info.ID); } } //else if ((NPCTYPE)NPCType == NPCTYPE.ARENA_NPC) //{ // GameObject townpanel = UIMgr.GetUI("UIPanel/TownPanel"); // townpanel.GetComponent<TownPanel>().Hide(); // UIMgr.OpenArenaPanel(); //} //else if ((NPCTYPE)NPCType == NPCTYPE.SPECIAL_NPC) //{ // panel.Hide(); // UIMgr.OpenSpecial(); //} //else if ((NPCTYPE)NPCType == NPCTYPE.FREEFIGHT_NPC) //{ // panel.Hide(); // UIMgr.OpenDogFight(); //} //else if ((NPCTYPE)NPCType == NPCTYPE.TOWER_NPC) //{ // panel.Hide(); // UIMgr.OpenTowerPanel(); //} //else if ((NPCTYPE)NPCType == NPCTYPE.COSTUME_NPC) //{ // panel.Hide(); // UIMgr.OpenCostume(); //} else if ((NPCTYPE)NPCType == NPCTYPE.SINGLE_NPC) { //모험모드 NPC //UIMgr.instance.UiOpenType = UI_OPEN_TYPE.NONE; SceneManager.instance.UiOpenType = UI_OPEN_TYPE.NONE; GameObject townpanel = UIMgr.GetUI("UIPanel/TownPanel"); townpanel.GetComponent <TownPanel>().OpenChapter(); } //진행중인 퀘스트가 있는지 체크해야됨 myHero.ResetMoveTarget(); }