如何让游戏对象跟随另一个游戏对象而不是移动到目标对象?

时间:2017-11-18 16:27:44

标签: c# unity3d

如何让游戏对象跟随另一个游戏对象,它将在场景中被拖动但不会移动到目标对象中?我想要跟踪目标游戏对象的游戏对象需要位于目标游戏对象之上。

这是我目前的代码。

public float speed;
public GameObject targetObject;
public Transform myGameObject;


void Update()
{
    myGameObject.transform.position = 
    Vector3.MoveTowards(myGameObject.transform.position,  
    targetObject.transform.position, Time.deltaTime * speed);
}

1 个答案:

答案 0 :(得分:1)

您可以检查targetObject的位置,并在两者之间获得distance。因此,您可以检查myGameObject是否在targetObject的某个半径范围内,如果它没有移到targetObject的位置。

您的代码可能如下所示:

void Update()
{
    if(Vector3.Distance(myGameObject.transform.position, targetObject.transform.position) >= minimumDistance) {
        myGameObject.transform.position = 
            Vector3.MoveTowards(myGameObject.transform.position,  
            targetObject.transform.position, Time.deltaTime * speed);
    }
}

minimumDistance是您不希望myGameObject再次移动的半径。

此外,您可能希望将其移至targetObject上方的位置而不是中间位置。这样,你会做这样的事情:

void Update()
{
    myGameObject.transform.position = 
        Vector3.MoveTowards(myGameObject.transform.position,  
        targetObject.transform.position + new Vector3(0, up, 0), Time.deltaTime * speed);
}

up位于targetObject中心以外的位置,您需要该对象。

希望这有帮助!