- Home /
Spawn Shield to all objects
Hi all, I have 3 objects in my game (that move around randomly). What I am trying to do is when you buy the shield upgrade in the shop it adds a shield to each one.
My script so far adds the shields at each objects current position when you buy it in the shop but then the shields just stay where they instantiated not stayed attached to the objects, can anyone help to make each shield object then follow the object it spawned on?
private var ray : Ray;
private var rayCastHit : RaycastHit;
var buySound : AudioClip;
var buy_effect : GameObject; //buy effect
var tick : GameObject;
var locked : GameObject;
var plus2 : GameObject;
var player : GameObject; //The player
public var respawnPrefab: GameObject;
public var respawns: GameObject[];
function Start(){
//Find jiji_standard
//jiji = GameObject.Find("jiji_standard");
//Find jiji_standard 1
//jiji1 = GameObject.Find("jiji_standard 1");
//Find jiji_standard 2
//jiji2 = GameObject.Find("jiji_standard 2");
//Find player
player = GameObject.Find("Player");
tick.active = false;
}
function Update(){
if(Input.GetMouseButtonDown(0)){
ray = Camera.main.ScreenPointToRay (Input.mousePosition);
if (Physics.Raycast (ray, rayCastHit)){
if(rayCastHit.transform.name == "shield" && locked.active == false){
//crate buy effect at point of hit
buy_effect.active = true;
audio.PlayOneShot(buySound);
tick.active = true;
player.GetComponent(Game5_Player).Addmana(-80);
plus2.collider.enabled = false;
respawns = GameObject.FindGameObjectsWithTag("jiji_standard");
for (var respawn: GameObject in respawns) {
Instantiate(respawnPrefab, respawn.transform.position, respawn.transform.rotation);
}
}
}
}
}
I changed what you put to:
var instance = Instantiate(respawnPrefab, respawn.transform.position, respawn.transform.rotation);
instance.transform.SetParent(respawn.transform);
and it works perfect, thankyou very much!! was driving me mad :)
how do i mark this comment with a tick?
Answer by ShadyProductions · Jul 31, 2015 at 05:20 PM
GameObject instance = Instantiate(respawnPrefab, respawn.transform.position, respawn.transform.rotation);
instance.transform.SetParent(respawn.transform);
something like this?
Answer by Ellenack · Jul 29, 2015 at 09:47 PM
You are probably looking for this :
http://docs.unity3d.com/ScriptReference/Transform.SetParent.html
I tried adding : respawnPrefab.transform.SetParent(respawn);
under the line Instantiate(respawnPrefab, respawn.transform.position, respawn.transform.rotation);
but i get this error:
Assets/Game 5/Script/Javascript/buy_shield.js(55,50): BCE0023: No appropriate version of 'UnityEngine.Transform.SetParent' for the argument list '(UnityEngine.GameObject)' was found.