public void CopyFrom(EnemyEmerge e) { emergeType = e.emergeType; emergeValue = e.emergeValue; emergeTime = e.emergeTime; }
bool SpwanObjectAt(GameObject obj, Transform parent) { if (parent == null) { return(false); } GameObject swpanObj = null; var posProperty = parent.GetComponent <PositionProperty>(); if (posProperty == null) { return(false); } if (posProperty.positionType == EnemySpwanPosition.FixedPosition) { swpanObj = (GameObject)Instantiate(obj, parent.position, parent.rotation); swpanObj.transform.parent = parent.transform; } else if (posProperty.positionType == EnemySpwanPosition.RandomPosition) { Vector3 postion = new Vector3(posProperty.GetRandomX(), parent.position.y, parent.position.z); swpanObj = (GameObject)Instantiate(obj); swpanObj.transform.SetParent(parent); swpanObj.transform.position = postion; } if (swpanObj != null) { //避免重叠 float timeFlag = Time.time / 100000; timeFlag = timeFlag - Mathf.FloorToInt(timeFlag); swpanObj.transform.position += new Vector3(0, 0, -timeFlag); //swpanObj.transform. = parent.transform; swpanObj.transform.localScale = parent.transform.lossyScale; //disable mask if (!posProperty.enableMask) { var mask = swpanObj.transform.FindChild("mask"); mask.gameObject.SetActive(false); } EnemyEmerge ee = parent.GetComponent <EnemyEmerge>(); if (ee != null) { EnemyEmerge enew = swpanObj.AddComponent <EnemyEmerge>(); enew.CopyFrom(ee); enew.RunEmerge(); } //敌人的属性 GAFEnemy e = swpanObj.GetComponent <GAFEnemy>(); if (e == null) { Debug.Log("Dont have Enemy component!"); e = swpanObj.AddComponent <GAFEnemy>(); } e.EnhanceByTurn(1 + currentTurn * enhancePerTurn + currentWave * enhancePerWave); SortLayer sl = parent.GetComponent <SortLayer>(); if (sl != null && sl.layerName != "") { SpriteRenderer[] render = swpanObj.GetComponentsInChildren <SpriteRenderer>(); if (render != null && render.Length > 0) { for (int i = 0; i < render.Length; i++) { render[i].sortingLayerName = sl.layerName; } } var sortlayer = swpanObj.AddComponent <GAFSortLayer>(); sortlayer.sortLayerName = sl.layerName; } //是否能够横向漫游 EnemyWanderX[] wanders = swpanObj.GetComponents <EnemyWanderX>(); if (wanders != null && wanders.Length > 0) { for (int i = 0; i < wanders.Length; i++) { if (wanders[i].GetType() == typeof(EnemyWanderRunX)) { wanders[i].enabled = posProperty.allowRunX; } else { wanders[i].enabled = posProperty.allowWanderX; } wanders[i].minMovementX = posProperty.minMovementX; wanders[i].maxMovementX = posProperty.maxMovementX; } } //通知GameManager ,产生了敌人 AddAliveEmeny(); needCreateEnemy--; return(true); } return(false); }