一起谈.NET技术,Silverlight 游戏开发小技巧:实现街霸4的选人界面

简介:   上一篇只是一个引子,用来说明Projection的基本操作,游戏研发都是用这些小的基本功能慢慢组合出来,其实这一篇仍然是Projection,但是我们将会做一个比较复杂的应用使用silverlight的Projection,玩过街霸4,可能对它的选人界面印象深刻,但是做起来却不容易,因为要请美术...

  上一篇只是一个引子,用来说明Projection的基本操作,游戏研发都是用这些小的基本功能慢慢组合出来,其实这一篇仍然是Projection,但是我们将会做一个比较复杂的应用使用silverlight的Projection,玩过街霸4,可能对它的选人界面印象深刻,但是做起来却不容易,因为要请美术设计师将界面设计出来,这样就麻烦了很多,请看街霸4的选人界面:

2  请注意小头像,都是按照透视排列组成,这样的形式在一些其他的游戏中经常见到,你可以从容的发给美术,然后请他们做好,再套入,可是这样图片的量就大了很多,一般来说这种方法比较暴力,可是有更好的方法实现,只需要一个小的控件就行了,没错就是使用Projection,我们可以利用它来实现一段代码的生成。

  首先你有一个工程,先建立小的头像,小的头像可以是依据你的布局大小来确定,我这里的布局是600x400的主界面,小头像图标是64x64,所以在参照我的练习中,各位可以以此作为标准。

3  上面是一个样图,我们会在后台写一些暴露的属性来控制操作,以及一些鼠标控制的代码,这些代码并不复杂,请注意ImageSouce的BitmapImage所构造的目标用法,你需要从3D_Space改成为你的工程名字。

Code Snippet
  1. public partial class FaceCard : UserControl
  2. {
  3.     public FaceCard()
  4.     {
  5.         InitializeComponent();
  6.         Sel_Rectangle.Visibility = System.Windows.Visibility.Collapsed;
  7.     }
  8.     protected override void OnMouseEnter(MouseEventArgs e)
  9.     {
  10.         Sel_Rectangle.Visibility = System.Windows.Visibility.Visible;
  11.         base.OnMouseEnter(e);
  12.     }
  13.     protected override void OnMouseLeave(MouseEventArgs e)
  14.     {
  15.         Sel_Rectangle.Visibility = System.Windows.Visibility.Collapsed;
  16.         base.OnMouseLeave(e);
  17.     }
  18.     private int _faceindex = 1;
  19.     public int FaceIndex
  20.     {
  21.         get { return _faceindex; }
  22.         set
  23.         {
  24.             _faceindex = value;
  25.             var uri = new Uri("/3D_Space;component/Res/image" + value + "png", UriKind.Relative);
  26.             FaceImage.Source = new System.Windows.Media.Imaging.BitmapImage(uri);
  27.         }
  28.     }
  29. }

  现在建立一个600x400的角色选择界面(SelectInterface),简单的设计一下LayoutRoot,并在中下的位置上添加一个64x64的Canvas(Grid也可以),在里面添加20个FaceCard控件(就是刚才建立的小头像控件),在Asset里的Project标签中能够找到自定义的控件,如果它不存在就先编译一下工程(Ctrl+Alt+B)。

4  好了,为容器命名,然后需要一些代码了,让代码为我们把目标做好:

Code Snippet
  1. public partial class SelectInterface : UserControl
  2. {
  3.     public SelectInterface()
  4.     {
  5.         InitializeComponent();
  6.         for (int i = 0; i < 4; i++)
  7.         {
  8.             for (int j = 0; j < 5; j++)
  9.             {
  10.                 var index = i * 5 + j;
  11.                 var t = FaceCardGroup.Children[index] as FaceCard;
  12.                 if (t != null)
  13.                 {
  14.                     t.FaceIndex = index + 1;
  15.                     t.Projection = new PlaneProjection()
  16.                     {
  17.                         RotationX = 30,
  18.                         GlobalOffsetX = j * 70 - 140,
  19.                         GlobalOffsetY = i * 60 - 300,
  20.                     };
  21.                 }
  22.             }
  23.         }
  24.     }
  25. }

  上面的代码的效果是遍历所有FaceCardGroup的元素,将符合条件的添加3D变换处理,这里有一些扩展的做法,比如将中间的两个用其他的控件代替就可以达到空白的效果,以及增加一些鼠标点击事件就能取得目标索引值之类的功能。

  那么运行起来看看效果如呢:

5  看起来怎么样,很像街霸4的效果吧,剩下的就需要各位再更加深层次的发挥了,想了解更细致的内容,可以下载工程直接查看。

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

目录
相关文章
|
7月前
|
监控 Cloud Native 测试技术
.NET技术深度解析:现代企业级开发指南
每日激励:“不要一直责怪过去的自己,他曾经站在雾里也很迷茫”。我是蒋星熠Jaxonic,一名在代码宇宙中探索的极客旅人。从.NET Framework到.NET 8,我深耕跨平台、高性能、云原生开发,践行领域驱动设计与微服务架构,用代码书写技术诗篇。分享架构演进、性能优化与AI融合前沿,助力开发者在二进制星河中逐光前行。关注我,共探技术无限可能!
.NET技术深度解析:现代企业级开发指南
|
SQL 小程序 API
如何运用C#.NET技术快速开发一套掌上医院系统?
本方案基于C#.NET技术快速构建掌上医院系统,结合模块化开发理念与医院信息化需求。核心功能涵盖用户端的预约挂号、在线问诊、报告查询等,以及管理端的排班管理和数据统计。采用.NET Core Web API与uni-app实现前后端分离,支持跨平台小程序开发。数据库选用SQL Server 2012,并通过读写分离与索引优化提升性能。部署方案包括Windows Server与负载均衡设计,确保高可用性。同时针对API差异、数据库老化及高并发等问题制定应对措施,保障系统稳定运行。推荐使用Postman、Redgate等工具辅助开发,提升效率与质量。
578 0
|
开发框架 算法 .NET
C#/.NET/.NET Core技术前沿周刊 | 第 15 期(2024年11.25-11.30)
C#/.NET/.NET Core技术前沿周刊 | 第 15 期(2024年11.25-11.30)
292 6
|
开发框架 Cloud Native .NET
C#/.NET/.NET Core技术前沿周刊 | 第 16 期(2024年12.01-12.08)
C#/.NET/.NET Core技术前沿周刊 | 第 16 期(2024年12.01-12.08)
339 6
|
机器学习/深度学习 人工智能 Cloud Native
在数字化时代,.NET 技术凭借其跨平台兼容性、丰富的类库和工具集以及卓越的性能与效率,成为软件开发的重要平台
在数字化时代,.NET 技术凭借其跨平台兼容性、丰富的类库和工具集以及卓越的性能与效率,成为软件开发的重要平台。本文深入解析 .NET 的核心优势,探讨其在企业级应用、Web 开发及移动应用等领域的应用案例,并展望未来在人工智能、云原生等方面的发展趋势。
443 3
|
监控 前端开发 API
一款基于 .NET MVC 框架开发、功能全面的MES系统
一款基于 .NET MVC 框架开发、功能全面的MES系统
700 5
|
开发框架 前端开发 .NET
ASP.NET CORE 3.1 MVC“指定的网络名不再可用\企图在不存在的网络连接上进行操作”的问题解决过程
ASP.NET CORE 3.1 MVC“指定的网络名不再可用\企图在不存在的网络连接上进行操作”的问题解决过程
834 0
|
开发框架 前端开发 JavaScript
ASP.NET MVC 教程
ASP.NET 是一个使用 HTML、CSS、JavaScript 和服务器脚本创建网页和网站的开发框架。
432 7
|
存储 开发框架 前端开发
ASP.NET MVC 迅速集成 SignalR
ASP.NET MVC 迅速集成 SignalR
367 0
|
开发框架 前端开发 .NET
ASP.NET MVC WebApi 接口返回 JOSN 日期格式化 date format
ASP.NET MVC WebApi 接口返回 JOSN 日期格式化 date format
358 0

热门文章

最新文章