你如何在 unity 2d 中将相机连接到生成的玩家?
How do you attach a camera to a spawned player in unity 2d?
所以我正在使用 unity 2d 开发一个简单的平台游戏。我创建了一个关卡生成器,可以在关卡开始时生成随机地形、敌人和玩家角色。我想让相机跟随玩家角色。我尝试使用 SetParent() 方法将玩家角色设置为主相机的子角色。我收到此错误消息:“设置驻留在预制资产中的转换的父级被禁用以防止数据损坏。”有办法解决这个问题吗?或者有其他方法可以让我的主摄像头跟随生成的玩家角色吗?
这是我的关卡生成器的玩家角色生成药水:
if (x == 1)
{
Instantiate(player, new Vector3Int(x, y + 2, 0), Quaternion.identity);
player.transform.SetParent(MainCamera);
}
如有任何帮助,我们将不胜感激。谢谢!!
尝试直接将父项指定为预制件的实例,然后将相机的局部变换归零:
GameObject myPlayer = Instantiate(player, new Vector3Int(x, y + 2, 0), Quaternion.identity); //GameObject can be whatever object type player is
myPlayer.transform.parent = MainCamera.transform;
MainCamera.transform.localPosition = Vector3.zero;
预制件没有父级,这就是您遇到该问题的原因。
正在修改player
正在修改预制件。但是,您的意思是修改从该预制件制作的实例。您需要获取 Instantiate
的结果并对其进行修改。
您可能还想保存它供以后参考,因此为此添加一个字段是合适的。
一共:
private GameObject playerInstance;
// ...
playerInstance = Instantiate(player, new Vector3Int(x, y + 2, 0), Quaternion.identity);
playerInstance.transform.SetParent(MainCamera.transform);
或者,如果您想让相机成为玩家的子项,以便它自动跟随玩家。如果这样做,您可能还想将 SetParent
的 worldPositionStays
参数设置为 false,以便在设置父级时相机保持其本地位置。
private GameObject playerInstance;
// ...
playerInstance = Instantiate(player, new Vector3Int(x, y + 2, 0), Quaternion.identity);
mainCamera.transform.SetParent(playerInstance.transform, false);
所以我正在使用 unity 2d 开发一个简单的平台游戏。我创建了一个关卡生成器,可以在关卡开始时生成随机地形、敌人和玩家角色。我想让相机跟随玩家角色。我尝试使用 SetParent() 方法将玩家角色设置为主相机的子角色。我收到此错误消息:“设置驻留在预制资产中的转换的父级被禁用以防止数据损坏。”有办法解决这个问题吗?或者有其他方法可以让我的主摄像头跟随生成的玩家角色吗?
这是我的关卡生成器的玩家角色生成药水:
if (x == 1)
{
Instantiate(player, new Vector3Int(x, y + 2, 0), Quaternion.identity);
player.transform.SetParent(MainCamera);
}
如有任何帮助,我们将不胜感激。谢谢!!
尝试直接将父项指定为预制件的实例,然后将相机的局部变换归零:
GameObject myPlayer = Instantiate(player, new Vector3Int(x, y + 2, 0), Quaternion.identity); //GameObject can be whatever object type player is
myPlayer.transform.parent = MainCamera.transform;
MainCamera.transform.localPosition = Vector3.zero;
预制件没有父级,这就是您遇到该问题的原因。
正在修改player
正在修改预制件。但是,您的意思是修改从该预制件制作的实例。您需要获取 Instantiate
的结果并对其进行修改。
您可能还想保存它供以后参考,因此为此添加一个字段是合适的。
一共:
private GameObject playerInstance;
// ...
playerInstance = Instantiate(player, new Vector3Int(x, y + 2, 0), Quaternion.identity);
playerInstance.transform.SetParent(MainCamera.transform);
或者,如果您想让相机成为玩家的子项,以便它自动跟随玩家。如果这样做,您可能还想将 SetParent
的 worldPositionStays
参数设置为 false,以便在设置父级时相机保持其本地位置。
private GameObject playerInstance;
// ...
playerInstance = Instantiate(player, new Vector3Int(x, y + 2, 0), Quaternion.identity);
mainCamera.transform.SetParent(playerInstance.transform, false);