Why all instantiated objects get triggered when 1 is?
Hello, I have ran into another problem while working on a game. I made it so a ship fires homing shots that when in range move towards the target but for some reason, all projectiles get triggered if 1 gets triggered. Is this a prefab issue? Please help idk why it's happening...
Script on object shooting:
#pragma strict
public var ECSPlayer : GameObject;
public var SpawnLocation : Transform;
public var Delay : float;
private var Wait : int;
private var Ready : float;
function Start () {
Wait = PlayerPrefs.GetInt("ECS.Reload");
Ready = Delay;
}
function Update () {
if(Input.GetMouseButton(0) && Ready <= 0) {
Ready = Wait;
Instantiate(ECSPlayer, SpawnLocation.position, SpawnLocation.rotation);
}
if(Input.GetMouseButton(0)) {
Ready -= Time.deltaTime*5;
}
}
Script for projectile:
#pragma strict
private var HS : ECSH;
public var HTarget : Transform;
public var Speed : int;
public var Lifetime : int;
public var Homing : int;
private var TargetFound : boolean;
function Start () {
HS = gameObject.GetComponentInChildren(ECSH);
HS.HR = Homing;
TargetFound = false;
DestroySelf();
}
function Update () {
TargetFound = HS.EF;
HTarget = HS.EnemyLocation;
if (!TargetFound) {
transform.Translate(Vector3.forward * (Time.deltaTime*Speed));
}
if (TargetFound) {
transform.position = Vector3.MoveTowards(transform.position, HTarget.position, Time.deltaTime*Speed);
}
}
function DestroySelf () {
yield WaitForSeconds(Lifetime);
GetComponent(SphereCollider).enabled = false;
yield WaitForSeconds(0.05);
Destroy(gameObject);
}
Script on child of projectile (Collider for homing):
#pragma strict
static var HR : int; //Homing Range
static var EF : boolean; //Enemy Found
public var EnemyLocation : Transform;
function Start () {
EF = false;
GetComponent.< SphereCollider >().radius = HR;
EnemyLocation = GetComponent(Transform);
}
function Update () {
}
function OnTriggerEnter (collider:Collider) {
if (collider.tag == "Enemy") {
EF = true;
GetComponent(SphereCollider).enabled = false;
EnemyLocation = collider.gameObject.GetComponent(Transform);
}
}
I notice that your HS/EF variables are static, so maybe they are shared among all instances of the projectile colliders.
I thought static was to make variables sharable but not visible in the inspector. In any case, I tried to change them but nothing changed.
Also it's something with $$anonymous$$esh Collider because I added sphere collider and it works fine
Your answer
Follow this Question
Related Questions
Limit an amount of prefabs instantiated in javascript for Unity 5. 0 Answers
Two prefabs instantiated instead of one? 1 Answer
Destroying instantiated game objects from prefab when coliding with the ground 1 Answer
Having trouble Instantiating. 0 Answers
ExecuteInEditMode is not working when trying to instantiate a new GameObject [SOLVED] 1 Answer