2016-03-28 52 views
0

總之,我有一個2D遊戲,在那裏忍者會產生並向我的玩家投擲忍者星星。我讓我的忍者星星成爲我的忍者敵人的孩子,並將我的忍者拖入項目文件夾以使其成爲預製件。爲了讓我的忍者明星跟隨我的球員,我必須讓他成爲一名預製隊員。我的播放器附有鼠標腳本,我的播放器通過鼠標觸摸移動。我注意到,每當我移動我的玩家時,忍者明星並不直接跟隨我的玩家預製,而是進入最後一個地方,我把我的玩家預製在場景視圖中。我發現了我的問題,這是因爲我將我的播放器預製在忍者明星的腳本預製場中,當我嘗試將我的播放器對象放置在腳本預製場中以供忍者星星使用時,它不起作用。有沒有辦法讓我的忍者明星跟隨我的玩家,而不是跟隨我的玩家預製?謝謝。忍者明星腳本:預製跟隨選手對象?

#pragma strict 

var Player : Transform; 
var MoveSpeed = 4; 
var MaxDist = 10; 
var MinDist = 5; 


function Start() 
{ 
    GetComponent.<Rigidbody2D>().angularVelocity = Random.Range(-200, 200); 
    Destroy(gameObject, 2.4); 
} 

function Update() 
{ 

    if(Vector3.Distance(transform.position,Player.position) >= MinDist){ 

     transform.position += (Player.transform.position - transform.position).normalized * MoveSpeed * Time.deltaTime; 

    } 
} 

而且一個圖片跟進我的意思。 (george_0是我的玩家,後面跟着腳本里的忍者星星跟着我的腳本。)http://i.imgur.com/iRVO3eS.png?1

回答

0

你的玩家不需要爲此做預製。把它做成一個也不錯,但是出於其他原因(你不能把預製件分配給那個Player變量來完成以下工作就是我的意思)。你可以在你的忍者之星的Start功能中獲得它,例如通過做一個Player = GameObject.Find("george_0");

你也有var Player : Transform,但然後使用Player.transform.position這基本上是transform.transform.position。使玩家成爲遊戲對象,或者僅使用Player.position。根據這一點,您可能必須將Find()更改爲Player = GameObject.Find("george_0").transform;

對於實際運動的我會說這樣做(假設播放器是在這種情況下,變換):

function Update() 
{ 
    if(Vector3.Distance(transform.position,Player.position) >= MinDist) 
    { 
     transform.position = Vector3.MoveTowards(transform.position, Player.position, Time.deltaTime * MoveSpeed); 
    } 
} 
+0

耶!它的工作謝謝你!!!!! –