C# 如何使游戏对象跟随另一个游戏对象,但不移动到目标对象中?

C# 如何使游戏对象跟随另一个游戏对象,但不移动到目标对象中?,c#,unity3d,C#,Unity3d,如何使游戏对象跟随另一个游戏对象,在场景中将其拖动,但不移动到目标对象中?我想要跟随目标游戏对象的游戏对象需要位于目标游戏对象的顶部 这是我目前的密码 public float speed; public GameObject targetObject; public Transform myGameObject; void Update() { myGameObject.transform.position = Vector3.MoveTowards(myGameObje

如何使游戏对象跟随另一个游戏对象,在场景中将其拖动,但不移动到目标对象中?我想要跟随目标游戏对象的游戏对象需要位于目标游戏对象的顶部

这是我目前的密码

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);
}

您可以检查
targetObject
的位置,并获得两者之间的
距离。因此,您将检查
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);
    }
}
void Update()
{
    myGameObject.transform.position = 
        Vector3.MoveTowards(myGameObject.transform.position,  
        targetObject.transform.position + new Vector3(0, up, 0), Time.deltaTime * speed);
}
其中
minimumDistance
是您不希望
myGameObject
再移动的半径


此外,您可能希望将其移动到
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);
    }
}
void Update()
{
    myGameObject.transform.position = 
        Vector3.MoveTowards(myGameObject.transform.position,  
        targetObject.transform.position + new Vector3(0, up, 0), Time.deltaTime * speed);
}
其中,
up
是您需要对象位于
targetObject
中心上方的距离

希望这有帮助