2014-01-16 51 views
0

基本上我需要Coins(範圍內的GameObject)在播放器進入PowerUp(遊戲對象)的觸發器後跟隨播放器一段時間。 我的腳本是PowerUp對象的一個​​組件。問題是,我不知道如何讓Coins跟隨玩家,PowerUp隨時關注玩家。Unity3d:如何使對象跟隨播放器

OnTriggerEnter (other : Collider) 
{ 
if(other.tag == "Player") 
{ 
    transform.LookAt(Player); 

     if(Vector3.Distance(transform.position,Player.position) >= MinDist) 
      { 
       transform.position +=  transform.forward*MoveSpeed*Time.deltaTime; 
      } 
     if(Vector3.Distance(transform.position,Player.position) <= MaxDist) 
      { 
       score = score + 5; 
       Debug.Log("Player Score" + score); 
       Destroy(gameObject); 
      } 
} 

回答

0

同時結合了您的IF的

你有你的最大和最小檢查向後...

currentDist = Vector3.Distance(transform.position,Player.position) 

if (currentDist<max) 
    move towards player 

if(currentDist<min) 
    collect coin 

also add a timer 
followTime += Time.deltaTime 
if (followTime > MaxTime) 
    Destroy(this.gameobject) 
+0

謝謝CthuluJon。 – Edvin

0

正如我不能發表評論,但(新用戶)我會後一個答案,即使雖然它更多的是對CthulhuJon給出的答案的詳細說明。

我只是想建議你計算你的硬幣和玩家之間的向量,然後沿着這個向量移動,而不是一枚硬幣看着玩家並向前移動。例如:

Vector3 moveDir = player.tranform.position - coin.transform.position; 
coin.transform.position += moveDir.normalized * speed * Time.deltaTime; 

注意:該代碼未經測試,但該想法應該清楚。 通過這樣做,你可以在你的硬幣上有一個動畫(例如圍繞它的局部上軸旋轉,典型的硬幣行爲)。另外,如果你願意,你當然可以繼續調用LookAt(player),但是我認爲,如我所描述的那樣實現它將不太容易出錯。因爲不管你對那枚硬幣做什麼,它仍然會朝着你打算的方向,即朝向玩家。

+0

感謝您的回答,我完全忘記回覆並感謝您。 這有助於後來在遊戲中再次感謝! – Edvin

+0

很高興你可以用它來做某件事。 :) – JohnnyMyhre

相關問題