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
中心上方的距离
希望这有帮助