void SyncEnemyPositionAndRotation() { if (enemyToSyncList != null && enemyToSyncList.Count > 0) { EnemyPositionModel model = new EnemyPositionModel(); foreach (Enemy enemy in enemyToSyncList) { if (enemy != null) { EnemyPositionProperty property = new EnemyPositionProperty() { guid = enemy.guid, position = new Vector3Obj(enemy.transform.position), eulerAngles = new Vector3Obj(enemy.transform.eulerAngles), }; model.list.Add(property); } } if (bossToSync != null) { EnemyPositionProperty property = new EnemyPositionProperty() { guid = bossToSync.guid, position = new Vector3Obj(bossToSync.transform.position), eulerAngles = new Vector3Obj(bossToSync.transform.eulerAngles), }; model.list.Add(property); } bossToSync = null; enemyController.SyncEnemyPosition(model); enemyToSyncList.Clear(); } }
IEnumerator SpawnEnemy() { yield return(new WaitForSeconds(time)); //发送消息 让其他客户端产生敌人 ,包括数量和类型 foreach (GameObject go in enemyPrefabs) { List <CreateEnemyProperty> propertylist = new List <CreateEnemyProperty>(); foreach (Transform t in spawnPosArray) { GameObject temp = GameObject.Instantiate(go, t.position, Quaternion.identity) as GameObject; string guidStr = Guid.NewGuid().ToString(); //guidStr=GUID int targetRoleId = GameController.Instance.GetRandomRoleID(); if (temp.GetComponent <Enemy>() != null) { Enemy enemy = temp.GetComponent <Enemy>(); enemy.guid = guidStr; //为每一个新生产的敌人创建一个GUID //temp.GetComponent<Enemy>().enabled = true; enemy.targetRoleId = targetRoleId; } else { BossOrc bossOrc = temp.GetComponent <BossOrc>(); bossOrc.guid = guidStr; //为新生产的Boss敌人创建一个GUID bossOrc.targetRoleId = targetRoleId; } CreateEnemyProperty property = new CreateEnemyProperty() { guid = guidStr, position = new Vector3Obj(t.position), prefabName = go.name, targetRoleID = targetRoleId }; propertylist.Add(property); } if (GameController.Instance.battleType == BattleType.Team && GameController.Instance.isMaster) { CreateEnemyModel model = new CreateEnemyModel() { List = propertylist }; enemyController.SendCreateEnemy(model); } yield return(new WaitForSeconds(repeateRate)); } }
public void OnCreateEnemy(CreateEnemyModel model) { foreach (CreateEnemyProperty property in model.List) { GameObject enemyPrefab = Resources.Load("enemy/" + property.prefabName) as GameObject; GameObject go = GameObject.Instantiate(enemyPrefab, property.position.ToVector3(), Quaternion.identity) as GameObject; Enemy enemy = go.GetComponent <Enemy>(); if (enemy != null) { enemy.guid = property.guid; enemy.targetRoleId = property.targetRoleID; } else { BossOrc bossOrc = go.GetComponent <BossOrc>(); bossOrc.guid = property.guid; bossOrc.targetRoleId = property.targetRoleID; } } }
public void AddBossOrcToSync(BossOrc bossOrc) { this.bossToSync = bossOrc; }