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 
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 