Esempio n. 1
0
    public void TakeDamage(float damage)
    {
        if (isGameOver)
        {
            return;
        }

        hitpoint -= damage;

        if (hitpoint <= 0)
        {
            hitpoint = 0;
            Debug.Log("rip elli cu in petah tikwa lol");
            isGameOver = true;
            EventManagerController.TriggerEvent("GameOver");
        }

        UpdateHealthbar();
    }
Esempio n. 2
0
    private void OnCollisionEnter(Collision col)
    {
        if (col.collider.gameObject.tag == "Player")
        {
            // Reduce health from player

            // Play the hit sound effect on the player because were destroying this object

            // Destroy the shell.
            Destroy(gameObject);
            EventManagerController.TriggerEvent("TakeDamage");
        }
        else
        {
            if (col.collider.gameObject.tag == "BRICC")
            {
                col.collider.gameObject.GetComponent <Rigidbody>().isKinematic = false;
            }

            Destroy(gameObject);
        }
    }
    void OnTriggerEnter(Collider collider)
    {
        var collidedGameObject = collider.gameObject;

        Debug.Log($"Elli triggers with {collidedGameObject.name}");

        // This piece of code is irrelevant as we now detect collision with a layer-based approach.
        // We don't have to programatically check for the Tag.

        /*if (destructionWhitelist.Contains(collidedGameObject.tag)) {
         *  Debug.Log("Triggered type of MefakedHaorvim. ignoring!");
         *  return;
         * }*/

        var fixedElliScale = new Vector3(gameObject.transform.parent.transform.localScale.x * gameObject.transform.localScale.x,
                                         gameObject.transform.parent.transform.localScale.y * gameObject.transform.localScale.y,
                                         gameObject.transform.parent.transform.localScale.z * gameObject.transform.localScale.z);
        var collidedGameObjScale = collidedGameObject.transform.localScale;

        // Tried getting the mesh filter, from which i can get the mesh, from which i wanted to get
        // the canvas (is it the correct hierarchy?) for the scaleFactor. That way we won't need the 0.01 HACK.
        // var collidedGameObjMesh = collidedGameObject.GetComponent<MeshFilter>().mesh;
        // var calcedCollidedObjScale = collidedGameObjScale * collidedGameObject.GetComponent<Canvas>().scaleFactor;

        // WE ACTUALLY DON'T NEED SCALE FACTOR AT THE MOMENT, SO IT APPEARS!

        // HACK: We hardcodedingly use '0.01' as our scaleFactor. But it's not desirable or anything near that..
        // var calcedCollidedObjScale = collidedGameObjScale * 1 / 0.01f; // lol
        var calcedCollidedObjScale = collidedGameObjScale * 1;

        if (calcedCollidedObjScale.magnitude > fixedElliScale.magnitude)
        {
            Debug.Log($"Elli is smaller than {collidedGameObject.name}.");
            Debug.Log($"Elli size = {fixedElliScale.ToString()}. {collidedGameObject.name} size = {calcedCollidedObjScale.ToString()}");
            return;
        }

        var gameObjectToDestroy = collidedGameObject.tag == "Enemy" ? collidedGameObject.transform.parent.gameObject : collidedGameObject;

        if (collider.gameObject.tag == "Zumbi")
        {
            collider.gameObject.GetComponent <StateController>().enabled = false;
            Destroy(collider.gameObject.GetComponent <NavMeshAgent>());
            EventManagerController.TriggerEvent("SwallowZumbi");
        }

        collidedGameObject.GetComponent <Rigidbody>().isKinematic = false;
        collidedGameObject.GetComponent <Rigidbody>().useGravity  = true;

        var scaleFactor = 0.2f;

        if (collidedGameObject.tag == "BRICC")
        {
            Debug.Log("BRICCD");
            collidedGameObject.layer = 8;
            scaleFactor = 0.0045f;
        }

        Debug.Log($"Destroying {gameObjectToDestroy.name}...");
        Destroy(gameObjectToDestroy, 20.0f);
        gameObject.transform.parent.transform.localScale += new Vector3(calcedCollidedObjScale.x, 0, calcedCollidedObjScale.z) * scaleFactor;
        EventManagerController.TriggerEvent("SwallowMapItem");
        // gameObject.transform.parent.SendMessage("HealDamage", 1.0f);
    }