// 干员生命周期开始处 void SetOpt(object[] obj) { perfab = (GameObject)obj[0]; originalData = (CharcterData)obj[1]; InitCharManager(); gameObject.GetComponent <SphereCollider>().enabled = true; gameObject.GetComponent <SphereCollider>().isTrigger = false; }
IEnumerator SpawnEnemy() { if (Time.time - gameStartTime >= options.spawnBeginTime) { foreach (Wave wave in gameData.mapData.waveDatas) { waitingForNextWaveTime = wave.maxTimeWaitingForNextWave; yield return(new WaitForSeconds(wave.preDelay)); foreach (EnemyFragment enemyFragment in wave.enemyFragments) { yield return(new WaitForSeconds(enemyFragment.preDelay)); foreach (EnemyAction enemyAction in enemyFragment.enemyActions) { yield return(new WaitForSeconds(enemyAction.preDelay)); Route route = gameData.findRouteById(enemyAction.routeId); CharcterData enemyData = gameData.findEnemyByKey(enemyAction.enemyKey); //Debug.Log(enemyFragment.enemyActions.Count); for (int i = 0; i < enemyAction.count; i++) { if (route != null && enemyData != null) { float waitTime = i * enemyAction.interval; GameObject charC = GameObject.Instantiate(charConstructor, new Vector3(route.startPosition.x * space, enemyHeight, route.startPosition.y * space), Quaternion.identity); GameObject enemyI = GameObject.Instantiate(enemy[0], charC.transform.position, Quaternion.identity); enemyI.transform.parent = charC.transform; object[] message = new object[] { enemyI, enemyData, route, waitTime }; charC.BroadcastMessage("SetEnemy", message); options.countEnemyAlive++; } } } } while (options.countEnemyAlive > 0) { if ((waitingForNextWaveTime -= Time.deltaTime) < 0) { waitingForNextWaveTime = 0; break; } else { yield return(0); } } } } }
void InitBullet(object[] obj) { this.charRunningData = (CharcterData)obj[0]; this.target = (GameObject)obj[1]; bullet = charRunningData.perfabSetting.bullet1; hitEnemy = new List <GameObject>(); if (bullet.bulletType == BulletType.PROJECTILE) { transform.position = target.transform.position; } }
public void OnBoxSelected(bool isOn) { if (isOn) { selectOptData = gameData.optDatas[1]; } else { selectOptData = null; } }
public void OnStandardOptSelected(bool isOn) { if (isOn) { selectOptData = gameData.optDatas[0]; } else { selectOptData = null; } }
// 敌人生命周期开始处 void SetEnemy(object[] obj) { perfab = (GameObject)obj[0]; originalData = (CharcterData)obj[1]; route = (Route)obj[2]; waitTime = (float)obj[3]; InitCharManager(); // 预先计算终点坐标,方便调用 endPos3d = Math.Ve2ToVe3(route.endPosition * GameManager.space, GameManager.enemyHeight); // 敌人一开始是隐藏状态 perfab.SetActive(false); gameObject.GetComponent <SphereCollider>().radius = 1; }
public void OptSet(GameObject charConstructor, GameObject optPerfab, CharcterData optData) { deployedOptData = optData; GameObject charC = GameObject.Instantiate(charConstructor, new Vector3(transform.position.x, GameManager.optHeight, transform.position.z), Quaternion.identity); GameObject optI = GameObject.Instantiate(optPerfab, charC.transform.position, Quaternion.identity); optI.transform.parent = charC.transform; object[] message = new object[] { optI, optData }; charC.SendMessage("SetOpt", message); GameObject effect = GameObject.Instantiate(BuildEffect, transform.position, Quaternion.identity); Destroy(effect, 1); }
// 共同的定义 private void InitCharManager() { // runningData需要深拷贝 this.runningData = Math.DeepCopyByBinary <CharcterData>(this.originalData); // 获取攻击范围组件 range = gameObject.GetComponentInChildren <RangeRunning>(); // 绑定范围敌人数组 enemies = range.enemies; // 血条组件已经初始化,可以直接调用 SetHpSilder(runningData.attributes.nowHp / originalData.attributes.maxHp, true); foreach (Transform child in perfab.GetComponentsInChildren <Transform>(true)) { if (child.gameObject.name == "FirePosition") { firePosition = child.gameObject.transform; } else if (child.gameObject.name == "Head") { head = child.gameObject.transform; } else if (child.gameObject.name == "Bullet1") { child.gameObject.SetActive(false); } else if (child.gameObject.name == "Bullet2") { bulletPrefab = child.gameObject; bulletPrefab.SetActive(false); } else if (child.gameObject.name == "Laser") { laserPerfab = child.gameObject; laserPerfab.SetActive(false); }/* * else if (child.gameObject.name == "Collider") * { * if(originalData.isEnemy) * child.gameObject.GetComponent<Rigidbody>().constraints = * RigidbodyConstraints.FreezePositionX | RigidbodyConstraints.FreezePositionY | RigidbodyConstraints.FreezePositionZ; * else * child.gameObject.GetComponent<Rigidbody>().constraints = * RigidbodyConstraints.FreezePositionZ; * }*/ } }
void Start() { deployedOptData = null; }