成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

iPhone 游戲開發教程 游戲引擎 (5)

移動開發 iOS 游戲開發
本文講解的是iPhone 游戲開發教程 游戲引擎,手機游戲開發已經成為了一種主流趨勢,先來看內容詳解。

iPhone 游戲開發教程 游戲引擎 (5)是本文要介紹的內容,繼續上一章的你內容開始介紹,本節主要介紹了聲音引擎和事件的內容,關于事件的介紹,下篇文章將會詳細介紹。

聲音引擎

聲音是游戲開發中經常忽略的一的環節,但是當你知道聲音構成了人類玩視頻游戲的1/3的感覺時,你肯定會很困窘。在合適的時機播放正確的聲音使得程序員僅作很小的工作就可以為游戲增加分數。

基本的音效特征包括載入和卸載聲音樣本、播放聲音、停止播放、暫停播放以及循環播放。典型的,所有的聲音都可以以同樣的音量播放,但是你可能希望玩家調整以使所有的聲音都符合他們的喜好。

聲音樣本

在播放音效之前,你需要從文件或者緩存中載入聲音樣本。IPHONE API支持AAC與MP3格式的高品質的聲音,也支持PCM和IMA4的小樣品,以及其他一些格式。

播放聲音

一旦載入了聲音樣本,API提供了函數以開始和停止播放樣本。大多數API還提供了暫停和繼續功能,還有一些允許你從特定點開始播放。雖然還有更多高級特性,但是基本上以上就是程序員全部所需要的了。

多聲道聲音

因為聲音播放依賴于硬件,你在同一時間可以聽到的聲音是有限的。每種聲音播放時都使用一個聲道。在IPHONE中,所有的MP3和AAC樣本共用相同的硬件聲道,而且只有一個是可用的,多聲道支持PCM和IMA4。

這意味著同一時間,只有一個MP3/AAC格式的樣本可以被播放。典型的,但多個PCM/IMA4樣本可以同時播放多個樣本(同時與MP3/AAC播放)。

音樂與SFX

游戲中的大部分聲音都可以分為兩大類:環境音(典型的,背景音樂)和音效(SFX)。有時,用環境音代替音樂,但他們都共享同樣的特點。

音樂一般是重復播放一個相對長的樣本或者引出下一段音樂樣本。通常情況下,只有一首音樂在同一時間播放,使得MP3/AAC格式限制變成了一個不成問題的問題。

聲效要短的多,而且需要許多不同的樣本,在同一時間重疊播放。PCM/IMA4格式很好的滿足了這個需求。

由于PCM/IMA4也只有有限的聲道數,因此如果你打算同時播放很多的SFX樣本,其中一些可能不能被播放。所以,為SFX音效設定優先級以確保某些音效一定能播放就顯得很重要了。

例如,讓我們討論之前提到的我們的玩家虛擬人偶走進了一個滿是憤怒的犀牛的房間。每頭犀牛都會播放憤怒的鼻息聲,可能還會接著播放撞人的聲音,而玩家虛擬人偶則會發出害怕的哭叫聲。我們會給與玩家虛擬人偶聲效更高的優先級,以使其不會被犀牛的撞人聲效所淹沒。

幸運的是,目前的IPHONE支持至少32聲道,所以一般不太可能需要在這個平臺上去刻意安排優先級。

輸出設備與干擾

IPHONE支持內置的對講機與聽筒作為輸出設備。建議不要同時使用它們。當玩家將聽筒插入到IPHONE中時,音頻會自動改為從聽筒播放。

由于IPHONE是移動設備,有可能玩家在路上在的時候,聽筒會掉落。一個好的設計選擇是當聽筒被移除的時候暫停游戲以給玩家足夠的時間讓他重新接入耳機。此時,你也可以選擇同時提供停止播放聲音。

最重要的是,應該從玩家的用戶角度來考慮聲效。玩你的游戲并不是用戶使用IPHONE的***標準,所以不要讓你的聲效的優先級打擾到用戶,否則玩家會將其關掉。

用戶輸入

游戲引擎的玩家輸入部分集中于來接收自于操作系統的低層次的事件,然后將其轉化為高層次的事件,這樣,游戲邏輯代碼可以在PC游戲中使用它。低層次的事件可以是鼠標和鍵盤事件。對于控制臺游戲,他們可能產生于控制器的手、觸發器與按鈕。在我們的例子里面,IPHONE會處理觸摸與旋轉事件。

觸摸事件

觸摸屏接口的設計方式與其他大多數移動手機、控制臺與PC平臺的接口設計方式有著根本的區別。在用戶觸摸屏幕與應用程序接收到該事件之間有延遲(盡管IPHONE已經在將縮短延遲方面做的足夠好了),但是真正的問題是,不管何時用戶做出觸摸動作,他的手指都會遮蓋住部分屏幕,大大降低了游戲畫面的可見性。

你可以通過提供一個圖形按鈕給用戶來點擊(回到了按鈕點擊系統,代價是屏幕空間),或者提供一個聰明的隱喻來解決這個問題。比如,如果玩家點擊了屏幕上的一塊空間,你可以讓虛擬人偶朝那個方向走。這樣可以省去用戶的連續點擊輸入。

盡管用戶接口設計是游戲設計人員的責任,但是編程人員需要告訴設計人員這個平臺可以做什么和不能做什么。IPHONE支持以下觸摸事件:

觸摸開始

觸摸移動

觸摸結束

觸摸取消

你可能會問什么情況下會觸發“觸摸取消”事件。當某個事件將你的應用程序掛起在“觸摸開始”事件與“觸摸結束”事件之間時,程序會收到“觸摸取消”事件通知你不會收到其他的事件(如觸摸結束)。

為了處理多點觸摸,包含一個UITouch對象list的UIEvent對象被發送到你的應用程序中。如果只有一個指頭觸摸到屏幕,你只會接收到一個UITouch對象;如果兩個指頭觸摸到屏幕,你會接收到兩個UITouch對象等等。而且IPHONE可以追蹤正在發生或最近發生的連續的5次輕擊事件(一個觸摸開始事件后緊跟一個觸摸結束事件)。

不幸的是,通過以上事件來判斷用戶是單擊、雙擊、掃過或者壓縮動作會可能變得比較麻煩。雖然不是很困難,但是在一開始并不是很容易正確處理。看以下例子:

  1. Time 0: TouchStart - numTaps(0) numTouches(1) Touches { (40,40) }     
  2. Time 100: TouchEnd - numTaps (1) numTouches(1) Touches { (40,40) }     
  3. Handle single-tap..    

到目前為止,用戶觸摸了屏幕一次,你的代碼可以執行相應的單擊處理邏輯。但是稍等!

  1. Time 0: TouchStart - numTaps(0) numTouches(1) Touches { (40,40) }     
  2. Time 100: TouchEnd - numTaps (1) numTouches(1) Touches { (40,40) }     
  3. Handled single-tap.. INCORRECTLY     
  4. Time 200: TouchStart - numTaps (1) numTouches(1) Touches { (40,40) }     
  5. Time 300: TouchEnd - numTaps (2) numTouches(1) Touches { (40,40) }     
  6. FAILED to handle double-tap    

用戶第二次輕擊了屏幕。如果你已經在收到觸摸結束的事件時進行了處理,可能錯誤的處理了用戶實際上的雙擊處理。

我們應該如何正確處理這種情況呢?解決方法是將***次觸摸結束事件推遲為定時回調。當***次接收到觸摸結束事件時,我們設置一個回調。如果我們在回調之前接收到了第二次觸摸結束事件,我們可以判定用戶進行了雙擊,并取消回調,執行雙擊處理。我們接收到了回調,我們認為用戶沒有進行雙擊并應該進行單擊處理。

這里有表達兩種情況的例子:

  1. Time 0: TouchStart - numTaps(0) numTouches(1) Touches { (40,40) }     
  2. Time 100: TouchEnd - numTaps (1) numTouches(1) Touches { (40,40) }     
  3. Initiate callback timer     
  4. Time 200: TouchStart - numTaps (1) numTouches(1) Touches { (40,40) }     
  5. Time 300: TouchEnd - numTaps (2) numTouches(1) Touches { (40,40) }     
  6. Handle double-tap, cancel callback    

這次,玩家進行了雙擊而且代碼進行了正確的處理。

  1.  Time 0: TouchStart - numTaps(0) numTouches(1) Touches { (40,40) }     
  2. Time 100: TouchEnd - numTaps (1) numTouches(1) Touches { (40,40) }     
  3. Initiate callback timer     
  4. Time 500: Callback recieved     
  5. Handle single-tap   

現在,玩家進行了單擊而且代碼也進行了正確的處理。

注意,你不必為那些僅期待單擊事件的接口加上這些處理。

偵測諸如掃過的動作會更麻煩一點,但也更容易正確處理。代碼中必須為每次觸摸保存起始點與終點,并算出用戶劃的線的方向是向上、向下、向左、還是向右。還要判斷他的手劃過的是否足夠快。

小結:iPhone 游戲開發教程 游戲引擎 (5)的內容介紹完了,希望本文對你有所幫助!想要深入了解iPhone  游戲引擎的更多內容,請參考以下幾篇文章:

iPhone 游戲開發教程 游戲引擎 (1)

iPhone 游戲開發教程 游戲引擎 (2)

iPhone 游戲開發教程 游戲引擎 (3)

iPhone 游戲開發教程 游戲引擎 (4)

iPhone 游戲開發教程 游戲引擎 (6)

責任編輯:zhaolei 來源: CSDN博客
相關推薦

2011-07-18 12:29:10

2011-07-18 11:23:29

iPhone 游戲 動畫

2011-07-18 10:53:09

2011-07-18 11:07:12

iPhone 游戲 引擎

2015-07-08 16:38:10

Cocos游戲引擎

2011-07-21 16:48:19

iPhone 游戲

2012-03-06 10:56:32

HTML 5

2012-09-19 10:25:56

iPhone 5游戲開發者

2015-07-10 10:27:21

Cocos游戲開發引擎

2022-03-29 07:40:23

H5游戲開發掃雷游戲

2015-07-06 17:12:31

游戲開發引擎cocos游戲引擎

2015-07-06 17:36:17

Cocos游戲開發引擎

2011-07-27 13:57:36

iPhone 游戲 Cocos2d

2016-04-18 16:20:55

2013-04-19 01:42:02

2011-12-12 13:58:11

TinyCoiOSAndroid

2013-03-06 15:05:44

移動瀏覽器移動游戲HTML5

2015-07-24 17:08:24

2023-09-14 11:45:11

Godot項目游戲

2013-12-04 17:14:57

Android游戲引擎libgdx教程
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美午夜一区二区三区免费大片 | 五月综合激情在线 | 中文字幕在线二区 | 精品久草 | 人妖一区 | 亚洲精品国产综合区久久久久久久 | 99福利网| 日本不卡一区二区三区在线观看 | 国产成人精品久久二区二区 | 粉嫩一区二区三区国产精品 | 播放一级黄色片 | 欧美电影免费观看高清 | 亚洲午夜久久久 | av中文字幕在线 | 91在线看片 | 成人午夜免费福利视频 | 中文字幕精品一区 | 亚洲精品免费观看 | 成人一级视频在线观看 | 国产视频福利一区 | 一级黄色片在线看 | 毛片一级网站 | 国产在线一区二区三区 | 视频三区 | 国产黄色麻豆视频 | 亚洲美女一区二区三区 | 妞干网福利视频 | 欧美日韩中文字幕 | 日韩一区二区在线视频 | 午夜免费视频观看 | www.蜜桃av | 日韩av免费在线观看 | 精品亚洲一区二区三区四区五区 | 久久69精品久久久久久久电影好 | 久久乐国产精品 | 自拍在线| 视频1区| 久久美国| 日韩精品一区二区三区久久 | 国产一区二区影院 | 日韩在线中文字幕 |