有没有一种方法可以使一个物体跟随另一个物体,并始终将其指向/注视相机

时间:2019-03-28 10:26:30

标签: c# object unity3d

我正在从事一个项目,需要帮助使一个物体跟随另一个物体,但同时一端应指向相机。我尝试了lookAT方法,但它无法正常工作。

4 个答案:

答案 0 :(得分:1)

LookAt非常适合3D对象。

LookAt可能无法按预期工作:

  1. 您想要一个 2D 对象查看一个点。
  2. 从视觉上考虑,对象的正面不是其x +面,不是。主要是因为:
    • 使用第三方软件粗心地制作了3D模型。
    • 该对象在另一个对象内部,并在其位置旋转。
  3. 您正在操纵对象在其他位置的旋转。

答案 1 :(得分:0)

指向另一个对象真的很简单。您只需要使用LookAt,如下所示:

GameObject target;

transform.LookAt(target.transform);

对于遵循目标,我看到了多个方法。例如,您可以使对象也与LookAt一起使用脚本,并且在移动主要对象时,还移动跟随者。 另一种更复杂的方法是设置最大分离距离,在该距离下,对象将朝目标移动。这也将使用LookAt。 如果选择了最后一个,则可以执行以下操作:

const float MaxDistance = 5.0f // The maximum distance the target can go away before following it.
float speed = 2.0f;

if(Vector3.Distance(transform.position, target.transform.position) > MaxDistance)
{
    transform.LookAt(target.transform);

    transform.position += Vector3.forward * speed * Time.deltaTime;
}

您应该将此附加到更新程序或Couroutine。

答案 2 :(得分:0)

特定对象直接进入目标对象,如下所示:

//Declare a variable that points to a specific object and a target obj variable
public GameObject obj1;
public GameObject obj2;

GameObject targetObj;

// Update is called once per frame
void Update()
{
    if (Input.GetKeyUp(KeyCode.Alpha1))
        OnChangedTarget(obj1);

    if (Input.GetKeyUp(KeyCode.Alpha2))
        OnChangedTarget(obj2);

    UpdateObjPos(Camera.main.gameObject);
}

//Keep distance from target obj
void UpdateObjPos(GameObject followObj, float width = 10f, float height = 10f)
{
    if (targetObj == null)
        return;

    followObj.transform.LookAt(targetObj.transform);

    float posX = targetObj.transform.position.x + width;
    float posY = targetObj.transform.position.y + width;
    float posZ = targetObj.transform.position.z + height;

    followObj.transform.position = new Vector3(posX, posY, posZ);
}

//Declare function to select target obj
void OnChangedTarget(GameObject obj)
{
    Debug.Log("Target Changed : " + obj.name);
    targetObj = obj;
}

答案 3 :(得分:-1)

解决方案

只需将您想要的对象与作为您的玩家的主要游戏对象一起继承到主要的游戏对象即可。我从未为此目的使用任何C#代码脚本。如果要跟随两个对象互相跟随,则只需继承游戏的主要对象即可。这样,第二游戏对象将跟随所需的主要玩家。如果您希望相机跟随它们,则相机也会被继承。至于相机要注意的要点,您需要使用统一工具并根据相机的位置调整x,y和z轴。我建议将相机放置在两个游戏对象的前面,而只是将相机的正面转向游戏对象。

图片

The example of inherited game object with camera