C#開發WPF/Silverlight動畫及遊戲系列教程(Game Course):(四)

來源:互聯網
上載者:User

C#開發WPF/Silverlight動畫及遊戲系列教程(Game Course):(四)實現2D人物動畫①

通過前面的學習,我們掌握了如何動態建立物體移動動畫,那麼接下來我將介紹WPF中如何將物體換成2D遊戲角色,並通過使用前面所講的DispatcherTimer計時器來實現2D人物角色的各種動作動畫。

動態實現2D人物角色動畫目前有兩種主流方法,下面我會分別進行介紹。

第一種方法我稱之為圖片切換法,準備工作:首先通過3DMAX等工具3D渲染2D的方法製作出角色,然後將角色每個動作均匯出8個方向每方向若干幀的系列圖片(如果是有方向的魔法圖片,很多2D-MMORPG往往會匯出16個方向的系列幀圖片以求更為逼真),即將每個人物每個動作的各方向的每幀均存成一張圖片,如下圖僅以從破天一劍遊戲中提取的素材為例:

(特別申明:本系列教程所使用的如有註明歸屬權的圖片素材均來源於網路,請勿用於商業用途,否則造成的一切後果均與本人無關。)

從上圖可以看到,我將人物向右方跑步共8幀圖片通過Photoshop分別將畫布等比例擴大成150*150象素圖片(因為是提取的素材,初始寬和高是不均衡值,所以必須擴大成自己的需求,這樣人物會在圖片中置中,並且為後期加入武器或坐騎留好餘地。稍微的偏離也可以在後期進行微調),並將他們從開始到結束分別命名為0.png,1.png,2.png,3.png,4.png,5.png,6.png,7.png(這裡還要順帶一提的是,圖片最好背景Alpha透明,否則在演算法上還要進行去色,不是多此一舉嗎?至於為何是png而不是gif,我這裡考慮到Silverlight目前只支援png和jpg,為了更多的通用性,當然如果您只用WPF,gif或png均可)。最後在項目中我們建立一個檔案夾取名叫Player,然後將這8張圖片儲存在該目錄下,到此準備工作終於結束了,忽忽。。還真夠累的。

接下來就是重頭戲了,如何通過純C#來實現動態建立人物跑動動作動畫呢?嘿嘿,且看下面代碼。

int count = 1;        Image Spirit;        public Window4() {            InitializeComponent();            Spirit = new Image();            Spirit.Width = 150;            Spirit.Height = 150;            Carrier.Children.Add(Spirit);            DispatcherTimer dispatcherTimer = new DispatcherTimer();            dispatcherTimer.Tick += new EventHandler(dispatcherTimer_Tick);            dispatcherTimer.Interval = TimeSpan.FromMilliseconds(150);            dispatcherTimer.Start();        }        private void dispatcherTimer_Tick(object sender, EventArgs e) {            Spirit.Source = new BitmapImage(new Uri(@"Player\" + count + ".png", UriKind.Relative));            count = count == 7 ? 0 : count + 1;        }

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.