Silverlight 游戏开发小技巧:实现街霸4的选人界面

本文介绍如何使用Silverlight的Projection特性复现街霸4游戏中的角色选择界面,通过自定义FaceCard控件并结合3D变换,实现角色头像的透视排列效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

上一篇只是一个引子,用来说明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的效果吧,剩下的就需要各位再更加深层次的发挥了,想了解更细致的内容,可以下载工程直接查看。

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

获取 Microsoft Silverlight

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

内容概要:该论文聚焦于T2WI核磁共振图像超分辨率问题,提出了一种利用T1WI模态作为辅助信息的跨模态解决方案。其主要贡献包括:提出基于高频信息约束的网络框架,通过主干特征提取分支和高频结构先验建模分支结合Transformer模块和注意力机制有效重建高频细节;设计渐进式特征匹配融合框架,采用多阶段相似特征匹配算法提高匹配鲁棒性;引入模型量化技术降低推理资源需求。实验结果表明,该方法不仅提高了超分辨率性能,还保持了图像质量。 适合人群:从事医学图像处理、计算机视觉领域的研究人员和工程师,尤其是对核磁共振图像超分辨率感兴趣的学者和技术开发者。 使用场景及目标:①适用于需要提升T2WI核磁共振图像分辨率的应用场景;②目标是通过跨模态信息融合提高图像质量,解决传统单模态方法难以克服的高频细节丢失问题;③为临床诊断提供更高质量的影像资料,帮助医生更准确地识别病灶。 其他说明:论文不仅提供了详细的网络架构设计与实现代码,还深入探讨了跨模态噪声的本质、高频信息约束的实现方式以及渐进式特征匹配的具体过程。此外,作者还对模型进行了量化处理,使得该方法可以在资源受限环境下高效运行。阅读时应重点关注论文中提到的技术创新点及其背后的原理,理解如何通过跨模态信息融合提升图像重建效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值