- Home /
Question by
taintedsushi · Oct 21, 2017 at 03:05 PM ·
scoringenemys
Can figure out how to score individuals in a enemy group
So I'm creating a Space invaders like game and I have my enemies in a Enemy group. There are different enemies in the group and they are suppose to score differently. So far my code take the first enemy that gets killed and uses its score for the rest of the enemies. I'm new to Unity and I am guessing I am calling the the enemy controller script for the individual enemy wrong, Please help!
This is my simple enemy controller script:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class EnemyController : MonoBehaviour {
public int score;
}
This is my game manager script:
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.SceneManagement;
public class GameSceneManager : MonoBehaviour {
public Camera mainCamera;
public Text scoreText;
public Text gameOverText;
public PlayerController thePlayer;
public EnemyGroupController enemyGroup;
//call from script
private EnemyController theEnemy;
private int score;
private int enemyCount;
private float gameTimer;
private bool gameOver;
private int totalScore;
void Start () {
Time.timeScale = 1;
thePlayer.OnHitEnemy += OnGameOver;
thePlayer.OnKillEnemy += OnKillEnemy;
scoreText.enabled = true;
gameOverText.enabled = false;
enemyCount = enemyGroup.GetComponentsInChildren<EnemyController> ().Length;
//this is the call for score
theEnemy = FindObjectOfType<EnemyController> ();
}
void Update () {
if (gameOver)
{
if (Input.GetKeyDown ("r"))
{
SceneManager.LoadScene (SceneManager.GetActiveScene ().name);
}
return;
}
scoreText.text = "Score: " + totalScore;
}
void OnKillEnemy()
{
//adds score from call above
this.totalScore += theEnemy.score;
enemyCount--;
if (enemyCount == 0)
{
OnGameOver ();
}
}
void OnGameOver()
{
gameOver = true;
scoreText.enabled = false;
gameOverText.enabled = true;
if(enemyCount != 0)
{
gameOverText.text = "Game Over!\nScore: " + totalScore + "\nPress R to Restart";
} else
{
gameOverText.text = "You Win!!\nScore: " + totalScore + "\nPress R to Restart";
}
Time.timeScale = 0;
}
}
Comment
Your answer
Follow this Question
Related Questions
Unity Game Score Script 1 Answer
Scoring help ! 1 Answer
Scoring and Variables 1 Answer
Load next level when reach score 1 Answer
How to increase score by one per second when you are holding an object 2 Answers