2013/10/27

抬頭顯示器 Head-Up-Display 的製作

  為了使戰機飛行員在飛行時不須再低頭看儀表板的數據,一些重要的數據會直接顯示在飛行員頭盔前方的面罩上。這類的資訊顯示方式有二個特點:
  1. 它是直接放在使用者眼前,因此,不會被任何物件遮蔽;
  2. 它的顯示平面直接和使用者的視線成垂直交會,因此,是一種正射投影,直接以2D方式畫上去的資訊。
遊戲中,除了遊戲關卡和角色物件的顯示之外,還有許多提示訊息需要顯示出來,像是血條、彈藥存量、怪的數量、警告訊息等等。在類3D遊戲中,我們可以設計一個hud物件專門來顯示它們。
為了前述第1條特性,我們需要:
  1. 將hud物件的深度設成在最上方(比其它物件都小(或更負));
  2. 在Draw事件中,繪製資訊之前,先將『遮蔽面不畫』的功能關掉:
    d3d_set_hidden(false);
    畫完之後,離開Draw事件之前,再將『遮蔽面不畫』的功能打開。
為了前述第2條特性,我們必須在Draw事件中,繪製資訊之前,加入下列指令來進入正射投影:

d3d_set_projection_ortho(0,0,640,480,0);

由於hud在最淺處,此指令不必還原,下一個Draw事件週期時,god物件自會重新設定攝影機。