|
我們通常在游戲中有各種各樣的粒子效果,其中有一種就是跟隨鼠標(biāo)發(fā)生的軌跡動(dòng)畫,在鼠標(biāo)經(jīng)過的地方會(huì)產(chǎn)生一些特效,這種方式我們?cè)诹W赢?dāng)中經(jīng)常使用,本篇使用一個(gè)簡(jiǎn)單的例子再次將粒子系統(tǒng)改善,更加精簡(jiǎn)更加高效。
如果有興趣的同學(xué)可以讀一下以前的:Silverlight C# 游戲開發(fā):絢麗的粒子特效-粒子效果(二)
但是這今次實(shí)現(xiàn)方法更加簡(jiǎn)單更加偏向于美術(shù)設(shè)計(jì)師,因?yàn)檫@次的編程將基本上在Blend中實(shí)現(xiàn)。
在繼續(xù)往下看之前,你需要了解MouseMove事件,以及基本的控件、故事板的知識(shí),只有這樣在下面的操作中比較容易理解,而我們目的效果是,當(dāng)鼠標(biāo)經(jīng)過一個(gè)地方,會(huì)出現(xiàn)閃爍的小星星。
首先先建立工程,然后建立一個(gè)用戶控件UserControl,我們起名為FlashPoint,顧名思義這是一個(gè)閃爍的點(diǎn)點(diǎn)。
可能建立方式各有不同,但是我們只是需要一個(gè)沒有填充色的LayoutRoot,然后在最左上為中心畫一個(gè)我們想要的圖形,當(dāng)然了,你也可以使用圖片。
現(xiàn)在創(chuàng)建一個(gè)故事板動(dòng)畫,同樣動(dòng)畫的是怎么編排可以看各自的需求設(shè)計(jì)。
在下面的例子中實(shí)現(xiàn)一個(gè)閃爍出現(xiàn)的小方塊然后漸隱消失掉。
選擇需要?jiǎng)赢嫷哪繕?biāo),添加一個(gè)關(guān)鍵幀,然后找到這個(gè)目標(biāo)控件的變換屬性(Transform),設(shè)置為0,0,這樣在動(dòng)畫播放的最開始是完全不可見。
然后拖動(dòng)故事板的時(shí)間線,在1秒的位置上增加另外一個(gè)關(guān)鍵幀,將關(guān)鍵幀上的XY放縮變換設(shè)置為1,1,設(shè)置位置就是第一個(gè)關(guān)鍵幀的地方。
現(xiàn)在選擇關(guān)鍵幀,我們可以使用Silverlight自帶的緩沖(Easing)方法,制作閃爍出現(xiàn)的效果,我們選擇Elastic Out的方法,你可以播放一下看看感覺:)
好了,最后在1.5秒的位置設(shè)置新的關(guān)鍵幀,將不透明度設(shè)置成0%,再次播放一下,你會(huì)看到一個(gè)突然蹦出的小方塊,然后消失掉的故事板動(dòng)畫。
好了,截止現(xiàn)在基本的粒子控件制作完畢,現(xiàn)在打開MainPage控件將背景設(shè)置成為灰色或者漸變色,因?yàn)樯厦娴男》綁K是白色的,為了更好看,并且把LayoutRoot從Grid改成Canvas,這樣可以方便我們對(duì)位置的操作,
下面就是Coding時(shí)間了,在這里我將弄幾個(gè)小的技巧增加程序的便利性。
在FlashPoint.cs的類構(gòu)造中,添加一行代碼,就是故事板的開始動(dòng)畫,比如說:Storyboard1.Begin();
現(xiàn)在打開VS或者在Blend里修改.cs文件,在MainPage.cs中加入鼠標(biāo)的移動(dòng)事件或者重寫本身的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);
}
}
NET技術(shù):Silverlight 游戲開發(fā)小技巧:軌跡跟隨效果,轉(zhuǎn)載需保留來源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。