- Home /
Making a Ball Respawn after collision with Goal?
Hi there,
I've looked around for similiar questions, while there are some that helped none of them where specific enough, or they were written in a diff code.
Basically I have a ball with a rigidbody collider, and a Goal with a Box Collider (Is Trigger)
I have this code on my ball
public class Ball : MonoBehaviour
{
void Start () {
rigidbody.velocity = new Vector3(0, 0, 19);
}
}
And I have this on my goal function OnTriggerEnter(enterer : Collider)
{
if (enterer.collider.gameObject.CompareTag("Respawn"))
{
Debug.Log("Score!");
GUITextExample.Counter ++;
}
} The ball is written in C# & the goal in Java, this is down to my lack of coding knowledge, preferably I would like the ball code to be in Java too, But my main issue is making the ball respawn after a couple of secs to its starting point. Can anybody offer me any help on this?
Thanks,
Answer by Lttldude · Apr 22, 2012 at 04:13 AM
Here is what I came up with:
//create an empty gameobject at the respawn point for the ball, thwn drop it in the inspector here
var startingPosition : Transform;
function OnTriggerEnter(enterer : Collider)
{
if (enterer.CompareTag("Respawn"))
{
Debug.Log("Score!");
GUITextExample.Counter ++;
//sends the ball to startingPosition specified in the inspector
enterer.transform.position = startingPosition.position;
}
}
Hope that helps.
Answer by Lboy · Apr 22, 2012 at 09:52 PM
That helped a lot, I added it to the collider and it works fine. Thanks
I was wondering though, how do I delay the respawn time for a few seconds?
Thanks again
add 'yield WaitForSeconds(3.0);' before 'enterer.transform.position = startingPosition.position;'
Answer by SeasiaInfotechind · Mar 17, 2016 at 12:11 PM
Hello @Lboy
You can also respawn the object after collision with the goal by Instantiating the ball at the starting position of the ball. Also, if you want the object to be instantiate at the start position after few seconds. Code implemented.
Transform Start_Position_Ball; GameObject Ball_To_Instantiate;
void OnTriggerEnter(Collider Col) Or void OnCollisionEnter(Collision Col) // you can do either both way
{
if (Col.gameObject.tag == "Goal")
{
Debug.Log("Collided with Goal");
yield return new WaitForSeconds(5); //gameobject will respawn after 5 seconds
Instantiate(Ball_To_Instantiate,Start_Position_Ball,Quaternion.identity);
}
}
Thanks Ankush Taneja
Your answer
![](https://koobas.hobune.stream/wayback/20220613070610im_/https://answers.unity.com/themes/thub/images/avi.jpg)