I'm making a game on unity where the user selects a character and the character spawns into the game world. The world consists of different doors. I want to add a transition animation (just a regular fade) between scenes in the game world but because the character is instantiated during runtime, I'm not sure how to attach the animator to the character. I also want the animation to trigger upon collision of the player with a door. I know how to create the animation clips and the animator but I need help on knowing when and how to attach the animator to an object that's going to be instantiated during runtime. Will I attach the animator in OnCollisionEnter() function? If so, how do I reference that animator through code?
Here is my code for OnCollisionEnter in a script that is attached to the player during runtime. (this works fine)
private void OnCollisionEnter(Collision collision)
{
GameObject door = collision.gameObject;
if (door.CompareTag("ExitDoor"))
SceneManager.LoadScene(0); // spawn back at main lobby
else if (door.CompareTag("RoomDoor"))
{
GameObject Room = door.transform.parent.gameObject;
if (Room.name.Equals("Room1Door"))
SceneManager.LoadScene(1); // go to first room
if (Room.name.Equals("Room2Door"))
SceneManager.LoadScene(2); // go to second room
if (Room.name.Equals("Room3Door"))
SceneManager.LoadScene(3); // go to third room
}
}
And here is the script of instantiating the player during runtime when the scene is loaded (this is in another script)
public GameObject InstantiatePlayer()
{
characterIndex = PlayerPrefs.GetInt(playerprefkey);
selectedChar = characters[characterIndex];
selectedChar.tag = "Player";
selectedChar.AddComponent<MoveRooms>(); //attaches the script where OnCollisionEnter is
return Instantiate(selectedChar, spawnPoint.transform.position, spawnPoint.transform.rotation);
}