C#开发WPF/Silverlight动画及游戏系列教程(Game Course):(三十) 大法师 – 华丽经典之轮回
2010-09-30 20:46:21 来源:WEB开发网从红白机到PS3,从286到奔腾N核;曾记否孩时的回忆?与玩伴并肩闯关。往日的经典已化为过眼烟云,那些神话般的游戏角色是否仍徘徊于你的梦里?UO开创了网络游戏新时代,虚拟世界敞开了魔幻华丽的心扉;于是我坚定了信念,用自己的双手去开启这道华丽的轮回!
在传统的MMORPG游戏中,魔法种类大致分为:单攻魔法、群攻魔法、辅助魔法、地图魔法等,其中单攻魔法又可以细分为带过程的(如飞箭),不带过程的(如闪电),多段单体等等;群攻魔法就更多了,以圆形区域群攻为主流,还有多边形区域群攻,穿梭群攻,多段群攻等等;辅助魔法主要就是BUFF加成与减持,如加血、加防、加攻、加防护罩等等;地图魔法则以陷阱为主要代表,还有其他的例如瞬移等等。
本节我将为大家讲解最华丽且又是最易于实现的圆形范围群攻魔法的实现。
魔法控件是实现魔法的前提,因此我们首先建立一个名为QXMagic的魔法控件,并为之赋予一些属性(具体内容看源码)。这些属性都有注释这里就不详讲了;其中比较关键的是每个魔法同样拥有一个生命线程,用于播放及触发攻击效果,因为魔法从产生到结束是由一系列帧组成的:
有了魔法控件,接着就是考虑该如何实现功能。在通常的MMORPG中,我们主动施放魔法有两个途径:鼠标右键或键盘快捷键,过程其实大同小异,那么本节就以鼠标右键施放魔法为例进行讲解。
首先我们需要为游戏窗体注册鼠标右键事件,然后在里面这样写:
private void Window_MouseRightButtonDown(object sender, MouseButtonEventArgs e) {
if (Leader.Action == Actions.Death) { return; }
……
Leader.MagicTarget = p;
//假如点击的地方太远则先跑到施法范围再施法,否则直接施法
if (Super.InCircle(Leader.X, Leader.Y, p.X, p.Y, Leader.MagicRange)) {
ChangeDirection(Leader, p);
DoMagic(Leader);
} else {
Leader.IsMagicMove = true;
double n = Math.Sqrt(Math.Pow(p.Y - Leader.Y, 2) + Math.Pow(p.X - Leader.X, 2));
double x = p.X - (p.X - Leader.X) * Leader.MagicRange / n;
double y = p.Y - (p.Y - Leader.Y) * Leader.MagicRange / n;
MoveTo(Leader, new Point(x, y));
}
}
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
更多精彩
赞助商链接