Beispiel #1
0
    void Start()
    {
        GameObject NavMesh = new GameObject("NavMesh");

        NavMesh.transform.position = transform.position;
        navmeshAgent = NavMesh.AddComponent <NavMeshAgent> ();
        navmeshAgent.Warp(transform.position);

        //nav =new GameObject("navAgent",typeof(NavMeshAgent)).GetComponent<NavMeshAgent>();
        //nav.transform.position = transform.position;

        if (GameDataManager.GetCurrentDifficulty() == Difficulty.Easy)
        {
            MAX_FIND_DISTANT = 150;
        }
        MaxHealth = Health;

        //EAS.Health = Health;
        //EAS.MyTeam = Team;
        //EAS.TankName = TankName;
        //EAS.TankScript = TankScript;
        TankScript.GetComponent <TankFire>().IsOnLine = true;
        TankScript.GetComponent <TankFire> ().SetAiMode();
        //TankScript.GetComponent<MouseTurret> ().AITurret = true;
        transform.parent.GetComponentInChildren <TankFire> ().InitSystem();

        tankFire            = TankScript.GetComponent <TankFire> ();
        tankFire.UseGravity = false;

        playerTracksController = GetComponent <PlayerTracksController> ();
        playerTracksController.enableUserInput = false;
        playerTracksController.isBot           = true;

        //      if (GameDataManager.GetVehicleType (TankName) == VehicleType.TD) {
        //	isTurretLess = true;
        //}

        Identity MyIdentity = GetComponent <Identity> ();

        if (GameDataManager.OfflineMode)
        {
            ViewPoint = CreateViewPoint();
            ViewPoint.transform.SetParent(transform);

            Invoke("SwtichToNormalMode", 5);

            navmeshAgent.radius = 4.5f;
            navmeshAgent.obstacleAvoidanceType = ObstacleAvoidanceType.MedQualityObstacleAvoidance;

            ControlByLocal = true;

            InvokeRepeating("AIState", 0, 1);

            if (GameDataManager.OfflineMode)
            {
                MyIdentity.Init(transform.root.GetComponent <TankInitSystem> ().ownerTeam, InstanceNetType.GameNetWorkBotClient);
                playerTracksController.SetWheels(true, true, true);
            }
            else
            {
                playerTracksController.SetWheels(true, false, false);
            }
        }
        else
        {
            ControlByLocal = false;
            playerTracksController.SetWheels(false, false, false);
        }
        gameObject.SendMessage("GetOwnerInfo");
        StartCoroutine(AttackPlayer());
    }
Beispiel #2
0
    public IEnumerator Init()
    {
        PTC       = GetComponent <PlayerTracksController> ();
        MaxHealth = Health;
        #region 多人模式
        if (netType == InstanceNetType.GameNetworkClient)
        {
            Mine = true;
        }
        #endregion
        #region 单人模式
        else if (netType == InstanceNetType.GameNetWorkOffline)
        {
            Mine = true;
        }
        #endregion
        Invoke("SwtichToNormalMode", 5);

        //InitAIObstacle ();

        if (netType == InstanceNetType.GameNetworkMaster)
        {
            PTC.SetWheels(true, false, false);
            InitExtraTankFires(false);
            transform.parent.GetComponentInChildren <TankFire> ().InitSystem();
        }
        if (netType == InstanceNetType.GameNetworkOthers)
        {
            PTC.SetWheels(false, false, true);
            InitExtraTankFires(false);
            TankScript.GetComponent <TankFire>().InitSystem();
        }
        yield return(new WaitForEndOfFrame());


        if (netType == InstanceNetType.GameNetworkClient || netType == InstanceNetType.GameNetWorkOffline)
        {
            MainCamera = this.transform.root.GetComponentInChildren <Camera>();
            PTC.SetWheels(true, true, true);

            StartCoroutine(InGameVoiceSoundManager.Self.Init(playerStateParameter.nationType, (InGameVoiceSoundManagerReturnValue) => {
                InGameVoiceSoundManager.PlayVoice(InGameVoiceSoundManager.VoiceType.Start_Battle, InGameVoiceSoundManager.InGameVoiceLanguage(playerStateParameter.nationType));
            }));


            #region UI初始化
            StartCoroutine(InitTankUISystem(ReturnValue => {
                TankUISystemInit();
                InitExtraTankFires(true);
                UpdateHealthBar();

                TankScript.GetComponent <TankFire>().isPlayerControl = true;
                TankScript.GetComponent <TankFire>().InitSystem();
                TankScript.GetComponent <TankFire>().OnAmmoOut();
                TankScript.GetComponent <TankFire> ().ReSetAmmoSprits();
            }));
            #endregion

            StartCoroutine(CheckIfPlayerRollOver());
        }
    }