Silverlight 游戏开发小技巧:轨迹跟随效果
我们通常在游戏中有各种各样的粒子效果,其中有一种就是跟随鼠标发生的轨迹动画,在鼠标经过的地方会产生一些特效,这种方式我们在粒子当中经常使用,本篇使用一个简单的例子再次将粒子系统改善,更加精简更加高效。
如果有兴趣的同学可以读一下以前的
Silverlight C# 游戏开发:绚丽的粒子特效-粒子效果(二)
但是这今次实现方法更加简单更加偏向于美术设计师,因为这次的编程将基本上在Blend中实现。
在继续往下看之前,你需要了解MouseMove事件,以及基本的控件、故事板的知识,只有这样在下面的操作中比较容易理解,而我们目的效果是,当鼠标经过一个地方,会出现闪烁的小星星。
首先先建立工程,然后建立一个用户控件UserControl,我们起名为FlashPoint,顾名思义这是一个闪烁的点点。
可能建立方式各有不同,但是我们只是需要一个没有填充色的LayoutRoot,然后在最左上为中心画一个我们想要的图形,当然了,你也可以使用图片。
现在创建一个故事板动画,同样动画的是怎么编排可以看各自的需求设计。
在下面的例子中实现一个闪烁出现的小方块然后渐隐消失掉。
选择需要动画的目标,添加一个关键帧,然后找到这个目标控件的变换属性(Transform),设置为0,0,这样在动画播放的最开始是完全不可见。
然后拖动故事板的时间线,在1秒的位置上增加另外一个关键帧,将关键帧上的XY放缩变换设置为1,1,设置位置就是第一个关键帧的地方。
现在选择关键帧,我们可以使用Silverlight自带的缓冲(Easing)方法,制作闪烁出现的效果,我们选择Elastic Out的方法,你可以播放一下看看感觉:)
好了,最后在1.5秒的位置设置新的关键帧,将不透明度设置成0%,再次播放一下,你会看到一个突然蹦出的小方块,然后消失掉的故事板动画。
好了,截止现在基本的粒子控件制作完毕,现在打开MainPage控件将背景设置成为灰色或者渐变色,因为上面的小方块是白色的,为了更好看,并且把LayoutRoot从Grid改成Canvas,这样可以方便我们对位置的操作,
下面就是Coding时间了,在这里我将弄几个小的技巧增加程序的便利性。
在FlashPoint.cs的类构造中,添加一行代码,就是故事板的开始动画,比如说:Storyboard1.Begin();
现在打开VS或者在Blend里修改.cs文件,在MainPage.cs中加入鼠标的移动事件或者重写本身的OnMouseMove方法,我用的是重写:)
- public partial class MainPage : UserControl
- {
- public MainPage()
- {
- InitializeComponent();
- }
- protected override void OnMouseMove(MouseEventArgs e)
- {
- var pos = e.GetPosition(this);
- var point = new FlashPoint();
- LayoutRoot.Children.Add(point);
- Canvas.SetLeft(point,pos.X);
- Canvas.SetTop(point, pos.Y);
- base.OnMouseMove(e);
- }
- }
好了,现在运行一下看看,
但是现在仍有很多的问题,比如这么new出来的对象一定是非常多的,那么怎么才能正确的将控件对象移除掉呢?在我的另外一片有关于粒子文章中,使用的方式是计时器的循环运算,然后反着来遍历,将符合条件的移除掉,这是因为粒子具有很不确定的因素,所以需要遍历处理,更何况还涉及到轨迹的计算逻辑,虽然说我们比较明确动画的时间长度,可以使用计时器从集合中RemoveAt,而这次我们将使用一个更加简便的方法解决这个小瑕疵。请看下面的代码
- {
- public FlashPoint()
- {
- InitializeComponent();
- Storyboard1.Completed += new EventHandler(Storyboard1_Completed);
- Storyboard1.Begin();
- }
- void Storyboard1_Completed(object sender, EventArgs e)
- {
- Storyboard1.Completed -= Storyboard1_Completed;
- var parent = this.Parent as Panel;
- if (parent != null)
- parent.Children.Remove(this);
- }
- }
这是我们自定义的控件FlashPoint的构造和事件代码,在构造函数中注册动画完成事件,然后在完成的部分实现我们的具体逻辑,我们目的是让父一级移除我们,所以先要判定是否是一个标准的Panel的容器,Panel类请参看官方Silverlight文档。
本工程的源代码下载如下:点击直接下载
实际展示效果:
推荐Silverlight游戏开发博客:深蓝色右手
转载于:https://www.cnblogs.com/nowpaper/archive/2011/02/03/1948913.html
Silverlight 游戏开发小技巧:轨迹跟随效果相关推荐
- Silverlight 游戏开发小技巧:动感小菜单2
Silverlight 游戏开发小技巧:动感小菜单2 动感小菜单其实是想模仿Apple的菜单按钮设计制作,但是画虎不成反类犬,看起来有点别扭,昨天各位园友提了这方面的建议,感觉太硬如果加入动画可能更好 ...
- 一起谈.NET技术,Silverlight 游戏开发小技巧:动感小菜单
网页应用受限于自身的浏览器范畴,不能把华丽效果完全展示,正是因为如此,在网页上诞生了无数绚丽的设计,虽然动感程度和桌面应用无法比拟,但是在UI上却下足了功夫,用户体验可以说无以伦比,比如说小小的菜单, ...
- Silverlight 游戏开发小技巧:实现街霸4的选人界面
Silverlight 游戏开发小技巧:实现街霸4的选人界面 上一篇只是一个引子,用来说明Projection的基本操作,游戏研发都是用这些小的基本功能慢慢组合出来,其实这一篇仍然是Projectio ...
- Silverlight 游戏开发小技巧:扇形排列元素
Silverlight 游戏开发小技巧:扇形排列元素 斗地主风靡了大江南北,在春晚都做免费性推广,棋牌游戏平台几乎将其作为标配,但是牌类游戏总是一成不变的样子--横向排列,如果扇形排列应该更加符合真实 ...
- Silverlight 游戏开发小技巧:角色升级特效
这次我们将使用Projection完成一些有趣的RPG游戏中常用的特效:升级和传送点特效,我们不需要请特效师制作复杂绚丽的特效,而是只需要他们提供关键的几张图片或者设计样式,如果了您有本领教会他们使用 ...
- Silverlight 游戏开发小技巧:星球大战字幕效果
各位科幻迷可能对星球大战的字幕效果印象深刻,这个电影字幕表现手法曾经风靡大小美国影片,甚至超人影片和电视也曾经用此来做开场和结尾字幕,今天我就将这个效果在blend里面制作技巧告诉大家,下面是星球大战 ...
- Silverlight 游戏开发小技巧:昼夜交替动画
记得在WP7上玩一个游戏有段动画很有趣,是背景在进行昼夜交替,一会儿白天太阳出来白天了,一会儿月亮蹦出来夜晚了,在以前做C++程序的时候曾经实现过类似的效果,今天早上移植了一下到Silverlight ...
- 一起谈.NET技术,Silverlight 游戏开发小技巧:实现街霸4的选人界面
上一篇只是一个引子,用来说明Projection的基本操作,游戏研发都是用这些小的基本功能慢慢组合出来,其实这一篇仍然是Projection,但是我们将会做一个比较复杂的应用使用silverlight ...
- Silverlight 游戏开发小技巧:技能冷却效果1(Cooldown)
到目前为止,大家都非常推崇魔兽的技能冷却效果,就是这样的,我记得群里还对这个效果展开过探讨,其实实现起来并不难,关键是思路是否正确,这部分我得谢谢猪笨无罪,是他先想出的解决方案,他不愿意写博客,也就只 ...
最新文章
- swift基础--变量
- spring 获取配置文件的值
- VTK:Filtering之GenericClip
- vb.net 如何文件指定打印机打印文件_使用Dropbox文件请求配合Canon Inkjet实现多用户文件打印...
- 如何在 ASP.Net Core 中使用 SignalR
- 图解springmvc 执行流程
- 使用maven快速入门
- DSP matlab产生正弦数字采样信号(M2.4)
- 如何解决wampmysqld服务无法启动,错误id=1067
- WPF太阳、地球、月球运动轨迹模拟
- dnastar拼接反向互补序列_DNAstar使用说明
- .NET破解之百分百营销软件系列
- matlab中与或非、等逻辑符号
- 我国计算机发展历程简述,简述计算机的发展历程??
- GitHub下载加速利器
- 图论 —— 染色法判断二分图
- 鸿蒙系统和安卓有哪些区别?鸿蒙会取代安卓吗?
- c语言写易语言支持库6,易语言编写支持库
- 多线程的实际应用场景
- python毒酒检测_一道著名的毒酒问题
热门文章
- Hbuilder MUI里面使用java.net.URL发送网络请求,操作cookie
- qt 拖拽 修改大小
- 总结网站调用Flash的几种方法【转】
- Raspberry Pi 3B 安装NoneBot2
- YOLOv5的pytorch模型文件转换为ONNX文件
- ComponentOne Ultimate 2020中文版
- Adobe Audition CC 2020中文版
- apache 提示You don't have permission to access /test.php on this server.怎样解决
- memcache redis
- 04-java学习-选择结构