Exemplo n.º 1
0
    /*
     * Deals damage to both objects on collision, by definition
     * Handles death when needed
     */
    private void DealDamage(GameObject other)
    {
        //Get reference to collider
        ObjectCollisionHandler otherCollider = other.GetComponent <ObjectCollisionHandler>();

        //if no collider exists, then attempt to take from parent
        if (otherCollider == null && other.transform.parent == null)
        {
            return;
        }
        while (otherCollider == null)
        {
            other         = other.transform.parent.gameObject;
            otherCollider = other.GetComponentInParent <ObjectCollisionHandler>();
        }

        //Different behavior if hitting or is the player
        if (tag.CompareTo("Player") == 0)
        {
            currentHealth -= gameObject.GetComponent <PlayerWeapons>().Hit(otherCollider.damageAmount);
        }
        else
        {
            currentHealth -= otherCollider.damageAmount;
        }

        //set tags for possible scoring
        lastColliderTag = other.transform.root.tag;
    }
Exemplo n.º 2
0
    void OnEnable()
    {
        if (!isServer)
        {
            return;
        }

        handler = GetComponent <ObjectCollisionHandler>();
        StartCoroutine(KillObject());
    }
Exemplo n.º 3
0
    public void CmdActivate(GameObject player)
    {
        ObjectCollisionHandler playerCollisionHandler = player.GetComponent <ObjectCollisionHandler>();
        PlayerWeapons          playerWeapons          = player.GetComponent <PlayerWeapons>();

        if (healthDef.activated)
        {
            if (healthDef.increaseMax)
            {
                playerCollisionHandler.maxHealth += healthDef.amount;
            }
            playerCollisionHandler.AddHealth(healthDef.amount);
        }
        if (energyDef.activated)
        {
            if (energyDef.increaseMax)
            {
                playerWeapons.maxEnergy += energyDef.amount;
            }
            playerWeapons.AddEnergy(energyDef.amount);
        }
        if (changeWeaponDef.activated)
        {
            playerWeapons.ChangeWeapon(changeWeaponDef.weaponType, true);
        }
        if (changeMissileDef.activated)
        {
            playerWeapons.ChangeMissile(changeMissileDef.missileType, changeMissileDef.amount, true);
        }
        if (spawnObjectDef.activated)
        {
            Pools.Initialize(spawnObjectDef.objectToSpawn, transform.position, Quaternion.identity);
        }
        if (spawnTurretDef.activated)
        {
            playerWeapons.AddTurret(1);
        }
        if (spawnGunDef.activated)
        {
            playerWeapons.AddGuns(1);
        }
    }
    void OnTriggerEnter(Collider other)
    {
        //On collision, damage the next object and continue from there
        if (collideDefinitions.collidesWith(other))
        {
            //initial damage is handled by the collision handler

            //find information between the two locations
            Vector3 direction = rootTransform.position - other.transform.position;
            Vector3 middle    = (rootTransform.position + other.transform.position) / 2.0f;
            float   factor    = 1.5f;

            //Create the rod
            Transform rodTransform = rod.GetComponent <Transform>();
            rodTransform.position = middle;
            rodTransform.rotation = Quaternion.FromToRotation(Vector3.right, direction);
            rodTransform.Rotate(new Vector3(90, 0, 0));
            GameObject newRod = Pools.Initialize(rod, rodTransform.position, rodTransform.rotation);
            newRod.transform.localScale = new Vector3(direction.magnitude * factor, 0.5f, 0.5f);

            //move this handler onto the other's location and reset it
            rootTransform.position = other.transform.position;
            detector.radius        = 0;

            //damage the other element
            ObjectCollisionHandler handler = other.GetComponent <ObjectCollisionHandler>();
            //if no collider exists, then attempt to take from parent
            GameObject otherObject = other.gameObject;
            while (handler == null)
            {
                otherObject = otherObject.transform.parent.gameObject;
                handler     = otherObject.GetComponentInParent <ObjectCollisionHandler>();
            }
            handler.Damage(damageAmount, tag);
            Pools.Initialize(explosion, rootTransform.position, rootTransform.rotation);

            //increase hits performed
            hitsPerformed++;
        }
    }
Exemplo n.º 5
0
 void Start()
 {
     //Set player variables
     AddGuns(numStartingGuns);
     playerCollision = GetComponent <ObjectCollisionHandler>();
 }