程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> C#開發WPF/Silverlight動畫及游戲系列教程(Game Course):(六)完美移動(2)

C#開發WPF/Silverlight動畫及游戲系列教程(Game Course):(六)完美移動(2)

編輯:關於C語言

那麼該動畫並非完美,存在以下3個問題:

一、主角始終為跑步狀態,那麼能否當主角移動到目的地後即變成站立狀態呢?

of course,方法不要太多,這裡我給大家一個小提示,例如我們可以dispatcherTimer_Tick事件中進行如下判斷:

if (storyboard != null && storyboard.GetCurrentTime() == TimeSpan.FromSeconds(1)) {

TODO... 

//主角的圖片源切換成站立系列幀圖片即可。

}

當然此方法只是N多方法之一。

二、主角定位的坐標始終處於圖片的左上角,能否定位到主角的腳底,例如我鼠標點哪,主角移動到該處後腳的位置站在此點上,實現精確定位?

這其實並不難,涉及到一個圖片定位算法問題,您需要設置一個Point Spirit_Position{get;set}屬性來存儲主角的坐標。並且該坐標的Spirit_Position.X,Spirit_Position.Y值分別定位到主角的腳底,如下圖:

C#開發WPF/Silverlight動畫及游戲系列教程(Game Course):(六)完美移動

然後在以後的調用中都使用該坐標來取代Canvas.getLeft(),Canvas.getTop()。

三、主角朝向如何實現8個方向,即往哪邊跑就朝向哪邊?

這就是典型的算法問題了,其實也很簡單,根據主角移動的目標Target.X和Target.Y分別與主角初始位置的Old.X和Old.Y進行一個角度計算,然後根據判斷返回0-7(int),8個數字分別代表8個朝向,這樣在Spirit.Source設置時就調用相應角度的圖片源系列幀即可。

到此,我們已經能夠完美的實現角色的移動與停止等動畫,接下來的章節我將就地圖結構與主角在地圖中的處理進行詳細講解,敬請關注。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved