Пример #1
0
 public static void CreateObject(string spawnedObject, Vector3 p, Vector3 e)
 {
     if (GameDataManager.OfflineMode)
     {
         PoolManager.CreateObject(spawnedObject, p, e);
     }
 }
Пример #2
0
    void SimpleFireMethod()
    {
        if (NowTime > tankFireParameter.ReloadTime && BulletCountList[SelectAmmo] > 0)
        {
            GameObject ammo = (GameObject)Instantiate(tankFireParameter.bulletType, FFPoint.transform.position, FFPoint.transform.rotation);
            ammo.GetComponent <BulletScript>().bulletType        = SwtichAmmo(SelectAmmo);
            ammo.GetComponent <BulletScript>().fireOwner         = this;
            ammo.GetComponent <BulletScript>().fireStartPosition = FFPoint.position;
            ammo.GetComponent <BulletScript>().UseGravity        = UseGravity;
            NowTime = 0;
            BulletCountList[SelectAmmo] -= 1;
            CheckAmmoCount();
            ammo.GetComponent <BulletScript>().bulletState = BulletState.Master;
            MainBody.GetComponent <Rigidbody>().AddForceAtPosition(tankFireParameter.recoilTransform.forward * -1000 * tankFireParameter.FireRecoil, tankFireParameter.recoilTransform.position);

            ReSetAmmoSprits();
            ammo.GetComponent <BulletScript>().bulletState = BulletState.Client;
            PoolManager.CreateObject(tankFireParameter.muzzleFire.ToString(), FireEffectPoint.transform.position, FireEffectPoint.transform.eulerAngles);
            StartCoroutine(FireSmokeGenerater());
        }
        else
        {
            if (isBotControl)
            {
                return;
            }
            playerState.UpdataGameNote(uGUI_Localsize.GetContent("OnReloading"));
        }
    }
Пример #3
0
    private void CreateAsteroid()
    {
        float randomSpeed = Random.Range(-_maxSpeed, _maxSpeed);

        if (randomSpeed <= _minSpeed && randomSpeed >= -_minSpeed)
        {
            randomSpeed = _minScale * (TrueFalseRandom() ? 1.0f : -1.0f);
        }

        Vector3 randomPosition = new Vector3();

        if (TrueFalseRandom())
        {
            //Top or bottom position
            randomPosition.x = Random.Range(_topLeftScreen.position.x - _spawnRadius, _bottomRightScreen.position.x + _spawnRadius);
            randomPosition.y = _topLeftScreen.position.y;
        }
        else
        {
            //Left or right spawn
            randomPosition.x = TrueFalseRandom() ? _topLeftScreen.position.x : _bottomRightScreen.position.x;
            randomPosition.y = Random.Range(_topLeftScreen.position.y - _spawnRadius, _bottomRightScreen.position.y + _spawnRadius);
        }

        Quaternion randomRotation = Random.rotation;

        randomRotation.eulerAngles = new Vector3(0.0f, 0.0f, randomRotation.eulerAngles.z);
        GameObject usedObject = _asteroidPoolManager.CreateObject(randomPosition, randomRotation, randomSpeed);

        //Applying scale
        float randomScale = Random.Range(_minScale, _maxScale);

        usedObject.transform.localScale = new Vector3(randomScale, randomScale, 1.0f);
    }
Пример #4
0
    public static void PlayVoice(VoiceType voiceType, Language language)
    {
        if (Time.time - LastPlayVoiceTime < 1)
        {
            return;
        }
        LastPlayVoiceTime = Time.time;

        switch (voiceType)
        {
        case VoiceType.Armor_Not_Pierced:
            PoolManager.CreateObject(RandomStringInList(Self.Armor_Not_Pierced) + language.ToString(), Vector3.zero, Vector3.zero);
            break;

        case VoiceType.Armor_Pierced:
            PoolManager.CreateObject(RandomStringInList(Self.Armor_Pierced) + language.ToString(), Vector3.zero, Vector3.zero);
            break;

        case VoiceType.Armor_Ricochet:
            PoolManager.CreateObject(RandomStringInList(Self.Armor_Ricochet) + language.ToString(), Vector3.zero, Vector3.zero);
            break;

        case VoiceType.Enemy_Killed:
            PoolManager.CreateObject(RandomStringInList(Self.Enemy_Killed) + language.ToString(), Vector3.zero, Vector3.zero);
            break;

        case VoiceType.Start_Battle:
            PoolManager.CreateObject(RandomStringInList(Self.Start_Battle) + language.ToString(), Vector3.zero, Vector3.zero);
            break;

        case VoiceType.Vehicle_Destroyed:
            PoolManager.CreateObject(RandomStringInList(Self.Vehicle_Destroyed) + language.ToString(), Vector3.zero, Vector3.zero);
            break;
        }
    }
Пример #5
0
 //显示倒塌的效果
 private void ShowParticle()
 {
     if (DestroyEffectType != BuildingDestroyEffectType.None)
     {
         PoolManager.CreateObject(DestroyEffectType.ToString(), transform.position, transform.eulerAngles);
     }
 }
Пример #6
0
    public void AdvanceFireMethod()
    {
        if (BulletCountList[SelectAmmo] > 0)
        {
            if (tankFireParameter.advanceFireClass.SmallNowTime > tankFireParameter.advanceFireClass.SmallReloadTime)
            {
                if (tankFireParameter.advanceFireClass.LargeFinish && tankFireParameter.advanceFireClass.SmallAmmoLeft > 0)
                {
                    ReSetAmmoSprits();
                    tankFireParameter.advanceFireClass.SmallAmmoLeft -= 1;
                    tankFireParameter.advanceFireClass.SmallNowTime   = 0;
                    GameObject ammo = Instantiate(tankFireParameter.bulletType, FFPoint.transform.position, FFPoint.transform.rotation) as GameObject;
                    ammo.GetComponent <BulletScript>().fireOwner         = this;
                    ammo.GetComponent <BulletScript>().bulletType        = SwtichAmmo(SelectAmmo);
                    ammo.GetComponent <BulletScript>().fireStartPosition = FFPoint.position;
                    ammo.GetComponent <BulletScript>().UseGravity        = UseGravity;


                    ammo.GetComponent <BulletScript>().bulletState = BulletState.Master;
                    MainBody.GetComponent <Rigidbody>().AddForceAtPosition(tankFireParameter.recoilTransform.forward * -1000 * tankFireParameter.FireRecoil, tankFireParameter.recoilTransform.position);
                    PoolManager.CreateObject(tankFireParameter.muzzleFire.ToString(), FireEffectPoint.transform.position, FireEffectPoint.transform.eulerAngles);
                    StartCoroutine(FireSmokeGenerater());


                    if (!ExtraTurret)
                    {
                        AmmoInfos[SelectAmmo].text = BulletCountList[SelectAmmo].ToString();
                    }
                }

                BulletCountList[SelectAmmo] -= 1;
                CheckAmmoCount();

                ReSetAmmoSprits();
                PoolManager.CreateObject(tankFireParameter.muzzleFire.ToString(), FireEffectPoint.transform.position, FireEffectPoint.transform.eulerAngles);
                StartCoroutine(FireSmokeGenerater());
            }
            else
            {
                if (isBotControl)
                {
                    return;
                }
                playerState.UpdataGameNote(uGUI_Localsize.GetContent("OnReloading"));
            }
        }

        if (tankFireParameter.advanceFireClass.SmallAmmoLeft <= 0)
        {
            tankFireParameter.advanceFireClass.LargeFinish = false;
        }
    }
Пример #7
0
 void ApplyOnHitSound(float Damage)
 {
     if (Damage <= MaxHealth * 0.1f)
     {
         PoolManager.CreateObject("ap_critical_hit_small", transform.position, transform.eulerAngles);
     }
     else if (Damage > MaxHealth * 0.1f && Damage < Health * 0.5f)
     {
         PoolManager.CreateObject("ap_critical_hit_medium", transform.position, transform.eulerAngles);
     }
     else
     {
         PoolManager.CreateObject("ap_critical_hit_huge", transform.position, transform.eulerAngles);
     }
 }
Пример #8
0
    public void Start()
    {
        // Initialize the fire sound.
        if (bulletState == BulletState.Info)
        {
            StartCoroutine(InitWeaponSound());
            return;
        }


        if (bulletType == BulletType.ApAmmo)
        {
            shellNormalizationAngle = 3;
        }
        else if (bulletType == BulletType.APCRAmmo)
        {
            shellNormalizationAngle = 1;
            Speed *= 1.25f;
        }
        else if (bulletType == BulletType.HeAmmo)
        {
            Speed *= 0.75f;
        }

        PoolManager.CreateObject(ammoAudio.ammoFireAudio.ToString(), transform.position, transform.eulerAngles);


        //Destroy Recycle
        if (isMachineAmmo)
        {
            StartCoroutine(DelayDestroy(5));
        }
        else
        {
            StartCoroutine(DelayDestroy(10));
        }

        weaponProjectileEffect = PoolManager.CreateObject("WeaponProjectile", transform.position, transform.eulerAngles);

        //Projectile Manager
        P0 = this.gameObject.transform.position;
        projectile.Velocity = Speed;
        projectile.Gravity  = GravityDamper;
        Previous            = transform.position;
    }
Пример #9
0
    public IEnumerator FireSmokeGenerater()
    {
        PlayGunAim();

        GameObject _FireSmoke = PoolManager.CreateObject("FireSmoke", FireEffectPoint.transform.position, FireEffectPoint.transform.eulerAngles);

        if (_FireSmoke == null)
        {
            yield break;
        }

        while (_FireSmoke.activeSelf)
        {
            _FireSmoke.transform.position = FireEffectPoint.transform.position;
            yield return(new WaitForEndOfFrame());
        }
        yield break;
    }
Пример #10
0
    public System.Action <string, Vector3, Vector3> onGameObjectRaisedSpawnEvent; //Master 物体

    public void HandleMasterSpawnedObject(string spawnedObject, Vector3 p, Vector3 e)
    {
        PoolManager.CreateObject(spawnedObject, p, e);
    }
Пример #11
0
    public void OnDeadActionCalled()
    {
        Destroy(GetComponent <Identity> ());

        StopAllCoroutines();

        if (GameDataManager.OfflineMode)
        {
            playerTracksController.UpdateWheels(0, 0);
            playerTracksController.enabled = false;
        }



        foreach (HitBox temp in transform.root.GetComponentsInChildren <HitBox>())
        {
            Destroy(temp);
        }
                #if ClientCode
        #region 炮塔飞天
        TankScript.GetComponent <TurretController> ().Turret.gameObject.AddComponent <Rigidbody> ().AddForce(Vector3.up * 500);
        TankScript.GetComponent <TurretController> ().Turret.GetComponent <Rigidbody> ().drag       = 0.3f;
        TankScript.GetComponent <TurretController> ().Turret.GetComponent <Rigidbody> ().mass       = 1000;
        TankScript.GetComponent <TurretController> ().Turret.GetComponent <Rigidbody> ().useGravity = true;
        #endregion

        PoolManager.CreateObject("DestroyEffect", transform.position, transform.eulerAngles);
                #endif
        foreach (HitBox _HitBox in transform.root.GetComponentsInChildren <HitBox>())
        {
            if (_HitBox)
            {
                _HitBox.enabled = false;
            }
        }

        //TankScript.GetComponent<MouseTurret> ().target = null;

        if (ControlByLocal)
        {
            #region PTC关闭
            playerTracksController.accelG = 0;
            playerTracksController.steerG = 0;
            playerTracksController.UpdateWheels(0, 0);
            playerTracksController.enabled = false;
            #endregion

            #region Nav
            navmeshAgent.enabled = false;
            Destroy(navmeshAgent.gameObject);
            #endregion
        }

        #region TankScript
        TankScript.GetComponent <TankFire>().NowTime         = 0;
        TankScript.GetComponent <TankFire>().enabled         = false;
        TankScript.GetComponent <TurretController>().enabled = false;

        TankScript.SetActive(false);
        #endregion

        Destroy(transform.root.gameObject, 10f);

        this.enabled = false;
    }
Пример #12
0
    void OnDeadActionCalled()
    {
        Debug.Log("OnDeadActionCalled");

        if (netType != InstanceNetType.GameNetworkMaster)
        {
            PTC.enableUserInput = false;
            GetComponent <Rigidbody>().velocity        = Vector3.zero;
            GetComponent <Rigidbody>().angularVelocity = Vector3.zero;

            if (netType == InstanceNetType.GameNetworkClient || netType == InstanceNetType.GameNetWorkOffline)
            {
                PTC.enableUserInput = false;
                PTC.UpdateWheels(0, 0);
                PTC.enabled = false;


                Destroy(TankUIRoot.gameObject);

                //GameNetwork.Instance.OnClientPlayerDead();
                //transform.root.GetComponentInChildren<Camera>().gameObject.AddComponent<Grayscale>().shader = Shader.Find("Hidden/Grayscale Effect");

                InGameVoiceSoundManager.PlayVoice(InGameVoiceSoundManager.VoiceType.Vehicle_Destroyed, InGameVoiceSoundManager.InGameVoiceLanguage(playerStateParameter.nationType));

                PoolManager.CreateObject("DestroyEffect", transform.position, transform.eulerAngles);
            }

            if (netType == InstanceNetType.GameNetworkOthers)
            {
                GetComponent <Rigidbody>().isKinematic = true;
            }

            #region 炮塔飞天
            if (Turret.GetComponent <MeshRenderer>() != null)
            {
                if (Turret.GetComponent <Rigidbody>() == null)
                {
                    Turret.AddComponent <Rigidbody>();
                }

                Turret.GetComponent <Rigidbody>().velocity = GetComponent <Rigidbody>().velocity *0.1f;
                Turret.GetComponent <Rigidbody>().AddForceAtPosition(Vector3.up * -500, Turret.transform.position);
                Turret.GetComponent <Rigidbody>().drag       = 0.1f;
                Turret.GetComponent <Rigidbody>().mass       = 1000;
                Turret.GetComponent <Rigidbody>().useGravity = true;
            }
            #endregion
        }
        else
        {
            //GameNetwork.Instance.OnPlayerDead(Util.FindPhotonPlayer (tankInitSystem.PlayerID),tankInitSystem.VehicleName);

            PTC.SwitchRPM = 0;
            PTC.UpdateWheels(0, 0);
            PTC.enabled = false;

            #region 爆炸特效
            PoolManagerSpawnModule.CreateObject("DestroyEffect", transform.position, transform.eulerAngles);
            #endregion
        }

        //foreach(Object temp in DiedDestoryObjects){
        //	if(temp){
        //		foreach (HitBox tempHB in ((GameObject)temp).GetComponentsInChildren<HitBox>()){
        //			if(tempHB){
        //				tempHB.enabled =false;
        //			}
        //		}
        //	}
        //}

        transform.tag = "Untagged";
        if (TankScript.GetComponent <TankFire>().tankFireParameter.HasMachineGun)
        {
            TankScript.GetComponent <TankFire>().GetComponent <MachineGun>().CancelInvoke();
        }
        TankScript.GetComponent <TankFire>().NowTime         = 0;
        TankScript.GetComponent <TankFire>().enabled         = false;
        TankScript.GetComponent <TurretController>().enabled = false;

        Destroy(GetComponent <Identity> ());

        GameEventManager.onPlayerVehicleDestroyed();

        if (GameDataManager.OfflineMode)
        {
            Destroy(transform.root.gameObject, 5f);
        }
    }
Пример #13
0
 void OnServerOnRicochet()
 {
     PoolManager.CreateObject("apcr_ricochet_main", transform.position, transform.eulerAngles);
 }
Пример #14
0
 void OnServerOnNotBreakDown()
 {
     PoolManager.CreateObject("ap_armor_not_pierce_main", transform.position, transform.eulerAngles);
 }