使 2D 游戏对象对另一个 2D 游戏对象的位置做出反应

making a 2D GameObject react to the position of another 2D GameObject

因此,我的老板在检测到玩家时会朝特定方向移动。我遇到的问题是如何让老板根据玩家在一定距离内的位置移动。所以如果 Boss 在玩家的左边,他就会向左移动。如果他在玩家的右边,他就会向右移动。但我不知道如何让他根据距离做出反应。现在我只是在做一个 Debug.Log 来节省几秒钟。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class phantom : MonoBehaviour {

private Rigidbody2D rb;
private Animator anim;
public Transform Target;


void Start () 
{
    rb = GetComponent<Rigidbody2D> ();
    anim = GetComponent<Animator> ();
}


void Update ()
{

    if (transform.position.x > Target.position.x ) {
        Debug.Log ("left");
    }
    if (transform.position.x < Target.position.x ) {
        Debug.Log ("right");
    }
}

}

您可以使用 Vector3.Distance 方法根据它们各自的变换来确定两个对象之间的距离。这样,您就可以根据老板与玩家的距离来修改他的行为。幅度值越小,你的两个变换越接近。

例如:

int distanceYouWant;

if(Vector3.Distance(transform.position, Target.position).magnitude < distanceToDoStuff)
{
     Debug.Log("Boss do stuff!");
}

这是 Unity 脚本 API 文档的 link:https://docs.unity3d.com/ScriptReference/Vector3.Distance.html

希望对您有所帮助!

我想通了。我只是不在更新中而是使用 OnTriggerEnterStay2d(Collider2D 其他)创建了该功能。然后我在同一个游戏对象上放置了一个触发对撞机,只有当它检测到目标(玩家)时才会进行调试。