コード例 #1
0
 // 干员生命周期开始处
 void SetOpt(object[] obj)
 {
     perfab       = (GameObject)obj[0];
     originalData = (CharcterData)obj[1];
     InitCharManager();
     gameObject.GetComponent <SphereCollider>().enabled   = true;
     gameObject.GetComponent <SphereCollider>().isTrigger = false;
 }
コード例 #2
0
    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);
                    }
                }
            }
        }
    }
コード例 #3
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;
     }
 }
コード例 #4
0
 public void OnBoxSelected(bool isOn)
 {
     if (isOn)
     {
         selectOptData = gameData.optDatas[1];
     }
     else
     {
         selectOptData = null;
     }
 }
コード例 #5
0
 public void OnStandardOptSelected(bool isOn)
 {
     if (isOn)
     {
         selectOptData = gameData.optDatas[0];
     }
     else
     {
         selectOptData = null;
     }
 }
コード例 #6
0
 // 敌人生命周期开始处
 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;
 }
コード例 #7
0
    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);
    }
コード例 #8
0
 // 共同的定义
 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;
           * }*/
     }
 }
コード例 #9
0
 void Start()
 {
     deployedOptData = null;
 }