Beispiel #1
0
    IEnumerator ShakeAndDie()
    {
        startedDeathFlashing = true;
        Vector3 basePosition = rbody.position;

        rbody.isKinematic = true;
        float radius = 0.2f;

        WaitForEndOfFrame waitFrame = new WaitForEndOfFrame();

        while (squash.inSquash && !squash.isFlat)
        {
            yield return(waitFrame);
        }

        for (int i = 0; i < 20; i++)
        {
            rbody.position = basePosition + Random.onUnitSphere * radius;
            yield return(new WaitForSeconds(0.05f - i * 0.02f));
        }
        transform.localScale = Vector3.one;
        ParticleEffectsManager.GetEffect("DeathExplosion").Spawn(meshRenderer);
        if (Time.time - lastDeathSoundTime > 0.25f)
        {
            lastDeathSoundTime = Time.time;
            Sound.Play(deathSound, 0.5f);
        }
        Destroy(gameObject);
    }
    void OnTriggerEnter(Collider other)
    {
        IAttackable thingICanKill = other.GetComponent <IAttackable>();

        if (thingICanKill != null)
        {
            if (!audioSource.isPlaying)
            {
                audioSource.PlayOneShot(impact, 0.5f);
            }
            Vector3   knockback = Vector3.zero;
            Transform me        = player ? player : transform;
            knockback   = other.transform.position - me.position;
            knockback.y = 1f;
            knockback.Normalize();
            knockback *= knockbackStrength;
            thingICanKill.TakeDamage(new DamageParams(damage, currentElement, damageType, knockback));

            if (damageType == DamageType.Hit)
            {
                player.GetComponent <PlayerMovement>().AddMana(10);
                ParticleEffectsManager.GetEffect("Hit1").Spawn(transform.position);
            }
        }
    }
Beispiel #3
0
    public void SwingHit()
    {
        for (int i = 0; i < numRays; i++)
        {
            ParticleEffectsManager.GetEffect("SwingFX").Spawn(rayCastPoint.transform.position, transform.rotation);

            Vector3 fwd       = rayCastPoint.transform.forward;
            float   Afwd      = Mathf.Atan2(fwd.z, fwd.x);
            float   angle     = Afwd + (-40 + i * 80 / numRays) * Mathf.Deg2Rad;
            Vector3 direction = new Vector3(Mathf.Cos(angle), 0, Mathf.Sin(angle));

            direction.y = 0;

            Ray        r = new Ray(rayCastPoint.transform.position, direction);
            RaycastHit hit;
            if (Physics.Raycast(r, out hit, 10f))
            {
                IAttackable thingICanKill = hit.collider.GetComponent <IAttackable>();
                if (thingICanKill != null)
                {
                    audioSource.PlayOneShot(swingSoundHit, 0.5f);

                    Vector3 knockback = Vector3.zero;
                    knockback   = hit.transform.position - transform.position;
                    knockback.y = 1f;
                    knockback.Normalize();
                    knockback *= knockbackStrength;

                    thingICanKill.TakeDamage(new DamageParams(swingDamage, currentElement, damageType, knockback));

                    ParticleEffectsManager.GetEffect("Hit1").Spawn(hit.transform.position);
                }
            }
        }
    }
 /// <summary>
 /// Initialize all private properties
 /// </summary>
 private void Awake()
 {
     _pool            = GameObject.Find("GameManager").GetComponent<GameManager>().BulletPool;
     _xform           = GameObject.Find("EnemySpawnPoint").transform;
     _playerXform     = GameObject.Find("Player").transform;
     _particleManager = GameObject.Find("ParticleManager").GetComponent<ParticleEffectsManager>();
 }
Beispiel #5
0
 /// <summary>
 /// Initialize all private properties
 /// </summary>
 private void Awake()
 {
     _pool            = GameObject.Find("GameManager").GetComponent <GameManager>().BulletPool;
     _xform           = GameObject.Find("EnemySpawnPoint").transform;
     _playerXform     = GameObject.Find("Player").transform;
     _particleManager = GameObject.Find("ParticleManager").GetComponent <ParticleEffectsManager>();
 }
Beispiel #6
0
 public void StopFreezing()
 {
     meshRenderer.material = normalMat;
     meshRenderer.material.SetFloat("_TintAmount", 0.0f);
     iceTimer = -1;
     ParticleEffectsManager.GetEffect("Ice").Stop(frostIndex);
     frostIndex = -1;
 }
Beispiel #7
0
 public void StartBurning()
 {
     if (fireIndex == -1)
     {
         fireIndex = ParticleEffectsManager.GetEffect("Fire").Spawn(meshRenderer);
     }
     fireTimer = duration;
 }
 private void Start()
 {
     _xform           = transform; 
     _startingColor   = renderer.material.color; 
     _pool            = PoolManager.Pools[_BULLET_POOL_STRING];
     _particleManager = GameObject.Find("ParticleManager").GetComponent<ParticleEffectsManager>();
     _spawnManager    = GameObject.Find("SpawnMananger").GetComponent<SpawnManager>();
 }
Beispiel #9
0
 public void ElcStart()
 {
     if (lightIndex == -1)
     {
         lightIndex = ParticleEffectsManager.GetEffect("Lightning").Spawn(meshRenderer);
     }
     elcTimer = duration;
 }
 private void Start()
 {
     _xform           = transform;
     _startingColor   = renderer.material.color;
     _pool            = PoolManager.Pools[_BULLET_POOL_STRING];
     _particleManager = GameObject.Find("ParticleManager").GetComponent <ParticleEffectsManager>();
     _spawnManager    = GameObject.Find("SpawnMananger").GetComponent <SpawnManager>();
 }
Beispiel #11
0
 public void StopBurning()
 {
     fireTimer = -1;
     if (fireIndex != -1)
     {
         ParticleEffectsManager.GetEffect("Fire").Stop(fireIndex);
     }
     fireIndex = -1;
 }
Beispiel #12
0
    void Awake()
    {
        if (controller == null)
        {
            controller = this;
        }

        DontDestroyOnLoad(gameObject);
    }
Beispiel #13
0
    public void Die()
    {
        ParticleEffectsManager.GetEffect("DeathExplosion").Spawn(meshRenderer);
        Sound.Play(deathSound);
        Sound.Play(deathSound2);
        gameObject.SetActive(false);
        GameObject go = new GameObject("PlayerDeath", typeof(PlayerDeath));

        go.GetComponent <PlayerDeath>().Die();
    }
Beispiel #14
0
 // Update is called once per frame
 public void FreezeStart()
 {
     print("yay he froze");
     if (frostIndex == -1)
     {
         frostIndex = ParticleEffectsManager.GetEffect("Ice").Spawn(meshRenderer);
     }
     iceTimer = duration;
     meshRenderer.material = material;
 }
    void Start ()
	{
	    _player          = GameObject.Find("Player").         GetComponent<Player>();
        _particleManager = GameObject.Find("ParticleManager").GetComponent<ParticleEffectsManager>();
	    _xForm           = transform;
        _pool            = GameObject.Find("GameManager").    GetComponent<GameManager>().BulletPool;
	    _weapons         = _player.                           GetComponent<Weapons>();
        CreatePath();
        pickupType = PickupType.BulletVel;
        SetPickupType();
	}
Beispiel #16
0
 void Start()
 {
     _player          = GameObject.Find("Player").GetComponent <Player>();
     _particleManager = GameObject.Find("ParticleManager").GetComponent <ParticleEffectsManager>();
     _xForm           = transform;
     _pool            = GameObject.Find("GameManager").GetComponent <GameManager>().BulletPool;
     _weapons         = _player.GetComponent <Weapons>();
     CreatePath();
     pickupType = PickupType.BulletVel;
     SetPickupType();
 }
    void Awake()
    {
        xform                     = transform;    
        //TODO: Move this to a private serialized object                         
        _playerSpawnPoint         = GameObject.Find("PlayerSpawnPoint").transform; // set reference to Spawn Point Object
        xform.position            = _playerSpawnPoint.position;                    // Set player pos to spawnPoint pos
        _pool                     = _gm.BulletPool;
        _particleManager          = GameObject.Find("ParticleManager").GetComponent<ParticleEffectsManager>();
        weapons                   = GetComponent<Weapons>();

        GameEventManager.GameStart += GameStart;
    }
Beispiel #18
0
    void Awake()
    {
        xform = transform;
        //TODO: Move this to a private serialized object
        _playerSpawnPoint = GameObject.Find("PlayerSpawnPoint").transform;         // set reference to Spawn Point Object
        xform.position    = _playerSpawnPoint.position;                            // Set player pos to spawnPoint pos
        _pool             = _gm.BulletPool;
        _particleManager  = GameObject.Find("ParticleManager").GetComponent <ParticleEffectsManager>();
        weapons           = GetComponent <Weapons>();

        GameEventManager.GameStart += GameStart;
    }
Beispiel #19
0
 private void OnTriggerEnter(Collider col)
 {
     if (col.gameObject.tag == "AOE")
     {
         Sound.Play(impact, 5f);
         ParticleEffectsManager.GetEffect("ObjectBreak").Spawn(transform.position);
         Destroy(gameObject);
         for (int i = 0; i < 10; i++)
         {
             Instantiate(smallStone, transform.position, Quaternion.identity);
         }
     }
 }
Beispiel #20
0
    virtual protected void Update()
    {
        speed = GetComponent <TestEnemy>().maxSpeed = 6;
        if (flammable && flammable.IsBurning())
        {
            SetHealth(health - fireDamagePerSecond * Time.deltaTime);
        }

        if (freezable && freezable.IsFreezing())
        {
            SetHealth(health - iceDamagePerSecond * Time.deltaTime);
            slowSpeed = GetComponent <TestEnemy>().maxSpeed = 1.5f;
        }

        if (poisonStatus > 0)
        {
            SetHealth(health - poisonDamagePerSecond * Time.deltaTime);
            poisonStatus -= Time.deltaTime;

            if (poisonStatus <= 0)
            {
                poisonStatus = -1;
                ParticleEffectsManager.GetEffect("Poison").Stop(poisonEffectIndex);
            }
        }

        if (electracuted && electracuted.IsElc())
        {
            //healthSlider.value = health;
            //healthSlider.gameObject.SetActive(true);
            stun = GetComponent <TestEnemy>().maxSpeed = 0f;

            print("STUNNED");
        }

        if (iFramesTimer > 0)
        {
            iFramesTimer -= Time.deltaTime;
            if (iFramesTimer <= 0)
            {
                iFramesTimer = -1;
                GetComponent <Renderer>().material.SetFloat("_TintAmount", 0);
            }
        }
        slowSpeed = speed;
        stun      = speed;
    }
Beispiel #21
0
    IEnumerator ShakeAndDie()
    {
        startedDeathFlashing = true;
        Renderer renderer     = GetComponent <Renderer>();
        Vector3  basePosition = rbody.position;

        rbody.isKinematic = true;
        float radius = 0.2f;

        for (int i = 0; i < 20; i++)
        {
            rbody.position = basePosition + Random.onUnitSphere * radius;
            yield return(new WaitForSeconds(0.05f - i * 0.02f));
        }
        transform.localScale = Vector3.one;
        ParticleEffectsManager.GetEffect("DeathExplosion").Spawn(GetComponent <MeshRenderer>());
        Sound.Play(deathSound);
        Destroy(gameObject);
    }
Beispiel #22
0
 public void ElcStop()
 {
     elcTimer = -1;
     ParticleEffectsManager.GetEffect("Lightning").Stop(lightIndex);
     lightIndex = -1;
 }
Beispiel #23
0
 void Awake()
 {
     Instance = this;
 }
Beispiel #24
0
    virtual public void TakeDamage(DamageParams args)
    {
        if (health > 0)
        {
            if (!squash.inSquash && iFramesTimer <= 0)
            {
                if (args.amount > 0)
                {
                    SetHealth(health - args.amount);
                    if (args.damageType == DamageType.Squash)
                    {
                        squash.DoSquash(health > 0);
                    }
                    else if (args.damageType == DamageType.Hit)
                    {
                        iFramesTimer    = iFramesDuration;
                        knockbackVector = knockbackMultiplier * args.knockback;
                        StartCoroutine(Flasher());
                    }
                    ExtraTakeDamage(args);
                }

                CameraEffects.Get.FreezeFrames(0.15f, 0.01f);

                switch (args.element)
                {
                case Element.None:
                    break;

                case Element.Fire:
                    if (flammable)
                    {
                        flammable.StartBurning();
                        if (!audioSource.isPlaying)
                        {
                            audioSource.PlayOneShot(burn, 0.5f);
                        }
                    }
                    break;

                case Element.Ice:
                    if (freezable)
                    {
                        freezable.FreezeStart();
                        if (!audioSource.isPlaying)
                        {
                            audioSource.PlayOneShot(slow, 1f);
                        }
                    }
                    break;

                case Element.Poison:
                    poisonStatus = poisonStatusDuration;
                    if (poisonStatus > 0)
                    {
                        poisonEffectIndex = ParticleEffectsManager.GetEffect("Poison").Spawn(GetComponent <MeshRenderer>());
                        if (!audioSource.isPlaying)
                        {
                            audioSource.PlayOneShot(poisoned, 1f);
                        }
                    }
                    break;

                case Element.Lightning:
                    if (electracuted)
                    {
                        electracuted.ElcStart();
                        if (!audioSource.isPlaying)
                        {
                            audioSource.PlayOneShot(paralysis, 0.10f);
                        }
                    }
                    break;
                }

                if (health <= 0)
                {
                    Die();
                    if (Random.Range(1, 5) == 1)
                    {
                        Instantiate(powerUps[Random.Range(0, powerUps.Count - 1)], transform.position, Quaternion.identity);
                    }
                }
            }
        }
    }
Beispiel #25
0
 public void PlayParticleEffect(string effectName)
 {
     ParticleEffectsManager.GetEffect(effectName).Spawn(weapon.overHeadHitBox.transform.position);
 }