【发布时间】:2021-03-06 15:33:50
【问题描述】:
我正在制作一个统一的游戏,用户选择一个角色,然后该角色会生成到游戏世界中。世界由不同的门组成。我想在游戏世界的场景之间添加一个过渡动画(只是一个常规的淡入淡出),但是因为角色是在运行时实例化的,所以我不确定如何将动画师附加到角色上。我还希望动画在玩家与门碰撞时触发。我知道如何创建动画剪辑和动画师,但我需要帮助了解何时以及如何将动画师附加到将在运行时实例化的对象上。 我会在 OnCollisionEnter() 函数中附加动画师吗?如果是这样,我如何通过代码引用该动画师?
这是我在运行时附加到播放器的脚本中的 OnCollisionEnter 代码。 (这很好用)
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
}
}
这是在加载场景时在运行时实例化播放器的脚本(这是在另一个脚本中)
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);
}
【问题讨论】: