所以我正在統一 2d 中開發一個簡單的平臺游戲。我創建了一個關卡生成器,它會在關卡開始時生成隨機地形、敵人和玩家角色。我想讓相機跟隨玩家角色。我嘗試使用 SetParent() 方法將玩家角色設定為主攝像機的孩子。我收到此錯誤訊息:“設定位于預制資產中的轉換的父項已禁用以防止資料損壞。” 有沒有辦法解決這個問題?或者有沒有其他方法可以讓我的主攝像頭跟隨生成的玩家角色?
這是我的關卡生成器的玩家角色生成藥水:
if (x == 1)
{
Instantiate(player, new Vector3Int(x, y 2, 0), Quaternion.identity);
player.transform.SetParent(MainCamera);
}
任何幫助將不勝感激。謝謝!!
uj5u.com熱心網友回復:
預制件沒有父級,這就是您遇到該問題的原因。
修改player是修改預制件。但是,您的意思是修改由該預制件制成的實體。你需要得到結果Instantiate并修改它。
您可能還想保存它以供以后參考,因此為此添加一個欄位是合適的。
共:
private GameObject playerInstance;
// ...
playerInstance = Instantiate(player, new Vector3Int(x, y 2, 0), Quaternion.identity);
playerInstance.transform.SetParent(MainCamera.transform);
或者,如果您想讓相機成為您的播放器的子項,以便它自動跟隨播放器。如果這樣做,您可能還希望將worldPositionStays引數設定SetParent為 false,以便在設定父級時相機保持其本地位置。
private GameObject playerInstance;
// ...
playerInstance = Instantiate(player, new Vector3Int(x, y 2, 0), Quaternion.identity);
mainCamera.transform.SetParent(playerInstance.transform, false);
uj5u.com熱心網友回復:
嘗試直接將父級指定為預制件的實體,然后將相機的本地變換歸零:
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;
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/365046.html
