2016-11-24 138 views
0

我工作的一個產卵腳本,但有一個我無法找到一個解決問題的辦法......轉換的Vector3改造

我得到那個說

「不能隱式錯誤轉換型「UnityEngine.Vector3」到「UnityEngine.Transform」」

我可以通過添加.POSITION到spawningpos刪除錯誤,但不會工作,因爲它不是一個對象的變換隻需在腳本變量變換

public GameObject[] spawningObj; 
public GameObject[] insects; 
public GameObject[] invierment; 
public GameObject[] inviermentSingel; 
public Transform player; 
public int maxNPCsPerChunk; 
public int maxInectsPerChunk; 
public int maxInviermentalsPerChunk; 
public int spawningAria; 

private Transform spawningpos; 

// Use this for initialization 
void Start() 
{ 
    if (player == null) 
     player = GameObject.FindWithTag("Player").transform; 

    int max = Random.Range(0, maxInectsPerChunk); 
    for (int i = 0; i < max; i++) 
    { 
     spawningpos = new Vector3(Random.Range(-spawningAria, spawningAria) + transform.position.x, 2f, Random.Range(-spawningAria, spawningAria) + transform.position.z); 
     //Error on above line 

     Instantiate(insects[Random.Range(0, insects.Length)], spawningpos); 
    } 
+0

爲什麼你不聲明spawningpos作爲'Vector3',因爲你用它作爲一個簡單的位置? – Hellium

+0

變換是一個支持所有「變換」相關值的組件。將簡單的Vector3轉換爲包含旋轉,位置,比例等的結構幾乎是不可能的。 –

+0

「spawningpos.position = new Vector3(Random.Ran ...」但這不是正確的做法。編輯:查看下面的答案爲什麼和如何:) – 2016-11-24 09:30:00

回答

7

你的問題是你收到的錯誤解釋得非常好,讓我們來看一看

「無法隱式轉換類型‘UnityEngine.Vector3’到‘UnityEngine.Transform’」

那麼你在哪裏設置一個Transform的值到Vector3?

private Transform spawningpos; 

spawningpos是變換

spawningpos = new Vector3(Random.Range(-spawningAria, spawningAria) + transform.position.x, 2f, Random.Range(-spawningAria, spawningAria) + transform.position.z); 

但在這裏,你是它的價值顯然設置爲Vector3

Instantiate(insects[Random.Range(0, insects.Length)], spawningpos); 

在此行中,那麼你實例化對象 - 使用Transform作爲輸入。正如你會發現here,您使用該方法的重載卻是實實在在的父母的變換,試試這個,而不是

private Vector3 spawningpos; 

由其次,作爲前

spawningpos = new Vector3(Random.Range(-spawningAria, spawningAria) + transform.position.x, 2f, Random.Range(-spawningAria, spawningAria) + transform.position.z); 

最後

Instantiate(insects[Random.Range(0, insects.Length)], spawningpos, Quaternion.identity); 

該代碼將調用Instantiate方法的正確超載,設置對象t的旋轉是必須的通過Vector3

+0

非常感謝!^^你只犯了一個錯誤,應該是身份而不是身份 – Diggs

+0

@Diggs我不好,會編輯大寫] –