2009-05-27 75 views
3

我正在尋找關於如何在等距遊戲世界中移動(和動畫)2D精靈的信息,但是它們的移動動作順利,因爲從瓷磚到瓷磚的旅行相對讓他們從一塊瓷磚的邊界跳到另一塊瓷磚的邊界。在等軸測世界中的瓷磚之間移動精靈

這方面的一個例子就是運輸大亨遊戲,火車和馬車往往是一半一半,另一半是一半。

回答

10

在正確的地方繪製精靈不是太困難。投影公式如下:

screen_x = sprite_x - sprite_y 
screen_y = (sprite_x + sprite_y)/2 + sprite_z 

sprite_x和sprite_y是定點值(或浮點,如果你想要的話)。通常,固定點的精度是瓦片上的像素數 - 因此,如果瓦片圖形爲32x16(32x32平方),則會有5位精度,即瓦片的1/32。

真正困難的部分是將精靈分類到可正確呈現的順序。如果你使用OpenGL進行繪圖,你可以使用一個z緩衝區來實現這一點。使用GDI,DirectX等,這真的很難。運輸大亨在所有情況下都無法正確呈現精靈。原來的運輸大亨擁有你見過的最可怕的渲染引擎。它實現了三個縮放級別是一個巨大的masm宏的三個instanciations。 TT完全是用匯編寫成的。我知道,因爲我很多年前把它移植到Mac上(並且爲PS1開發套件做了一個很酷的版本,但它需要6Mb)。

P.S.遊戲中的一個小平房圖形是基於Chris Sawyer當時住的房子。我們試圖添加一輛停在Mac版車道上的法拉利,因爲這是他用版稅購買的車。

0

你爲什麼認爲它會從瓷磚跳到瓷磚?你可以將你的精靈定位在任何x,y座標上。

首先創建你的背景屏幕緩衝區,然後將你的精靈放在它的頂部。

4

看看如何做線性插值(這是一個非常簡單的公式)。然後您可以使用它來在單個[0,1]範圍內參數化轉換。然後,您只需在你的精靈的狀態來存儲的事實:

  1. ,他們正在
  2. 起點和終點
  3. 開始和結束時間(或開始時間和持續時間

然後使用從起點到終點的插值在正確的位置繪製每一幀,一旦超過了持續時間,精靈會更新爲不移動,並定位在終點/圖塊中。