transform.LookAt 正在离开游戏对象

transform.LookAt is going off the gameobject

我正在施放一些咒语,我正在通过 LookAt 设置它的方向。问题是 LookAt 将我的拼写动画设置为游戏对象。我从中获取位置的对象具有比例(3、3、3)、网格渲染器、球体碰撞器和刚体。 (其他碰撞器在子对象上)。这是我用于施法的代码:

public void castSpell(GameObject caster, Transform otherTransform, float duration)
{
    if(animationEnabled)
    {
        foreach(var a in animator)
        {
            foreach(var b in a.bools)
            {
                a.animator.SetBool(b.parameterName, b.parameterValue);
            }
            foreach(var i in a.ints)
            {
                a.animator.SetInteger(i.parameterName, i.parameterValue);
            }
            foreach(var f in a.floats)
            {
                a.animator.SetFloat(f.parameterName, f.parameterValue);
            }
        }
    }

    GameObject Temporary_Spell_Handler;
    Temporary_Spell_Handler = Instantiate(_Spell, Spell_Emitter.transform.position, Spell_Emitter.transform.rotation) as GameObject;

    ParticleSystemRenderer pr = Temporary_Spell_Handler.GetComponent<ParticleSystemRenderer>();
    float dist = Vector3.Distance(caster.transform.position, otherTransform.position);

    //Add Spell Script to the casted spell so it handes damage and everything about spells.
    Spell tempSpell = Temporary_Spell_Handler.GetComponent<Spell>();
    tempSpell.caster = caster;

    if(b_lenghtScale)
    {
        pr.lengthScale = -lenghtScale;
    }

    if(lookAtEnemy)
    {
        Temporary_Spell_Handler.transform.LookAt(otherTransform);
    }

    Destroy(Temporary_Spell_Handler, duration);
}

这是图片的样子:

我发现了问题。我的 ball 被缩放为 (3, 3, 3),所以它上升了,而对象的枢轴保持向下。那么我该如何克服这个问题呢?

我创建了空的 gameobject 并将其作为我的 ball 的父级。然后我将游戏对象位置(现在是枢轴)设置到我不会的位置(围绕球中心 y=5)然后在球上我做了相反的事情(y=-5)。

然后在我作为枢轴创建的游戏对象中添加了标签 pivotChange,然后在我的 castSpell 脚本中,我在 lookAtEnemy 部分进行了此更改:

    if(lookAtEnemy)
    {
        if(other.transform.parent != null && other.transform.parent.gameObject.tag == "pivotChange")
        {
            Temporary_Spell_Handler.transform.LookAt(other.transform.parent.gameObject.transform);
        }
        else
        {
            Temporary_Spell_Handler.transform.LookAt(other.transform);
        }
    }

它工作正常。