Help me modify this code?

I would like to add two things to the end of this code:

(1) Destroy self
(2) Instantiate a new replacement object that follows transform and rotation while keeping it a child of a parented object.

Thanks!

var deadReplacement : Rigidbody;
var deadReplacementPosition : Vector3;
var deadReplacementRotation : Quaternion;
var dieSound : AudioClip;
var explosion : Transform;
var damagesound : AudioClip;
var initialDelay = 0.0;
var fadeSpeed = 1.0;
var explosionRadius = 5.0;
var explosionPower = 0.0;
var explosionDamage = 25.0;
var explosionTime = 1.0;
var myTransform : Transform;
var hit : RaycastHit;

function Start () {
   var explosionPosition = transform.position;
   var colliders : Collider[] = Physics.OverlapSphere (explosionPosition, explosionRadius);
   for (var hit in colliders) {
      if (!hit)
         continue;
      Debug.Log( " hit.collider.tag = " + hit.collider.tag);
      if (hit.rigidbody  hit.collider.tag == ("Respawn") ) {
         Debug.Log(" respawn object hit");
         var closestPoint = hit.ClosestPointOnBounds(explosionPosition);
         var distance = Vector3.Distance(closestPoint, explosionPosition);
         var hitPoints = 1.0;
         hitPoints *= explosionDamage;
         hit.rigidbody.SendMessageUpwards("ApplyDamage", hitPoints, SendMessageOptions.DontRequireReceiver);
 
         break;
      }
   }
}


renderer.material.color.a = 0.0;

yield new WaitForSeconds(initialDelay);


while (renderer.material.color.a < 1.0) {
   color = renderer.material.color;
   color.a = 1.0;
   renderer.material.color = Color.Lerp(renderer.material.color, color, fadeSpeed * Time.deltaTime);
   yield;

}

Hey,

1 - To get the object that the script is attached to, you can use Destroy (gameObject);

2 - Im not really too sure what you mean, so can you try and expand a bit?

Thanks for the reply, Luke! I simply want the object to use Destory(gameObject), then instantiate a new object. Something like the following:

newObject=Instantiate(gameObject,transform.position,transform.rotation);
  newObject.transform.parent=someTransformOrOther;
  Destroy(gameObject);

Hey ^.^
Your above code should work, however i’m not too sure about the parenting section as I have never tried that out myself. If you would like to instantiate an object by its name in the project folder (say you have a prefab called ‘Player1’), Then you can run the following:

var myobject=Instantiate(Resources.Load("Player1",GameObject),Vector3(x,y,z), transform.rotation);

For the above to work, ‘Player1’ must be inside a folder called Resources. This works very well if you want to instantiate an object from a database (as database info comes as strings).

Edit - here’s a chunk of code i’ve been given before that should hopefully help out with the parenting :slight_smile:

childGameObject.transform.parent = parentGameObject.transform;

Thanks, Luke,

So, this is what I have, but I’m getting an error that says: ‘Transform’ is not a member of System.Type

var deadReplacement : Rigidbody;
var deadReplacementPosition : Vector3;
var deadReplacementRotation : Quaternion;
var dieSound : AudioClip;
var explosion : Transform;
var damagesound : AudioClip;
var initialDelay = 0.0;
var fadeSpeed = 1.0;
var explosionRadius = 5.0;
var explosionPower = 0.0;
var explosionDamage = 25.0;
var explosionTime = 1.0;
var myTransform : Transform;
var hit : RaycastHit;
var childGameObject = Rigidbody;

function Start () {
   var explosionPosition = transform.position;
   var colliders : Collider[] = Physics.OverlapSphere (explosionPosition, explosionRadius);
   for (var hit in colliders) {
      if (!hit)
         continue;
      Debug.Log( " hit.collider.tag = " + hit.collider.tag);
      if (hit.rigidbody  hit.collider.tag == ("Respawn") ) {
         Debug.Log(" respawn object hit");
         var closestPoint = hit.ClosestPointOnBounds(explosionPosition);
         var distance = Vector3.Distance(closestPoint, explosionPosition);
         var hitPoints = 1.0;
         hitPoints *= explosionDamage;
         hit.rigidbody.SendMessageUpwards("ApplyDamage", hitPoints, SendMessageOptions.DontRequireReceiver);
 
         break;
      }
   }
}


renderer.material.color.a = 0.0;

yield new WaitForSeconds(initialDelay);


while (renderer.material.color.a < 1.0) {
   color = renderer.material.color;
   color.a = 1.0;
   renderer.material.color = Color.Lerp(renderer.material.color, color, fadeSpeed * Time.deltaTime);
   yield;

}


        // Replace ourselves with a deadbody
                     if (deadReplacement) {
                        var dead : GameObject = Instantiate(deadReplacement, deadReplacementPosition, deadReplacementRotation);
                        childGameObject.transform.parent = parentGameObject.transform; 
}

It looks to me like parentGameObject isn’t defined anywhere so it’s not too sure what it is :slight_smile: