Ejemplo n.º 1
0
 public override void Init(KBPlayer _owner)
 {
     base.Init(_owner);
     lifetime = KBConstants.GameConstants.defaultAOElifetime;
     transform.localScale = initScale;
     renderer.material.color = originalMaterial.color;
 }
Ejemplo n.º 2
0
 /// <summary>
 /// Call this after spawning an instance of an ability out of ObjectPool to reinitialize the instance.
 /// </summary>
 public virtual void Init(KBPlayer _owner)
 {
     spawnTime = Time.time;
     if (trailRenderer != null)
     {
         Invoke("ResetTrail", 0.01f);
     }
     team = _owner.team;
     owner = _owner;
     active = true;
 }
Ejemplo n.º 3
0
 public override void Init(KBPlayer _owner)
 {
     base.Init(_owner);
     if (hitPlayer == null)
     {
         hitPlayer = new List<GameObject>();
     }
     else
     {
         hitPlayer.Clear();
     }
 }
Ejemplo n.º 4
0
 public KBPlayer FindClosestPlayer(KBPlayer fromPlayer, float minimumDist, bool oppositeTeamOnly)
 {
     List<KBPlayer> players = GameManager.Instance.players;
     KBPlayer target = null;
     float closest = 0;
     for (int i = 0; i < players.Count; i++)
     {
         if (players[i].GetHashCode() != fromPlayer.GetHashCode())
         {
             float distance = 0;
             if (oppositeTeamOnly && players[i].team != fromPlayer.team)
             {
                 distance = Vector3.Distance(fromPlayer.transform.position, players[i].transform.position);
             }
             else if (!oppositeTeamOnly)
             {
                 distance = Vector3.Distance(fromPlayer.transform.position, players[i].transform.position);
             }
             if (distance > minimumDist)
             {
                 if (closest == 0)
                 {
                     closest = distance;
                     target = players[i];
                 }
                 else if (closest != 0 && distance < closest)
                 {
                     closest = distance;
                     target = players[i];
                 }
             }
         }
     }
     return target;
 }
Ejemplo n.º 5
0
 private void Start()
 {
     player = transform.parent.GetComponent<KBPlayer>();
 }
Ejemplo n.º 6
0
    private void DoExplosionAnimation(KBPlayer player)
    {
        PlayerGibModel gib = null;
        switch (player.type)
        {
            case PlayerType.mech:
                gib = mechGibBody;
                break;

            case PlayerType.drone:
                gib = droneGibBody;
                break;

            case PlayerType.tank:
                gib = tankGibBody;
                break;

            case PlayerType.core:
                break;

            default:
                break;
        }
        PlayerGibModel g = ObjectPool.Spawn(gib, player.gameObject.transform.position + Vector3.up * 3, player.gameObject.transform.rotation);
        g.Init();

        player.gameObject.GetComponent<BoxCollider>().enabled = false;
        player.upperBody.SetActive(false);
        player.lowerBody.SetActive(false);
        player.ammoHud.SetActive(false);

        player.particleSystem.Emit(GameConstants.explosionParticleAmount);

        int n = GameConstants.explosionChaffAmount;
        Chaff c = null;
        for (int i = 0; i < n; i++)
        {
            for (int j = 0; j < n; j++)
            {
                for (int h = 0; h < n; h++)
                {
                    c = ObjectPool.Spawn(chaff,
                        new Vector3(
                            player.gameObject.transform.position.x - (n / 2.0f * chaff.transform.localScale.x) + (n * chaff.transform.localScale.x * i),
                            player.gameObject.transform.position.y - (n / 2.0f * chaff.transform.localScale.x) + (n * chaff.transform.localScale.x * i),
                            player.gameObject.transform.position.z - (n / 2.0f * chaff.transform.localScale.x) + (n * chaff.transform.localScale.x * i)
                            ),
                            Quaternion.identity
                            );
                    c.Init();
                }
            }
        }
        //c.gameObject.rigidbody.AddExplosionForce(1.0f, transform.position, 1.0f);
    }
Ejemplo n.º 7
0
 public void ConfirmHit(KBPlayer victimObject, int damage)
 {
     photonView.RPC("ConfirmHitToOthers", PhotonTargets.All, victimObject.networkPlayer, damage);
 }
Ejemplo n.º 8
0
    private IEnumerator DoFiringCoroutine(Vector3 direction, KBPlayer firedBy, float _inheritSpeed = 0.0f)
    {
        if (sound.Length > 0)
        {
            audio.PlayOneShot(sound[Random.Range(0, sound.Length)]);
        }
        if (particleSystem != null)
        {
            StartCoroutine(ParticleBurstStaged());
        }

        for (int i = 0; i < burstSize; i++)
        {
            if (owner.networkPlayer.isLocal)
            {
                switch (level)
                {
                    case 0:
                        Camera.main.GetComponent<ScreenShake>().StartShake(0.1000f, 1.0000f);
                        break;

                    case 1:
                        Camera.main.GetComponent<ScreenShake>().StartShake(0.1000f, 1.5000f);
                        break;

                    case 2:
                        Camera.main.GetComponent<ScreenShake>().StartShake(0.1000f, 2.3000f);
                        break;

                    default:
                        Camera.main.GetComponent<ScreenShake>().StartShake(0.0500f, 0.500f);
                        break;
                }
            }

            if (casing != null)
            {
                if (burstDelay > 0.0f)
                {
                    SpawnShellCasing(100.0f);
                }
                else
                {
                    if (i == 0)
                    {
                        SpawnShellCasing(130.0f);
                    }
                }
            }

            ProjectileBaseScript projectile = null;
            Vector3 modifiedDirection = direction;
            if (burstFireWeapon)
            {
                modifiedDirection.y = (direction.y - maximumSpreadAngle) + (i * 2.0f * maximumSpreadAngle / burstSize);
            }

            // Spawn projectile
            projectile = ObjectPool.Spawn(projectileType[level], transform.position, Quaternion.Euler(modifiedDirection));
            projectile.inheritSpeed = _inheritSpeed;
            projectile.Team = firedBy.Team;
            projectile.Init(firedBy);
            projectile.lifetime = 100.0f;
            projectile.setLifetimeForMaxRange(maxRange);
            projectile.damage = projectile.damageLevel[level];

            Collider[] collider = owner.GetComponentsInChildren<Collider>();
            foreach (Collider c in collider)
            {
                if (c.enabled && projectile.collider.enabled)
                {
                    Physics.IgnoreCollision(c, projectile.collider, true);
                }
            }

            // Alter behavior if special projectile type
            if (projectile.homingProjectile)
            {
                projectile.targetPlayer = GameManager.Instance.FindClosestPlayer(owner, 10, true);
            }
            if (projectile.aimedProjectile)
            {
                projectile.targetPosition = new Vector3(-owner.mousePlayerDiff.x, owner.transform.position.y, -owner.mousePlayerDiff.y);
            }

            // Play effects

            lastProjectile = projectile;

            if (i < burstSize)
            {
                if (burstDelay > 0.0f)
                {
                    yield return new WaitForSeconds(burstDelay);
                }
            }
            else if (burstDelay == 0)
            {
                yield return new WaitForEndOfFrame();
            }

            StartCoroutine(owner.GamepadVibrateTriggers(0.1250f));

        }
    }
Ejemplo n.º 9
0
 /// <summary>
 /// Fires and sets max range of projectile at runtime
 /// </summary>
 /// <param name="maxRange"></param>
 /// <param name="firedBy"></param>
 /// <param name="_inheritSpeed"></param>
 /// <returns></returns>
 protected ProjectileBaseScript Fire(int maxRange, KBPlayer firedBy, float _inheritSpeed = 0)
 {
     ProjectileBaseScript p = Fire(firedBy, _inheritSpeed);
     if (p != null)
     {
         p.setLifetimeForMaxRange(maxRange);
     }
     return p;
 }
Ejemplo n.º 10
0
 /// <summary>
 /// Fires projectile (does not alter lifetime)
 /// </summary>
 /// <param name="firedBy"></param>
 /// <param name="_inheritSpeed"></param>
 /// <returns></returns>
 protected ProjectileBaseScript Fire(KBPlayer firedBy, float _inheritSpeed = 0)
 {
     return Fire(transform.rotation.eulerAngles, firedBy, _inheritSpeed);
 }
Ejemplo n.º 11
0
 protected ProjectileBaseScript Fire(Vector3 direction, KBPlayer firedBy, float _inheritSpeed = 0.0f)
 {
     ProjectileBaseScript projectile = null;
     if (available)
     {
         available = false;
         cooldown = cooldownStart;
         ammo--;
         StartCoroutine(DoFiringCoroutine(direction, firedBy, _inheritSpeed));
     }
     projectile = lastProjectile;
     return projectile;
 }