Пример #1
0
 private void OnCollisionEnter(Collision collision)
 {
     if (collision.gameObject.CompareTag("Enemy") && hasPowerup)
     {
         Rigidbody           enemyRigidbody = collision.gameObject.GetComponent <Rigidbody>();
         UnityEngine.Vector3 awayFromPlayer = collision.gameObject.transform.position - transform.position;
         enemyRigidbody.AddForce(awayFromPlayer * _powerUpStrength, ForceMode.Impulse);
         Debug.Log("Collided with: " + collision.gameObject.name + "with powerup set to" + hasPowerup);
     }
 }
Пример #2
0
    private bool IsDirectionObstructed(PlayerController player, UnityEngine.Vector3 direction, float distance)
    {
        if (player.gameObject.layer == player.jumpLayer)
        {
            return(false);
        }
        RaycastHit hit;

        if (Physics.Raycast(transform.position, direction, out hit, distance, nailedLayerMask))
        {
            if (player.transform != hit.transform)
            {
                return(true);
            }
        }

        return(false);
    }
Пример #3
0
    public void SetBullet(UnityEngine.Vector3 newDirection, float speed, PlayerController originplayer, Color playerColor)
    {
        StartCoroutine(DestroyAfterTime());
        StartCoroutine(WaitForExitOriginZone());

        direction            = newDirection;
        projectileSpeed      = speed;
        originPlayer         = originplayer;
        trail.material.color = playerColor;

        if (direction.y >= projectileDownThreshold)
        {
            gameObject.layer = UpLayer;
        }
        else
        {
            gameObject.layer = downLayer;
        }

        _LevelManager.instance.scatteredAmmo += 1;

        thrownEventSound.start();
    }
Пример #4
0
    private void OnTriggerEnter(Collider other)
    {
        thrownEventSound.stop(FMOD.Studio.STOP_MODE.IMMEDIATE);

        if (other.gameObject.CompareTag("DestroyProjectiles"))
        {
            Destroy(gameObject);
        }

        else if (other.gameObject.CompareTag("Player"))
        {
            var player = other.gameObject.GetComponent <PlayerController>();

            if (!nailed)
            {
                if (player == originPlayer)
                {
                    if (offPlayerZone && !player.AmmoIsMax())
                    {
                        player.ResupplyAmmo(1);
                        Destroy(gameObject);
                    }
                }
                else
                {
                    FMODUnity.RuntimeManager.PlayOneShot(playerHitSound);
                    player.ProjectileHit(direction, hitForce, damage);
                    Instantiate(impactParticles, transform.position, Quaternion.identity);
                    Destroy(gameObject);
                }
            }
            else
            {
                if (player.AmmoIsMax())
                {
                    return;
                }

                if (!IsDirectionObstructed(player, player.transform.position - transform.position,
                                           nailedDistance))
                {
                    player.ResupplyAmmo(1);
                    Destroy(gameObject);
                }
            }
        }

        else if (other.gameObject.CompareTag("Death Zone"))
        {
            Instantiate(impactParticles, transform.position, Quaternion.identity);

            FMODUnity.RuntimeManager.PlayOneShot(bounceSound);
            var newDir = UnityEngine.Vector3.Reflect(direction, other.transform.position.normalized);
            newDir.z  = 0;
            direction = newDir;
        }

        else if (other.gameObject.CompareTag("Cross Zone"))
        {
            other.gameObject.GetComponent <CrossZone>().ObjectCross(transform);
        }


        else
        {
            FMODUnity.RuntimeManager.PlayOneShot(wallHitSound);
            Nail(other.GetComponent <Collider>());
            Instantiate(impactParticles, transform.position, Quaternion.identity);
        }
    }