斜視角遊戲製作初步

2021-03-31 13:35:16 字數 1263 閱讀 3534

斜視角已經成了目前rpg遊戲的乙個標準,它比普通的垂直視角在視覺表現方面要更勝一籌,但是也帶來了一些不便。

先講一下地圖的拼法。現在的rpg、戰棋和即時戰略遊戲的地圖還是用一塊一塊的小圖素(tile)拼起來的,這樣主要為了節省記憶體,但對美工的要求要高一些。而且斜視角的tile是乙個菱形,比之垂直視角的矩形tile拼起來要複雜一些。

假設我們每個地圖單元(即是下圖中紅線框出的乙個矩形)的大小是32x16畫素,那麼這個tile的大小則是32x15畫素(如左圖),而不是32x16畫素。因為在交界處理論上線的寬度是0,但實際上畫素是有寬度的。將這個tile像下圖一樣交錯著拼起來,剛好嚴絲合縫,上下每個標號相同的tile的間距剛好是16個畫素。

再講一下斜角格仔的判斷,這在隨便哪種用滑鼠操作的遊戲裡都是最重要的乙個步驟。在斜視角遊戲中,因為每個tile都是菱形的,所以要判斷游標所在tile的位置要比垂直視角的位置判斷難上一些,可以這樣來做。 將tile的標號按右圖的方式排列,藍色和黃色分別代表不同的行,但列標號相同的tile的位置在水平座標上是一樣的,當然會有一些浪費,這也是沒有辦法的。然後將整個螢幕(假設螢幕大小即是右圖的大小,但是有一點要注意,就是螢幕的左上角點最好是乙個tile的中心點,將左上角中心相對於大地圖tile[0,0]中心的位置記為[origin_x,origin_y])按tile的大小劃分為mxn塊矩形區域(如右圖紅線的框法),將游標在螢幕上的位置加上[origin_x,origin_y],就得到了游標在整個地圖上的位置。判斷滑鼠在哪乙個矩形區域中,即可知道矩形區域中心tile的位置,也就知道了這個tile的中心點的位置。

下面就是個幾何問題了,以[0,0]為中心、在x軸和y軸上截距分別為kx,ky的菱形的內部點的座標的方程是什麼?都該知道吧,即是:ky|x|+kx|y| < ky*kx

如果游標不在中心tile中,再判斷一下游標相對於矩形區域中心的偏移,根據值的正負很容易就判斷出游標是在鄰近的哪個tile中了。下面是判斷游標位置的源**。其中px,py是游標在大地圖上的位置,mx,my是tile的位置(這裡是以每個tile大小是64x31計算的)。

#define abs(x) ((x)>0 ? (x) : -(x))

kx = (px&63)-31;

ky = (py&31)-15;

mx = px>>6;

my = py>>5;

cx = abs(kx);

cy = abs(ky);

mx = mx*2+1; // 矩形區域中心的tile的列號都是奇數

if(cx+2*cy >= 32)

關於斜視角遊戲的值左暫時先講到這兒,下次再見。

2D斜視角遊戲的繪製次序總結(雲風的blog)

斜45度角遊戲,為了節省貼圖資源。可用正方形儲存地表貼圖,用的時候在旋轉45度,再scale 1,0.5 所謂類似 coc 這樣的斜視角引擎,在英文社群中叫作 isometric tileset engine。它在早期計算資源匱乏的年代用的很多,後來記憶體不是問題了後,就很少有人用了。由於沒有 z ...

製作遊戲2

遊戲策劃 背景 公元2100年,人類終於走出地球,開採地外資源。由於人類的開採,嚴重損害了m87星球人的利益,終於,m87星人憑藉自己的超高科技,發起了對地球的侵略戰爭。家園危機,身為地球保衛隊一員的我怎能視而不理,終於踏上了保衛地球的征程。道具 飛機一 飛機二 子彈 遊戲設計 飛機一飛機二子彈 發...

遊戲夜讀 如何製作遊戲?

最懶的辦法就是folk,弄一備份,遊戲就製作完成了。那麼問題來了,最初的遊戲是怎麼製作的呢?那就不得不說回到遊戲本身的特點。不論是電子遊戲,又叫電玩,還是非電子的,比如線下桌遊,遊戲的核心都是一套規則。外加服務。即使是藝術作用的遊戲,也會提供說明吧?商業目的的遊戲,如果不提供運營服務,就沒有辦法讓玩...