C#开发WPF/Silverlight动画及游戏系列教程(Game Course):(三十一) 超酷万变的矢量魔法
2010-09-30 20:52:29 来源:WEB开发网当我们点击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);
}
与上一节中魔法的伤害范围以鼠标点击的点为圆心的圆类似,此方法可以拓展到任意个点的多边形,无论是闭合的或是不闭合的。毫不夸张的说,所有范围攻击类型魔法均可以采用此方法来判断,本节的精华哦! ^ ^
Tags:开发 WPF Silverlight
编辑录入:爽爽 [复制链接] [打 印]- ››开发Android 日历教程
- ››开发学院总结 Win 8实用技巧大全
- ››开发学院原创教程:把win8的IE10放桌面上方法(非...
- ››silverlight全屏显示图片
- ››Silverlight MVVM 模式(一) 切近实战
- ››开发者眼中的Windows Phone和Android
- ››开发学院教你用SQL 语句最快速清空MySQL 数据表的...
- ››WPF学习笔记12. Binding (5)
- ››WPF学习笔记11. Binding (4)
- ››WPF学习笔记10. Binding (3)
- ››WPF学习笔记9. Binding (2)
- ››WPF学习笔记8. Binding
更多精彩
赞助商链接