使 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 其他)创建了该功能。然后我在同一个游戏对象上放置了一个触发对撞机,只有当它检测到目标(玩家)时才会进行调试。
因此,我的老板在检测到玩家时会朝特定方向移动。我遇到的问题是如何让老板根据玩家在一定距离内的位置移动。所以如果 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 其他)创建了该功能。然后我在同一个游戏对象上放置了一个触发对撞机,只有当它检测到目标(玩家)时才会进行调试。