- Home /
Enemy damage error
I have a script that fires raycasts attached to my gun and another script on my enemy that receives the damage from the ray but it does not work, instead I get an error saying
MissingMethodExeption: Method not found: UnityEngine.RaycastHit.GetComponent.
What does this mean and how can I solve it?
These are my scripts,
var amountOfShots = 8;
var reloadTime = 1.5;
function Update (){
if(Input.GetButtonDown("Fire1")){
Shoot();
}
if(Input.GetKeyDown("r")){
Reload();
}
}
function Reload (){
yield WaitForSeconds(reloadTime);
amountOfShots = 8;
}
var shootSound : AudioClip;
var bloodPrefab : Transform;
var sparksPrefab : Transform;
var hit : RaycastHit;
var range = 500;
function Shoot (){
if(amountOfShots > 0){
amountOfShots--;
if(shootSound){
audio.PlayOneShot(shootSound);
}
if(Physics.Raycast(transform.position, transform.forward, hit, range)){
var rot = Quaternion.FromToRotation(Vector3.up, hit.normal);
if(hit.collider.tag == "Enemy"){
if(bloodPrefab){
Instantiate(bloodPrefab, hit.point, rot);
}
hit.GetComponent(DamageReciever).health -= 20;
}else{
if(sparksPrefab){
Instantiate(sparksPrefab, hit.point, rot);
}
}
}
}
}
And
var health = 100;
function Damage(dmg: int){
health -= dmg; // reduce health
if (health <= 0){ // if health has gone...
Destroy(gameObject); // enemy suicides
}
}
Answer by Lo0NuhtiK · Apr 27, 2012 at 03:41 PM
in your raycast area ->
var otherScript : otherScriptName ;
otherScript = hit.collider.gameObject.GetComponent(otherScriptName) ;
otherScript.otherVariable = whatever ;
replace [ hit.GetComponent(DamageReciever).health -= 20; ] with all 3 of them.
...and if you want to use that damage function rather than doing health-=20 on its own, the third line would be otherScript.Damage(20) ;
Your answer
Follow this Question
Related Questions
Destroy enemy using raycasts 2 Answers
Finding Distance between Angles and Points 2 Answers
Getting the Furthest Point on a Ray 1 Answer
C# Raycast 2D GameObject follow Mouse 1 Answer
Destroy Scripting Help 1 Answer