如何使GameObject指向Unity中的另一个GameObject?

时间:2019-06-12 20:41:41

标签: c# unity3d

我尝试了此代码,但无法正常工作。 编辑:LookAt使GameObject不可见

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

public class EnemyPoint : MonoBehaviour {

    public float offset;
    public Transform target;

    private void Update()
    {
        Vector2 difference = target.position - transform.position;
        float rotZ = Mathf.Atan(difference.y) * Mathf.Rad2Deg;
        transform.rotation = Quaternion.Euler(0f, 0f, rotZ + offset);
    }
}

1 个答案:

答案 0 :(得分:3)

您可以使用LookAt

  

旋转变换,使forward向量指向target的当前位置。

transform.LookAt(target);

将其简单地放置在对象A上,并在target字段中拖放其他任何对象B→对象A的forward向量将始终指向objectB


另一种覆盖方式也将世界位置设为Vector3,因此您也可以使用

transform.LookAt(target.position);

基本上会做同样的事情。


如果您需要另一个指向目标的轴,则仍然可以使用LookAt,然后使用Rotate。例如。为了不使对象的forward而是up向量指向目标,您可以使用

transform.LookAt(target);
transform.Rotate(Vector3.right * 90);