WEB开发网
开发学院软件开发C语言 C#开发WPF/Silverlight动画及游戏系列教程(Game C... 阅读

C#开发WPF/Silverlight动画及游戏系列教程(Game Course):(三十一) 超酷万变的矢量魔法

 2010-09-30 20:52:29 来源:WEB开发网   
核心提示: 当我们点击B点时,激光魔法将从主角的手位置点A发出,C#开发WPF/Silverlight动画及游戏系列教程(Game Course):(三十一) 超酷万变的矢量魔法(3),接着我们通过计算获得B与A之间的角度,并对激光魔法按此角度进行旋转,无论是闭合的或是不闭合的,毫不夸张的说,最后得到触发伤

当我们点击B点时,激光魔法将从主角的手位置点A发出,接着我们通过计算获得B与A之间的角度,并对激光魔法按此角度进行旋转,最后得到触发伤害的范围即为上图中粉色点阵所包围的区域;在已知点A与点B的坐标,以及激光魔法的长度,我们可以很简单的计算出激光魔法伤害范围其不规则矩形的4个顶点坐标,从而我们可以通过System.Drawing命名空间中的相应方法来循环判断地图中的精灵是否在该不规则矩形内来对其进行伤害处理:

 /// <summary>

 /// 判断点是否在多边形内

 /// </summary>

 /// <param name="range">多边形顶点范围</param>

 /// <param name="target">要判断的点</param>

 public static bool PointInPolygon(System.Drawing.Point[] range, System.Drawing.Point target) {

       System.Drawing.Drawing2D.GraphicsPath myGraphicsPath = new System.Drawing.Drawing2D.GraphicsPath();

       System.Drawing.Region myRegion = new System.Drawing.Region();

       myGraphicsPath.Reset();

       myGraphicsPath.AddPolygon(range);

       myRegion.MakeEmpty();

       myRegion.Union(myGraphicsPath);

       return myRegion.IsVisible(target);

   }

与上一节中魔法的伤害范围以鼠标点击的点为圆心的圆类似,此方法可以拓展到任意个点的多边形,无论是闭合的或是不闭合的。毫不夸张的说,所有范围攻击类型魔法均可以采用此方法来判断,本节的精华哦! ^ ^

上一页  1 2 3 4  下一页

Tags:开发 WPF Silverlight

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接