2016-05-07 52 views
3

我不能對這個'子彈'應用任何東西我實例化,我無法訪問它上面的scipts。 instatiate後,我想連接到它在scriptbullter的VAR採取1實例化C#時改變附加腳本中var的值#

if (Input.GetMouseButton (1) && canFire) { 

    var mousePosition = FindObjectOfType<Camera>().ScreenToWorldPoint (new Vector3 (Input.mousePosition.x, Input.mousePosition.y, Input.mousePosition.z - FindObjectOfType<Camera>().transform.position.z)); 

    GetComponent<Rigidbody2D>().transform.eulerAngles = new Vector3 (0, 0, Mathf.Atan2 ((mousePosition.y - transform.position.y), (mousePosition.x - transform.position.x)) * Mathf.Rad2Deg - 90); 

    bullet bulletobj = Instantiate (bulletFired, transform.position + transform.forward * 2, Quaternion.identity) as bullet; 
    bulletobj.GetComponent<scriptbullet>().bulletDamages = 1; //this line doesn't work 

    bulletobj.GetComponent<Rigidbody2D>().velocity = (mousePosition - transform.position).normalized * bulletSpeed * Time.smoothDeltaTime; 

    canFire = false; 
} 

感謝值提前傢伙:d

+0

拆分排隊,該部分發生故障時,'bulletobj.GetComponent ()','GetComponent < scriptbullet>()。bulletDamages'或者'bulletDamages = 1'。這取決於它失敗的原因是一個不同的問題。 –

+0

第一個失敗,它是一個附加到子彈的腳本,而不是遊戲對象(第二個)的射手... – Ay0m3

+0

它是如何失敗的,請將確切的錯誤文本複製並粘貼到您的問題中。 –

回答

3

bulletobj.GetComponent<scriptbullet>()失敗,因爲bulletobj爲空。從Instantiate返回的對象不是bullet而是爲GameObject,改變行代碼

GameObject bulletobj = Instantiate (bulletFired, transform.position + transform.forward * 2, Quaternion.identity) as GameObject; 
+0

哦,我認爲它現在的作品,現在我會看看如果子彈採取了變種 – Ay0m3

+0

非常感謝你 – Ay0m3

+0

一定要接受答案,如果它解決了你的問題。 –