2013-07-03 12 views
0

目前我有一個腳本,當你打一個立方體時,它跟隨着玩家......但是當你站立時它與你重疊。我想要的是能夠將立方體的位置始終設置在玩家後面五步......我將如何做到這一點?使立方體跟隨字符落後五個步驟統一

GameObject.Find("Cube2").transform.position = Vector3(0.5, 0.5, 0.5); 

這就是我到目前爲止所嘗試的,但這只是使立方體消失?

腳本的全部:

 static var target : Transform; //the enemy's target 
    var moveSpeed = 3; //move speed 
    var rotationSpeed = 3; //speed of turning  
    var Player = GameObject.Find("Player").transform.position; 
    var Cube2 = GameObject.Find("Cube2").transform.position; 

    var myTransform : Transform; //current transform data of this enemy 

    function Awake() 
    { 
    //myTransform = transform; //cache transform data for easy access/preformance 
    } 

    function Start() 
    { 
    //target = GameObject.FindWithTag("Player1").transform; //target the player 

    }  
    //var distance = Vector3.Distance(Player.transform.position, Cube2.transform.position); 
    //Debug.Log(distance); 

    function Update() { 



    Debug.Log(Player); 

    //var distance = Vector3.Distance(Player.transform.position, Cube2.transform.position); 
    //var distance = Vector3.Distance(player_distance, cube_distance); 

// if (distance > 5) 
    // { 

    if (target == GameObject.FindWithTag("Player").transform) 
    { 
    //rotate to look at the player 
    GameObject.Find("Cube2").transform.position = Vector3(0.5, 0.5, 0.5); 
    myTransform.rotation = Quaternion.Slerp(myTransform.rotation, 
    Quaternion.LookRotation(target.position - myTransform.position), rotationSpeed*Time.deltaTime); 

    //move towards the player 
    myTransform.position += myTransform.forward * moveSpeed * Time.deltaTime; 


    } 
    //} 


    } 
+0

您應該跟蹤播放器並測量從播放器到立方體的距離。當它超過目標距離時,移動立方體 - 將立方體位置設置爲'Vector3(0.5,0.5,0.5)'將其設置爲絕對位置。我以前沒有寫過任何統一腳本,但如果您願意,我可以在解決方案中使用 – Charleh

回答

1

就像我說的,我不知道真正的統一(與它有5分鐘的戲)

本着誠實它看起來就像你漂亮很多了 - 不知道爲什麼你不能得到它的工作:

這是什麼應該工作:(假設四分之一呼叫是正確的) - 這是使用該網站的最新的Unity參考,所以它可能是不同的適合你(你在Unity上的版本是什麼?)

// Params 
var moveSpeed = 3; // Move speed 
var rotationSpeed = 3; // Speed of turning  

// Find game objects 
var Player = GameObject.Find("Player"); 
var Cube2 = GameObject.Find("Cube2"); 

function Update() 
{ 
    // Vector from cube pos to player pos (vector math: target - position = vector to target from pos) 
    var dir = Player.transform.position - Cube2.transform.position; 

    // If the distance is over 5 units 
    if(dir.magnitude > 5.0f) 
    { 
     // Rotate towards player 
     Cube2.transform.rotation = Quaternion.Slerp(Cube2.transform.rotation, Quaternion.LookRotation(dir), rotationSpeed * Time.deltaTime); 

     // Move forward at specified speed 
     Cube2.transform.position += Cube2.transform.forward * moveSpeed * Time.deltaTime; 
    } 
} 

這應該做 - 如果不讓我知道會發生什麼(或者如果你得到編譯錯誤) - 就像我說過的我並不真正瞭解Unity,但我已經看過,我很熟悉3D /遊戲編程

相關問題