本文整理汇总了C#中Spell.LineIntersectLinearSpellEx方法的典型用法代码示例。如果您正苦于以下问题:C# Spell.LineIntersectLinearSpellEx方法的具体用法?C# Spell.LineIntersectLinearSpellEx怎么用?C# Spell.LineIntersectLinearSpellEx使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Spell
的用法示例。
在下文中一共展示了Spell.LineIntersectLinearSpellEx方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: GetIntersectDistance
public static float GetIntersectDistance(Spell spell, Vector2 start, Vector2 end)
{
if (spell == null)
return float.MaxValue;
Vector3 start3D = new Vector3(start.X, start.Y, 0);
Vector2 walkDir = (end - start);
Vector3 walkDir3D = new Vector3(walkDir.X, walkDir.Y, 0);
Ray heroPath = new Ray(start3D, walkDir3D);
if (spell.spellType == SpellType.Line)
{
Vector2 intersection;
bool hasIntersection = spell.LineIntersectLinearSpellEx(start, end, out intersection);
if (hasIntersection)
{
return start.Distance(intersection);
}
}
else if (spell.spellType == SpellType.Circular)
{
if (end.InSkillShot(spell, ObjectCache.myHeroCache.boundingRadius) == false)
{
Vector2 intersection1, intersection2;
MathUtils.FindLineCircleIntersections(spell.endPos, spell.radius, start, end, out intersection1, out intersection2);
if (intersection1.X != float.NaN && MathUtils.isPointOnLineSegment(intersection1, start, end))
{
return start.Distance(intersection1);
}
else if (intersection2.X != float.NaN && MathUtils.isPointOnLineSegment(intersection2, start, end))
{
return start.Distance(intersection2);
}
}
}
return float.MaxValue;
}