private async Task LoadSomeConfigs() { var taskHpBar = Addressables.LoadAssetAsync <Sprite>("hpred").Task; enemyHpBar = await taskHpBar; enemysDataName = GetLevelDataEnemyNm(); var task = Addressables.LoadAssetAsync <EnemysData>(enemysDataName).Task; enemysData = await task; }
public IEnumerator CreatEnemys(EnemysData enemyData)//生成怪物频率 { creatEnemysTimes -= Time.deltaTime; yield return(new WaitForSeconds(3)); if (enemyData != null && isCreat == true) { creatEnemysTimes = 3; for (int i = 0; i < enemyData.enemys.Count; i++) { var go = Instantiate(enemyData.enemys[i].enemy, transform); go.tag = "EnemysPlane"; go.GetComponent <RoleBase>().myHpBarImage.sprite = enemyHpBar; go.GetComponent <RoleBase>().RoleInitInfo(); } isCreat = false; UserAssetManager.Instance.NoFirstGame(); } else { yield break; } }
void Start() { eneData = transform.parent.GetComponent <EnemysData>(); //HpBar = GetComponent<Image>(); }
public void StageEnd() { m_instance = null; }
public static void updateEnemyPositions() { if (true) { if (!Globals.locked) { try { foreach (cPositionDataEnemys pos in Globals.GlobalEnemyPositions.Values) { if (pos.SessionID != Globals.SessionID && Globals.SessionID != "" && Globals.SessionID != null) { GameObject avatar = GameObject.Find(pos.SessionID); cPositionData player; Globals.GlobalPlayerPositions.TryGetValue(Globals.SessionID, out player); pos.y = 0; Animator a = avatar.GetComponent <Animator>(); StateMachine sm; sm = avatar.GetComponent <StateMachine>(); //----Damage--- //Enemy is targeted by a player if (player.target != null) { //target is current enemy if (player.target == pos.SessionID) { //attack GameObject HealthBar = GameObject.Find("Health Bar"); if (HealthBar != null) { float hp = (float)Globals.GlobalEnemyPositions[pos.SessionID].charData.CharacterStats.Health; hp = hp / 100.00f; HealthBar.GetComponent <UIProgressBar>().value = hp; Debug.Log(pos.charData.CharacterStats.Health); } else { Debug.Log("ERRRR"); } GameObject HealthBarPlayer = GameObject.Find("Energy Bar"); if (HealthBarPlayer != null) { float hp = (float)Globals.GlobalPlayerPositions[pos.target].character.CharacterStats.Health; hp = hp / 100.00f; HealthBarPlayer.GetComponent <UIProgressBar>().value = hp; } else { Debug.Log("ERRRR"); } } } if (pos != null) { try { try { //set animatin according to whether mob is moving // if(sm.currentState!="Attacking" && sm.currentState!="Walking"&& sm.currentState!="Running") // if (pos.moving) // sm.changeState("Moving", StateTypes.STATE_WALKING, pos.SessionID); } catch (Exception) { } //sm.changeState("Idle", StateTypes.STATE_IDLE, pos.SessionID); Vector3 newpos = avatar.transform.position; float time = Time.deltaTime;// < 0.01f ? Time.deltaTime : 0.01f; float avaX = 0; float avaY = 0; //Get current position of enemy gameobject(rounded) avaX = (float)Math.Round(avatar.transform.position.x, 1, MidpointRounding.AwayFromZero); // avatar.transform.position.x-(avatar.transform.position.x % 1f); avaY = (float)Math.Round(avatar.transform.position.z, 1, MidpointRounding.AwayFromZero); // avatar.transform.position.x-(avatar.transform.position.x % 1f); //get new enemy position (from server) float targetX = (float)Math.Round(pos.x, 1, MidpointRounding.AwayFromZero); // avatar.transform.position.x-(avatar.transform.position.x % 1f); float targetY = (float)Math.Round(pos.z, 1, MidpointRounding.AwayFromZero); // avatar.transform.position.x-(avatar.transform.position.x % 1f); // if (pos.target != null && Globals.GlobalPlayerPositions.ContainsKey(pos.target)) { // if (pos.isInFight == false) //if not colliding if (!avatar.GetComponent <DoCollission>().Stoped) { //got target and target is valid if (pos.target != null && Globals.GlobalPlayerPositions.ContainsKey(pos.target)) { //Set animation //if (!Globals.inFight) if (sm.currentState != "Running") { sm.changeState("Running", StateTypes.STATE_RUNNING, pos.SessionID); } // else if(avatar.GetComponent<DoCollission>().Stoped) // sm.changeState("Idle", StateTypes.STATE_IDLE, pos.SessionID); // if(sm.currentState!="Attacking") // sm.changeState("Attacking", StateTypes.STATE_FIGHTING, pos.SessionID); //set go to either current player, or other multiplayer character GameObject go = pos.target == Globals.SessionID ? GameObject.Find("vThirdPersonController") : GameObject.Find(pos.target); //Rotate towards player Vector3 targetPoint = new Vector3(go.transform.position.x, avatar.transform.position.y, go.transform.position.z) - avatar.transform.position; Quaternion targetRotation = Quaternion.LookRotation(targetPoint, Vector3.up); avatar.transform.rotation = Quaternion.RotateTowards(avatar.transform.rotation, targetRotation, 360); //set movement towards new positin newpos.x = avatar.transform.position.x + ((GWTools.posEnemyToVector3(pos).x - avatar.transform.position.x) * time); newpos.z = avatar.transform.position.z + ((GWTools.posEnemyToVector3(pos).z - avatar.transform.position.z) * time); avatar.transform.position = newpos; Globals.inFight = false; } } if (avatar.GetComponent <DoCollission>().Stoped) { Globals.inFight = true; if (sm.currentState != "Attacking") { sm.changeState("Attacking", StateTypes.STATE_FIGHTING, pos.SessionID); } GameObject go = pos.target == Globals.SessionID ? GameObject.Find("vThirdPersonController") : GameObject.Find(pos.target); Vector3 targetPoint = new Vector3(go.transform.position.x, avatar.transform.position.y, go.transform.position.z) - avatar.transform.position; Quaternion targetRotation = Quaternion.LookRotation(targetPoint, Vector3.up); avatar.transform.rotation = Quaternion.RotateTowards(avatar.transform.rotation, targetRotation, 360); } //apply position }// END NO TARGET // else { /* //HAS TARGET * * if (!avatar.GetComponent<DoCollission>().Stoped) * { * Vector3 targetPoint = new Vector3(pos.x, avatar.transform.position.y, pos.z) - avatar.transform.position; * Quaternion targetRotation = Quaternion.LookRotation(targetPoint, Vector3.up); * avatar.transform.rotation = Quaternion.Slerp(avatar.transform.rotation, targetRotation, Time.deltaTime * 10.0f); * * sm.changeState("Walking", StateTypes.STATE_WALKING, pos.SessionID); * newpos.x = avatar.transform.position.x + ((GWTools.posEnemyToVector3(pos).x - avatar.transform.position.x) * time*5); * newpos.z = avatar.transform.position.z + ((GWTools.posEnemyToVector3(pos).z - avatar.transform.position.z) * time*5); * * } * else * { * sm.changeState("Attacking", StateTypes.STATE_FIGHTING, pos.SessionID); * newpos.x = avatar.transform.position.x; * newpos.z = avatar.transform.position.z; * * }*/ }//END HAS TARGET //apply position avatar.transform.position = newpos; } catch (Exception ex) { EnemysData.spawnEnemy(pos); } } } } } catch (Exception ex) { Globals.locked = false; } Globals.locked = false; } } }
void Update() { //Is player logged in? if (Globals.SessionID != "" && Globals.SessionID != null && !Globals.dead) { GameObject avatar = GameObject.Find("vThirdPersonController"); cPositionData pos = Globals.PlayerPosition; //----Global stuff----- if (Globals.loadWorldData) { Globals.loadWorldData = false; LoadSaveWorldData.LoadWorldData(Globals.wd); } if (Globals.mute) { GameObject avatar2 = GameObject.Find("FANTASY_WOLF"); AudioSource s = avatar2.GetComponent <AudioSource>(); s.mute = true; } if (Globals.dead) { Destroy(avatar); } //----Key Input--- if (Input.GetKeyUp("space")) { //Change Level //Globals.con.SendObject("ChangeWorld", new String[] { "1", Globals.SessionID }); } //toggle inventory if (Input.GetKeyUp(KeyCode.I)) { Globals._Inventory.SetActive(!Globals._Inventory.active); } if (Input.GetKeyUp("escape")) { if (UpdatePlayerTarget.playerTarget != null) { Globals.con.SendObject <string>("CancelTarget", Globals.SessionID); } } //Lock/unlock mouse/movement if (Input.GetMouseButton(1)) { if (Cursor.visible == true) { Cursor.visible = false; GWTools.lockMouse(); } /* * //Cancel targeting * if (UpdatePlayerTarget.playerTarget != null) * { * Globals.con.SendObject<string>("CancelTarget", Globals.SessionID); * } * else//Lock/unlock cursor * { * if (Cursor.visible == false) * { * Cursor.visible = true; * GWTools.unlockMouse(); * } * else * { * Cursor.visible = false; * GWTools.lockMouse(); * } * }*/ } else { if (Cursor.visible == false) { Cursor.visible = true; GWTools.unlockMouse(); } } //-------Data update functions---------- //Inventory InventoryData.UpdateInventory(); GameObject inv = GameObject.Find("Inventory"); if (inv != null) { Inventory inv_sc = inv.GetComponent <Inventory>(); for (int i = 0; i < inv_sc.items.Count; i++) { GameObject goItem = (GameObject)inv_sc.items[i]; Item scItem = goItem.GetComponent <Item>(); bool found = false; foreach (Data.Items.Item itmEqu in Globals.PlayerPosition.character.equipment.Values) { Debug.Log(itmEqu.ItemID); if (itmEqu.ItemID == scItem.item_dat.ItemID) { found = true; } } if (found) { scItem.textColor = Color.yellow; } else { scItem.textColor = Color.white; } scItem.inventoryTexture = Resources.Load <Texture2D>("Icon_Sword"); inv.GetComponent <Inventory>().items[i] = goItem; } } foreach (Data.Items.Item itm in Globals.Loot.Values) { if (!GameObject.Find(itm.ItemID)) { GameObject newObj = GameObject.Instantiate(GameObject.Find("DragMe")); newObj.name = itm.ItemID; newObj.transform.position = new Vector3(itm.x, Terrain.activeTerrain.SampleHeight(new Vector3(itm.x, 0, itm.z)), itm.z); GameObject defaultObj = GameObject.Instantiate(GameObject.Find("default")); newObj.AddChild(defaultObj); } } //Spell Casting SpellData.CheckInputAndCast(pos, avatar); //Attacking Enemys - Statemachine for attacking enemies EnemysData.AttackingEnemys(); //Spawn new Players/Enemys EnemysData.SpawnEnemys(); PlayersData.SpawnPlayers(); //Destroy obsolete Players/Enemys EnemysData.RemoveEnemys(); PlayersData.RemovePlayers(); //------Position update-------------- //Get current position cPositionData currpos = GWTools.genPosDataFromGameObject(avatar); //Send current position to server Globals.con.SendObject("GlobalPositionUpdate", currpos); //Update players and enemys positions GlobalPositionsUpdate.updateAvatarPositions(); GlobalPositionsUpdate.updateEnemyPositions(); } }