所以,我的老板在检测到玩家时会向特定方向移动。我遇到的问题是如何根据玩家在某个距离内的位置让老板移动。因此,如果老板在玩家的左边,他就会向左移动。如果他在玩家的右边,他就会向右移动。但我无法弄清楚如何让他根据距离作出反应。现在我只是做一个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");
}
}
}
答案 0 :(得分:1)
您可以使用Vector3.Distance方法根据相应的变换确定两个对象之间的距离。这样,您可以根据他与玩家的距离来修改老板的行为。幅度值越小,两个变换越接近。
例如:
int distanceYouWant;
if(Vector3.Distance(transform.position, Target.position).magnitude < distanceToDoStuff)
{
Debug.Log("Boss do stuff!");
}
以下是Unity脚本API文档的链接:https://docs.unity3d.com/ScriptReference/Vector3.Distance.html
希望这有帮助!
答案 1 :(得分:0)
我明白了。我刚刚在Update中使用了OnTriggerEnterStay2d(Collider2D other)。然后我在同一个GameObject上放置了一个触发器对撞机,并且只有当它检测到目标(播放器)时才进行调试。