Unity3d 统一注视二维等价物

Unity3d 统一注视二维等价物,unity3d,2d,unityscript,Unity3d,2d,Unityscript,我正在创建一个坦克战斗2D游戏,自上而下在Unity 3D中的2D透视图中激活。 我的轴是X和Y(默认值),我正在尝试创建一个寻的导弹 我的导弹代码是代码是: var enemyName :String; // which enemy does this shot seeks private var target :GameObject; var speed :float = 100; private var timeToTarget:float; function

我正在创建一个坦克战斗2D游戏,自上而下在Unity 3D中的2D透视图中激活。 我的轴是X和Y(默认值),我正在尝试创建一个寻的导弹

我的导弹代码是代码是:

var enemyName   :String;    // which enemy does this shot seeks
private var target  :GameObject;
var speed       :float  = 100;
private var timeToTarget:float; 

function Start () {

    timeToTarget = Mathf.Abs(speed);

    if (timeToTarget<=0)
    {
        timeToTarget=150;
    }
    target = GameObject.Find(enemyName);
    Destroy(this.gameObject, timeToDie);
    myTransform = transform;
}

function Update () 
{

    rorate2target();
    follow();
}

function follow() //works fine
{
    transform.Translate(0,0,speed*Time.deltaTime);

}
我尝试了两种选择,在//中的1和没有的1。 我试着看了看,让它沿着Z轴旋转 以及类似的东西

Quaternion rotation = Quaternion.LookRotation
            (Target.transform.position - transform.position, transform.TransformDirection(Vector3.up));
        transform.rotation = new Quaternion(0, 0, rotation.z, rotation.w);

没人帮忙。我想让导弹做的是“看”它的飞行方向。

我在游戏中进行这种转换,使2d对象指向另一个对象。这将通过x轴以0度(向右)对齐。hitinfo只是一个RayCastHit2D,可以替换为目标在代码中的位置。(“Teh”是故意的:)


在本手册中,有几种不同的方法可供解释

我认为最简单的版本是:

transform.LookAt(Vector3.forward,Vector3.Cross(Vector3.forward,direction));
或者您希望在本例中使用它:

transform.LookAt(Vector3.forward,Vector3.Cross(Vector3.forward,target.position - myTransform.position));

有什么原因不能使用吗?很明显,你已经找到了你想让导弹看到的位置。
transform.LookAt(Vector3.forward,Vector3.Cross(Vector3.forward,direction));
transform.LookAt(Vector3.forward,Vector3.Cross(Vector3.forward,target.position - myTransform.position));