当前位置: 首页 > 编程日记 > 正文

Silverlight 游戏开发小技巧:角色升级特效

这次我们将使用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. void btn_levelup_Click(object sender, RoutedEventArgs e)
  10. {
  11. effect_Levelup.ANI_Show.Begin();
  12. }
  13. }

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

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

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

获取 Microsoft Silverlight

推荐Silverlight游戏开发博客:深蓝色右手

相关文章:

使用jQuery开发messager消息框插件

1、插件使用 首先引入jquery库&#xff0c;然后引入dialog.js、dialog.css、messager.js、messager.css&#xff0c;如下&#xff1a; 1 <script type"text/javascript" src"js/jquery/jquery-1.7.2.min.js"></script> 2 3 <script type&q…

Data - 深入浅出学统计 - 上篇

本文是已读书籍的内容摘要&#xff0c;少部分有轻微改动&#xff0c;但不影响原文表达。 &#xff1a;以漫画形式来讲解最基本的统计概念和方法。 ISBN: 9787121299636https://book.douban.com/subject/26906845/引言&#xff1a;统计无处不在 统计值无处不在。我们伴随着统计值…

android 布局之RelativeLayout(相对布局)

android 布局分为LinearLayout TableLayout RelativeLayout FreamLayout AbsoluteLayout. 常用的有LinearLayout,TableLayout,RelativeLayout &#xff0c;这几个布局不会应该手机屏幕大小而有变化。通常我们使用HVGA 大小的屏幕(320*480). 接下来我们学习RelativeLayout. 原文…

【js】实现分页查询操作的步骤

1、将CSS的代码复制到goodList.jsp 2、引入common 代码实现&#xff1a; <% include file"../common/common.jsp"%> 3、引入jstl 代码实现&#xff1a; <% taglib prefix"c" uri"http://java.sun.com/jsp/jstl/core"%> 注意&…

Orchard:如何生成Hello World模块

在Orchard架构介绍中对Orchard的一些架构内容进行了介绍&#xff0c;下图是Orchard自带的一些模块&#xff0c; 本篇讲解一下如何扩展Orchard来生成我们的第一个模块。 介绍 Orchard构建在ASP.NET MVC之上&#xff0c;MVC是一个应用模式&#xff0c;我在信息系统开发平台OpenE…

通过域名访问自己部署到服务器上的项目

通过域名访问自己部署到服务器上的项目 如何不输入项目名端口号直接访问java web项目 1、省略输入端口号的步骤 在Linux的下面部署了tomcat&#xff0c;为了安全我们使用非root用户进行启动&#xff0c;但是在域名绑定时无法直接访问80端口号。众所周知&#xff0c;在unix下&am…

【java】异常的分类

注&#xff1a; 1、exception是人工可以修复的&#xff0c;但error的话很少出现&#xff0c;如果出现就无能为力了。 2、我们将所有派生于EXCEPTION和ERROR的类的所有异常称为&#xff08;unchecked&#xff09;非受查异常&#xff0c;其余为受查&#xff08;checked&#xf…

【免费软件测试视频-0013】——Loadrunner9.0 SLA Analysis

LR9.0---SLA Analysis http://www.3atesting.com/mv/bencandy.php?fid15&id16转载于:https://www.cnblogs.com/umain/archive/2008/09/28/1301310.html

训练听力的相关方法

一、听写熟悉一些固定发音 二、多阅读相关的文章&#xff0c;文章相关内容越熟悉&#xff0c;听力效果越好【重要】 三、首先没有听懂的一些音不会影响后面的理解 四、解决口音问题的唯一方法是&#xff0c;多阅读、记忆相关内容【签证及联系教授也要注意】转载于:https://www.…

PHP生成PDF文档的FPDF类

以前在PHP4的早期版本中用PDFlib生成PDF文档比较容易&#xff0c;现在升级到PHP5了&#xff0c;发现更麻烦了&#xff0c;装的PHP 5.2.4默认没有PHPlib&#xff0c;从php.net上找了一个&#xff0c;装上竟一直报错&#xff0c;开始以为是版本兼容问题&#xff0c;后来在租来的服…

Codeforces Round #466 (Div. 2)

http://codeforces.com/contest/940 A水题 //#pragma comment(linker, "/stack:200000000") //#pragma GCC optimize("Ofast,no-stack-protector") //#pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,tunenative") //#pragma …

WinCE中串口驱动及接口函数介绍(转载)

作者&#xff1a;ARM-WinCE 在WinCE中&#xff0c;串口驱动实际上就是一个流设备驱动,具体架构如图&#xff1a; 串口驱动本身分为MDD层和PDD层。MDD层对上层的Device Manager提供了标准的流设备驱动接口(COM_xxx)&#xff0c;PDD层实现了HWOBJ结构及结构中若干针对于串口硬件操…

【jsp】写jsp文件的准备

1、引入jstl 代码实现&#xff1a; <% taglib prefix"c" uri"http://java.sun.com/jsp/jstl/core" %> 2、编写common文件 代码实现&#xff1a; <c:set var"ctxpath" value"${pageContext.request.contextPath }">&l…

studio2008 无法显示该网页

莫名奇妙的studio调试的时候页面显示无法显示该网页&#xff0c;差网页后得知原来是C:\WINDOWS\system32\drivers\etc下的Hosts文件被修改了&#xff0c; 确认里面有127.0.0.1 localhost 行转载于:https://www.cnblogs.com/sunshinecc/archive/2011/11/11/2245596.html

侠客X官方网站成立,第一个内测版本即将放出,敬请期待.

这是一个难忘的日子&#xff0c;西方的情人节&#xff0c;本站的成立代表侠客X&#xff0c;即将与大家见面了。 我们的要做的是&#xff0c;传承侠客站群经典模式&#xff0c;打造SEO王者力作&#xff0c;侠客X即将公开测试&#xff0c;敬请期待。 http://xpk.in Qin 转载于:ht…

HSSFWorkbook 与 XSSFWorkbook

项目中一直使用NPOI与memcached,一直相安无事,但是最近升级了npoi到最新版本,发生了ICSharpCode.SharpZipLib的版本冲突问题. 因为此前一直使用的是NPOI的1.x的版本,用的SharpZipLib是0.84版本,而升级到最新版本以后,SharpZipLib的版本变成了0.86版本. 但是memcached的却没有最…

P1066 2^k进制数 NOIP 2006 提高组 第四题

洛谷蓝题&#xff08;点击跳转&#xff09; 提高组 第四题 题目描述 设r是个2^k 进制数&#xff0c;并满足以下条件&#xff1a; &#xff08;1&#xff09;r至少是个2位的2^k 进制数。 &#xff08;2&#xff09;作为2^k 进制数&#xff0c;除最后一位外&#xff0c;r的每一位…

线段树专辑——pku 2886 Who Gets the Most Candies?

http://poj.org/problem?id2886 恩&#xff0c;分糖果&#xff0c;快乐的童年啊&#xff01; 题目意思大概n个小孩围成一个圈&#xff0c;每个小孩手里有张卡片&#xff0c;记录着一个数字。开始从第k个孩子&#xff0c;该孩子离开圈子&#xff0c;然后告诉别人他手里的数字&a…

【jsp】通过get和post传值的区别

GET与POST的区别&#xff1a; GET方式提交表单&#xff0c;请求的参数在请求的头部&#xff0c;可以通过request.getQueryString()获取到请求参数及其参数值&#xff1b;POST方式提交表单&#xff0c;请求的参数在请求体中&#xff0c;所以request.getQueryString()方法无法获…

php获取输入流

uc中的用到的代码(在api/uc.php)代码&#xff1a; $post xml_unserialize(file_get_contents(php://input));&#xfeff; php手册&#xff08;http://cn.php.net/manual/zh/wrappers.php.php&#xff09;说明: php://input allows you to read raw data from the request bod…

微信小程序实例源码大全demo下载

怎么本地测试微信小程序实例源码 1.下载源码2.打开微信开发者工具3.添加项目->选择本项目目录->编译执行微信小程序实例源码大全 微信小程序游戏类demo&#xff1a;识色&#xff1b;从相似颜色中挑选不同的一个 源码链接&#xff1a;http://www.wxapp-union.com/forum.ph…

RabbitMQ 学习

参考&#xff1a;https://www.rabbitmq.com/getstarted.html 先在本地安装RabbitMQ 组件(需要安装Erlang组件&#xff09;&#xff0c;启动服务。 激活 RabbitMQs Management Plugin 使用RabbitMQ 管理插件&#xff0c;可以更好的可视化方式查看Rabbit MQ 服务器实例的状态。 打…

怎样提高WebService的性能

服务器端WebService程序using System.Runtime.Serialization.Formatters.Binary;using System.IO;using System.IO.Compression;using System.Data.SqlClient;………public class Service1 : System.Web.Services.WebService{[WebMethod(Description "直接返回 DataSet 对…

【jsp】jsp的内置对象(部分)

一、response 1、setStatus:设置响应状态码。 代码实现&#xff1a; response.setStatus(550); 更改的位置如图&#xff1a; 2、sendRedirect:服务器端跳转 代码实现&#xff1a; response.sendRedirect("Success.jsp"); 3、setContentRType:设置返回内容类型…

linux tar的使用方法

tar [-cxtzjvfpPN] 文件与目录 ....参数&#xff1a;-c &#xff1a;建立一个压缩文件的参数指令(create 的意思)&#xff1b;-x &#xff1a;解开一个压缩文件的参数指令&#xff01;-t &#xff1a;查看 tarfile 里面的文件&#xff01;特别注意&#xff0c;在参数的下达中&a…

关闭webstorm自动保存,并显示文件未保存标识

1.取消自动保存 2.显示编辑状态设置&#xff1a; 转载于:https://www.cnblogs.com/webSong/p/8807732.html

【转】SQL函数:字符串中提取数字,英文,中文,过滤重复字符

SQL函数&#xff1a;字符串中提取数字&#xff0c;英文&#xff0c;中文&#xff0c;过滤重复字符 --提取数字IF OBJECT_ID(DBO.GET_NUMBER) IS NOT NULLDROP FUNCTION DBO.GET_NUMBERGOCREATE FUNCTION DBO.GET_NUMBER(S VARCHAR(100))RETURNS VARCHAR(100)ASBEGINWHILE PATI…

【java】实现数据在页面之间传输

传数据页面&#xff1a; 方法&#xff1a;使用a标签传输数据 格式&#xff1a; <a name"C03S417" href"getRoomFinal.jsp?roomNumberC03S415">入住 </a> 接收数据页面&#xff1a; 方法&#xff1a; &#xff08;1&#xff09;使用java代…

Android画图学习总结(四)——Animation(上)

随着对Drewable的深入了解&#xff0c;发现了Drawable更加强大的功能&#xff1a;显示Animation。Android SDK介绍了2种Animation&#xff1a; Tween Animation&#xff1a;通过对场景里的对象不断做图像变换(平移、缩放、旋转)产生动画效果 Frame Animation&#xff1a;顺序播…

ES6 Rest参数

Rest参数接收函数的多余参数&#xff0c;组成一个数组&#xff0c;放在形参的最后&#xff0c;形式如下&#xff1a; function func(a, b, ...theArgs) { // ... }rest参数只包括那些没有给出名称的参数&#xff0c;注意&#xff0c;rest参数之后不能再有其它参数&#xff08;即…