此外,使用手機內置3D功能並不需要把程序裡的所有圖形都實現3D效果。通常它是創建更多的場景,在普通的2D游戲中加入簡單的3D效果。這樣你可以不改變程序的核心代碼就能在程序中實現簡單的3D效果。
3D跳轉頁面
首先,或許很簡單,這個效果是用3D動畫取代一個存在的2D跳轉頁面。隨著程序的增大,更多的數據需要花時間去裝載,一個漂亮的跳轉頁面變得越來越重要。例子程序是一個3D跳轉頁面並提供代碼下載。這個程序的主結構與”顯示一個Java跳轉頁面”是相同的,不過這個例子是使用的Mascot Capsule v3 API在K700上顯示一個簡單的3D動畫。你也可以使用JSR-184 API代替Mascot Capsule v3 API,在K700上仍然支持(索尼愛立信SDK對JSR-184支持並不完全,不過你可以在SUN網站上下載最新的JSR-184 API)。當靜態的圖片改為動態的動畫時,它必須保證動畫線程能獲得CPU時間在初始化期間。所以我們定期的調用初始化線程的Thread.speel(20)方法。
在動畫線程,動畫是一幀一幀的向前變化,使用Timer的TimerTask來控制按照固定率重復執行。
myTimer.scheduleAtFixedRate(new TimerTask(){
public void run() {
// Stop the Splash when
// initialization has finished
if(isInitialized){
myTimer.cancel();
}
splashCanvas.repaint();
nowFrame += 65536*3;
if (nowFrame>=maxFrame) {
if (maxFrame==0){
nowFrame = 0;
}else{
nowFrame %= maxFrame;
}
}
}
},
3D菜單
這裡仍然有許多我們能做的而不涉及實際游戲本身。游戲的菜單可以增加3D效果。按鈕、選擇框和其他標准的2D UI都能很容易的替換為3D等價物,你也可以創建完整的3D界面,配合不使用2D效果的情形。
這些要看你目前是什麼水平,這些效果可能不需要調用3D引擎來創建。作為簡單的效果,你可以創建2D圖畫來模擬簡單的3D效果
游戲裡的3D效果
當游戲是移動的,我們就有機會增強這些圖形,使用2D技術來模擬3D效果。
我們可以以2D效果開始,例如,使用LayerManager實現雲或煙霧在其他層前面漂移效果,從而模擬不同的遠景並造成感官深度。同樣的技術適用於背景是標准的水平卷軸游戲,通過把背景創建為兩層,並使前面一層的移動快於後面一層的移動。你可以下載這個程序的代碼。
由於真正的3D的支持,在游戲中,你可讓3D成為主動的部分或僅僅使用它在一些被動的方式。主動使用的意思是這樣的,例如:一個太空飛船或汽車是受用戶約束的,它們的顯示受到用戶的輸入和移動所影響。而被動使用是指當你使用一個3D效果時,不依賴於用戶的交互信息。