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);
}
}
它工作正常。
我正在施放一些咒语,我正在通过 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);
}
}
它工作正常。