- Home /
How to destroy GameObjects(enemies)?
Hi, i'm new to scripting and i want figure out how to kill my enemies, or when I kill them the enemy dies (disapers) but when im trying to kill the next enemy I wont attack him?
Im using scripts from the Hack and Slash turtorials (enemyHealth and Targetting) so if enyone could help me I would totaly appriciate is.
The EnemyHealth Script:
using UnityEngine;
using System.Collections;
public class EnemyHealth : MonoBehaviour {
public int maxHealth = 100;
public int curHealth = 100;
public GameObject destroy;
public float healthBarLength;
// Use this for initialization
void Start () {
healthBarLength = Screen.width / 2;
}
// Update is called once per frame
void Update () {
AddjustCurrentHealth(0);
}
void OnGUI(){
GUI.Box(new Rect (10, 40, healthBarLength, 20), curHealth + "/" + maxHealth);
}
public void AddjustCurrentHealth(int adj) {
curHealth += adj;
if(curHealth <0)
curHealth = 0;
if(curHealth > maxHealth)
curHealth = maxHealth;
if(maxHealth < 1)
maxHealth = 1;
if(curHealth <= 0)
Die();
healthBarLength = (Screen.width / 2) * (curHealth / (float)maxHealth);
}
public void Die () {
Destroy(gameObject);
}
}
And here the Targetting Script:
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
public class Targetting: MonoBehaviour {
public List<Transform> targets;
public Transform selectedTarget;
private Transform myTransform;
// Use this for initialization
void Start () {
targets = new List<Transform>();
selectedTarget = null;
myTransform = transform;
AddAllEnemies();
}
public void AddAllEnemies()
{
GameObject[] go = GameObject.FindGameObjectsWithTag("Enemy");
foreach(GameObject enemy in go)
AddTarget(enemy.transform);
}
public void AddTarget(Transform enemy)
{
targets.Add (enemy);
}
private void SortTargetsByDistance()
{
targets.Sort(delegate(Transform t1, Transform t2) {
return Vector3.Distance(t1.position, myTransform.position).CompareTo(Vector3.Distance(t2.position, myTransform.position));
});
}
private void TargetEnemy()
{
if(selectedTarget == null)
{
SortTargetsByDistance();
selectedTarget = targets[0];
}
else
{
int index = targets.IndexOf(selectedTarget);
if(index < targets.Count -1)
{
index++;
}
else
{
index = 0;
}
selectedTarget = targets[index];
}
SelectTarget();
}
private void SelectTarget()
{
PlayerAttack pa = (PlayerAttack)GetComponent("PlayerAttack");
pa.target = selectedTarget.gameObject;
}
// Update is called once per frame
void Update () {
if(Input.GetKeyDown(KeyCode.Tab))
{
TargetEnemy();
}
}
}
Please help!! :´(
Answer by gribbly · Oct 13, 2012 at 07:31 AM
C# version:
GameObject enemy;
void destroyenemy() {
Destroy(enemy);
}
Answer by sgmongo · Oct 13, 2012 at 12:35 AM
I believe the command you are looking for it Object.Destroy
for example:
var enemy : GameObject;
function destroyenemy () {
Destroy(enemy);
}
That would destroy the enemy GameObject when the function is called. I hope this helps. ^.^
Is this a JavaScript? Cuz im using C Sharp :) And will i t work when I have multiple enemies?
Yes it is. Sorry bout that Cameron Brown has provided you with a C version below. however the Destroy(GameObject); command is the same. Just plop it in where u want to destroy your enemy and it should handle it. Just remember to run it in your "PlayerAttack" script, only when you hit your target. (Pa.Target if I'm reading this correctly).
Eventually you will want to have a model with a death animation. When you do you'll have the object destroy itself after the animation. A mob destroying itself would use:
Destroy(gameObject);
The lowercase "g" in gameObject designates itself. IE: suicide.
If you have more issues feel free to ask. Otherwise I request you pick a answer to accept, because it alters the acceptance rate.
On that note I'll give Cameron a plus just to spread the love.
Answer by gribbly · Oct 13, 2012 at 07:50 AM
//this will find and destroy any game object tagged with "enemy"
GameObject[] enemies = GameObject.FindGameObjectsWithTag("enemy");
foreach(GameObject enemy in enemies ){
Destroy(enemy);
}
Your answer
Follow this Question
Related Questions
Enemy AI/Battle system 1 Answer
How to handle entity management 1 Answer
Enemy Targetting Help 1 Answer
enabling text only working for one enemy 1 Answer
Database-like arrays 1 Answer