当前位置: 首页 > news >正文

一起谈.NET技术,Silverlight 游戏开发小技巧:升级和传送点特效1

  这次我们将使用Projection完成一些有趣的RPG游戏中常用的特效:升级和传送点特效,我们不需要请特效师制作复杂绚丽的特效,而是只需要他们提供关键的几张图片或者设计样式,如果了您有本领教会他们使用Blend来做特效,那就太好了,好了,闲话不说,在Silverlight中制作下面的这种效果简直是手到擒来。

1

  这个拍摄的角度效果不是很合适,但是大概能够看清楚,这时一个升级的特效动画,我们今天将会完成这个效果,就像下面这样

3

  虽说用Blend做这样的Silverlight特效易如反掌,但是读者还是要了解一下Projection的基础知识,在前面两篇当中已经做了详细的例子,如果需要补课的请再看一遍。

  首先你需要一个工程,然后建立一个控件名字暂时叫Effect_Levelup,现在预备一个角色的参照,按照下面的位置放置,原因是你需要以原点定位:

2

  为了操作起来方便,建议将LayoutRoot转换成为Canvas控件,为什么要将角色这么放置,需要了解Silverlight的容器概念,控件的位置定位是按照左上角定位,这和屏幕的关系是一样,所以这样做的做法是让未来的控件直接和角色的中心点对齐(Center)。

  下面就是考验美术设计能力的时候了,我们的目标效果是下面的样子:

3

  不要被这些东西吓坏,其实做起来一点都不难,我们这里只是使用来的Projection的3D旋转,其他的只是使用简单的位移而已。

  我们先将这个圈圈画出来:

4

  这个圈只是填充了一个紫色,然后使用了柔化特效,你可以在Effect属性中点击设置

  下面我们在复制一个这个圈,但是去掉模糊特效,并且将颜色填充

56

  颜色设置请参看右边,你可能有趣的发现并不是填充色造成的这个效果,而是Stroke,建议做一些尝试吧。

  然后我们再画几个内圈:

7

  这些内圈可以使用上面的画成一个貌似闪光的圆环,在这些上面做一些妆点。

8

  装饰一些漂亮的发光球,你需要复制一个中心环,用中心渐变填充,将颜色色值的A调成透明,几个复合颜色下来就能够得到一个“小亮点”,下一步将他们组合就能够有我们所期望的效果。

9

  好了,现在将刚才画的圈圈全部组合起来成为一个Grid:

10

  下一步继续将组合的Grid再组合到一个新的Grid中,为什么这么做呢,因为要变换透视感觉,在后面的动画中的旋转做准备

12

  到这一步大家似乎能够看出有点眉目了,关于前后的渐变不透明,也是通过不透明Mask的填充得到

11

  加入几根光柱让效果更加显著:

13

  只需要用Ellipse即可,我们用不上太复杂的Path,最后为了让这个升级动画更丰富一点,加入几个套圈。

14

  这几个套圈的制作方法几乎和前面的没什么区别,这里主要是再次为大家讲解有关三维旋转的例子。

15

  为了更好的操作,现在将他们合并到一个容器当中,

  下面就是调动画的事件了,我计划将在第二个部分做详细的讲解,这里是一个完成版本的图片,请参看吧

16

  这个动画做起来并不难,难就在对这些控件之间的关系理解,最后,我们把角色的参照图给删除掉,然后生成工程,在MainPage里加入这个控件,看看效果。

17

  我们前面把特效放置在左上0,0点,并且使用Canvas作为容器,所以才会产生内容不会变形控件。

  然后我们在Mainpage里简单的写一些逻辑和代码,请注意此事我已经将中间的升级按钮命名为btn_levelup,特效动画命名为effect_Levelup,升级特效的控件中的故事板动画名字为ANI_Show

Code Snippet
  1. public partial class MainPage : UserControl
  2. {
  3.     public MainPage()
  4.     {
  5.         InitializeComponent();
  6.         effect_Levelup.ANI_Show.Begin();
  7.         btn_levelup.Click += new RoutedEventHandler(btn_levelup_Click);
  8.     }
  9.  
  10.     void btn_levelup_Click(object sender, RoutedEventArgs e)
  11.     {
  12.         effect_Levelup.ANI_Show.Begin();
  13.     }
  14. }

  这段代码只是点击的时候就会触发动画播放。

  具体效果,请参看下面的直接实例,关于传送点的特效制作,咱们明天再说:)

  源代码下载地址如下:点击直接下载

相关文章:

  • TFS创建团队项目(三)
  • 【编译打包】tengine 1.5.1 SRPM
  • Android中文API(130) —— Html
  • PHP7 学习笔记(十)会话控制
  • 压力测试的轻量级具体做法
  • 朝着微服务的方向去做一次数据库拆分
  • apache 开机自启动
  • MongoDB的监控首选:mongostat
  • 采用交换机和HUB连接局域网有什么区别?
  • 进行高效数字化转型工作的7个习惯
  • Microsoft Dynamics AX 2012 正式版虚拟机
  • Python学习笔记-实现探测Web服务质量
  • 隐藏文件无法取消隐藏属性的解决[转]
  • 缓存DNS
  • 如何对C++虚基类构造函数
  • [Vue CLI 3] 配置解析之 css.extract
  • Babel配置的不完全指南
  • ES6 学习笔记(一)let,const和解构赋值
  • JavaScript 是如何工作的:WebRTC 和对等网络的机制!
  • java架构面试锦集:开源框架+并发+数据结构+大企必备面试题
  • js正则,这点儿就够用了
  • miniui datagrid 的客户端分页解决方案 - CS结合
  • mongodb--安装和初步使用教程
  • python 学习笔记 - Queue Pipes,进程间通讯
  • Redis 中的布隆过滤器
  • Swoft 源码剖析 - 代码自动更新机制
  • 分享几个不错的工具
  • 给第三方使用接口的 URL 签名实现
  • 开源SQL-on-Hadoop系统一览
  • 每天10道Java面试题,跟我走,offer有!
  • 免费小说阅读小程序
  • 入职第二天:使用koa搭建node server是种怎样的体验
  • 延迟脚本的方式
  • MiKTeX could not find the script engine ‘perl.exe‘ which is required to execute ‘latexmk‘.
  • 阿里云ACE认证之理解CDN技术
  • ​什么是bug?bug的源头在哪里?
  • #单片机(TB6600驱动42步进电机)
  • #每日一题合集#牛客JZ23-JZ33
  • (70min)字节暑假实习二面(已挂)
  • (二十五)admin-boot项目之集成消息队列Rabbitmq
  • (欧拉)openEuler系统添加网卡文件配置流程、(欧拉)openEuler系统手动配置ipv6地址流程、(欧拉)openEuler系统网络管理说明
  • (七)理解angular中的module和injector,即依赖注入
  • (转)chrome浏览器收藏夹(书签)的导出与导入
  • (转)PlayerPrefs在Windows下存到哪里去了?
  • (转)winform之ListView
  • *1 计算机基础和操作系统基础及几大协议
  • ... fatal error LINK1120:1个无法解析的外部命令 的解决办法
  • .gitignore文件---让git自动忽略指定文件
  • .htaccess配置重写url引擎
  • .net framwork4.6操作MySQL报错Character set ‘utf8mb3‘ is not supported 解决方法
  • .NET 线程 Thread 进程 Process、线程池 pool、Invoke、begininvoke、异步回调
  • .Net接口调试与案例
  • /var/log/cvslog 太大
  • @reference注解_Dubbo配置参考手册之dubbo:reference
  • [ArcPy百科]第三节: Geometry信息中的空间参考解析