private void OnTriggerEnter2D(Collider2D collision) { if (collision.gameObject.tag == GameManagerScript.Tags.SafeHaven.ToString()) { ScenarioManager.GetInstance().SaveVictim(currentTarget, gameObject); } }
/****************************************** * * public void HitEnemy(GameObject player, GameObject enemy) * Signals the PBManager that the player hit the enemy, for statistical reference, * removes the enemy from the list, checks if a new scenario should be loaded, * and destryos the enemy GameObject; * * Parameters * int playerID - The number ID for the new player. * Return * * ***************************************/ public void HitEnemy(GameObject player, GameObject enemy) { PlayerBehaviourManager.GetInstance().HitEnemy(player, enemy); ScenarioManager.GetInstance().enemies.Remove(enemy); ScenarioManager.GetInstance().CheckNewScenario(); Destroy(enemy); }
/****************************************** * * private void OnCollisionEnter2D(Collision2D collision) * If the player collides with an Item, activates the powerUp * * Parameters * Collision2D collision - Unity default parameter * Return * * ***************************************/ private void OnCollisionEnter2D(Collision2D collision) { if (collision.gameObject.tag == "Item") { ScenarioManager.GetInstance().GetItem(gameObject, collision.gameObject); ActivatePowerUp(); } }
/****************************************** * * private void OnCollisionEnter2D(Collision2D collision) * If the enemy collides with a victim, signals the scenarioManager to destroy that victim * If the enemy collides with a player, signals the player to receive damage. * * Parameters * Collision2D collision - Default unity parameter. * Return * * ***************************************/ private void OnCollisionEnter2D(Collision2D collision) { if (collision.gameObject.tag == "Victim") { ScenarioManager.GetInstance().DestroyVictim(collision.gameObject); } if (collision.gameObject.tag == "Player") { collision.gameObject.GetComponent <PlayerMovementScript>().ReceiveDamage(); } }
/****************************************** * * public virtual void FixedUpdate() * At a specified interval, move the enemy closer to its target * * Parameters * * Return * * ***************************************/ public virtual void FixedUpdate() { foreach (GameObject player in GameManagerScript.GetInstance().players) { if (Vector2.Distance(transform.position, player.transform.position) < maxViewDistance / 2f) { lastWait = 0; } } if (Time.time - lastWait < waitTime) { return; } if (currentTarget) { float xDif = currentTarget.transform.position.x - transform.position.x; float yDif = currentTarget.transform.position.y - transform.position.y; Vector2 difVector = new Vector2(xDif, yDif).normalized; difVector *= maxSpeed; transform.position = new Vector3(transform.position.x + difVector.x, transform.position.y + difVector.y, transform.position.z); if (currentTarget == tempTarget) { if (Vector2.Distance(transform.position, currentTarget.transform.position) < (maxViewDistance / 10f)) { print("currentTarget = " + currentTarget); Destroy(tempTarget); currentTarget = null; lastWait = Time.time; waitTime = UnityEngine.Random.Range(2, 5); print("currentTarget = " + currentTarget); } } } else { if (tempTarget == null) { tempTarget = new GameObject(); tempTarget.transform.position = new Vector2(transform.position.x + UnityEngine.Random.Range(-2, 3), transform.position.y + UnityEngine.Random.Range(-2, 3)); int posRet = ScenarioManager.GetInstance().CheckValidObjectPosition(tempTarget.transform); if (posRet != 0) { Destroy(tempTarget); } } } // else roam }
/****************************************** * * private void OnTriggerEnter2D(Collider2D collision) * If the objective collides with a player object, signals the ScenarioManager to check for a new Scenario * and destroys the objective gameObject * * Parameters * Collider2D collison - Unity default parameter * * Return * * ***************************************/ private void OnTriggerEnter2D(Collider2D collision) { if (collision.isTrigger) { return; } if (collision.gameObject.tag == GameManagerScript.Tags.Player.ToString()) { finalized = true; ScenarioManager.GetInstance().CheckNewScenario(); Destroy(gameObject); } }
private void CheckDeltaAttacks(Player player, Player template) { float deltaAttackTime = player.lastAttack - template.lastAttack; float deltaAttacks = player.numAttacks - template.numAttacks; float deltaEnemiesKilled = player.enemiesKilled - template.enemiesKilled; float accuracy = deltaEnemiesKilled / deltaAttacks; accuracy = (deltaAttacks == 0) ? 0 : accuracy; accuracy = (accuracy > 1) ? 1 : accuracy; float missesPercent = 1 - accuracy; float percentEnemyKilled = deltaEnemiesKilled / ScenarioManager.GetInstance().currentNumEnemies; /*print("<Player" + player.playerID + ">: Time between attacks -> " + ((deltaAttackTime == 0) ? "Has not attack" : deltaAttackTime.ToString())); * print("<Player" + player.playerID + ">: # of attacks -> " + deltaAttacks); * print("<Player" + player.playerID + ">: # of enemies killed -> " +deltaEnemiesKilled); * print("<Player" + player.playerID + ">: Accuracy -> " + accuracy * 100 + "%"); * print("<Player" + player.playerID + ">: Percent of misses -> " + missesPercent * 100 + "%"); * print("<Player" + player.playerID + ">: Percent of enemies Killed -> " + percentEnemyKilled * 100 + "%");*/ }
/****************************************** * * private void LateUpdate() * At the end of the interaction, recalculates the current target priority * * Parameters * * Return * * ***************************************/ private void LateUpdate() { float minDistance = 65535f; GameObject newTarget = null; foreach (GameObject victim in ScenarioManager.GetInstance().victims) { if (Vector2.Distance(transform.position, victim.transform.position) / victimPriority < minDistance) { minDistance = Vector2.Distance(transform.position, victim.transform.position) / victimPriority; newTarget = victim; } } foreach (GameObject player in GameManagerScript.GetInstance().players) { float playerPriority = GetPlayerPriority(player); if (Vector2.Distance(transform.position, player.transform.position) / playerPriority < minDistance) { minDistance = Vector2.Distance(transform.position, player.transform.position); newTarget = player; } } if (minDistance > maxViewDistance) { if (tempTarget) { currentTarget = tempTarget; } else { currentTarget = null; } } else if (newTarget != null) { Destroy(tempTarget); currentTarget = newTarget; } }
/****************************************** * * public void CreateCenario() * Signals the ScenarioManager to validate and create the next Scenario * * Parameters * * Return * * ***************************************/ public void CreateCenario() { print("GAMEMANAGER_CreateCenario"); ScenarioManager.GetInstance().CheckNewScenario(); }