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(); }
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); }