- Home /
Raycast shooting problems
We have been working on a script that shoots a raycast from the main camera, and in theory, if it hits an object tagged "enemy", the enemy will die. The problem is, that once one "enemy" is killed, all objects tagged "enemy" are also destroyed. Here are the two scripts we use:
var bulletDamage = 50; var range = 10000; var hit : RaycastHit;
function shoot() { if(Input.GetButtonDown("Fire1")) { if(Physics.Raycast(transform.position, transform.forward, hit, range)) {
if(hit.collider.gameObject.tag == "enemy") { return true; } else { return false; }
}
}
}
function Update() { if(shoot() == true) { print("HIT"); AIhealth.AIHEALTH = AIhealth.AIHEALTH - bulletDamage; } }
Then, our AIhealth script:
static var AIHEALTH = 100;
function Update () { if(AIHEALTH <= 0) Destroy(gameObject); }
Answer by lhk · Oct 24, 2010 at 01:05 PM
As I see the problem you have attached the script AIhealth to all enemies in the scene. Thus by accessing a static variable all the enemies are damaged. Alternatively you could send a message to the enemy that was hit. This is c# code for the first script
using UnityEngine;
using System.Collections;
public class raycastshot : MonoBehaviour { public float bulletDamage = 50; public float range = 10000; public RaycastHit hit;
void shoot() { if(Input.GetButtonDown("Fire1")) { if(Physics.Raycast(transform.position, transform.forward,out hit, range)) { if(hit.collider.gameObject.tag == "enemy") { GameObject enemy=hit.collider.gameObject; enemy.BroadcastMessage("applyDamage",bulletDamage); } } } }
// Use this for initialization void Start () {
}
// Update is called once per frame void Update () { shoot(); }
}
Then for the AIhealth script
using UnityEngine;
using System.Collections;
public class AIhealth : MonoBehaviour { public float AIHEALTH = 100;
// Use this for initialization void Start () {
}
// Update is called once per frame void Update () { if(AIHEALTH <= 0) { Destroy(gameObject); } }
public void applyDamage(float damage) { AIHEALTH=AIHEALTH-damage; }
}
Now every enemy should have its own health.
Your answer
Follow this Question
Related Questions
Get an Object to Face/Move to RayCast Hit.point? 1 Answer
Raycast or Collider for Shooting? 2 Answers
Need a script for a gun that shoots bullet using raycast 2 Answers
Why do my bullets only destroy themselves sometimes after colliding with the wall? 0 Answers
Raycast from inside an object 2 Answers