精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

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

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

iPhone 游戲開發教程 游戲引擎 (6)是本我要介紹的內容,繼續上一章開始介紹,本節主要介紹了事件的相關內容,先來看本文詳解。

解決高層次事件

一旦判定了用戶執行的物理動作,你的代碼必須能將它們轉換為游戲邏輯組件可以使用的形式。具體怎么做需要依賴于你的游戲的上下文,但是這里有幾種典型的形式:

如果玩家準備控制虛擬人偶,在玩家和游戲之間通常會有連續的交互。經常需要存儲當前用戶輸入的表現形式。比如,如果輸入裝置為遙桿,你可能需要在主循環中記錄當前點的x軸坐標和y軸坐標,并修正虛擬人偶的動量。玩家和虛擬人偶之間的是緊密地耦合在一起的,所以控制器的物理狀態代表著虛擬人偶的高層次的狀態模型。當遙桿向前撥動時,虛擬人偶向前移動;當“跳躍”按鈕按下時,虛擬人偶跳起。

如果玩家正與游戲地圖進行交互,那么需要另外一種間接的方式。比如,玩家必須觸摸游戲地圖中的一個物體,代碼必須將玩家在屏幕上的觸摸坐標轉化為游戲地圖的坐標以判定用戶到底觸摸到了什么。這可能只是簡單的將y軸坐標減去2D攝像機坐標的偏移量,也可能是復雜到3D場景中的攝像機光線碰撞偵測。

最后,用戶可能進行一些間接影響到游戲的動作,如暫停游戲、與GUI交互等。這時,一個簡單的消息或者函數會被觸發,去通知游戲邏輯應該做什么。

游戲邏輯

游戲邏輯是游戲引擎中是你的游戲獨一無二的部分。游戲邏輯記錄著玩家狀態、AI狀態、判定什么時候達到目的地、并生成所有的游戲規則。給出兩個相似的游戲,他們的圖像引擎與物理引擎可能只有細微差別,但是它們的游戲邏輯可能會有很大差異。

游戲邏輯與物理引擎緊密配合,在一些沒有物理引擎的小游戲中,游戲邏輯負責處理所有物理相關內容。但是,當游戲引擎中有游戲引擎的時候,需要確保兩者的獨立。達到此目的的最好方式就是通過物理引擎向游戲邏輯發送高層次的游戲事件。

高層次事件

游戲邏輯代碼應該盡可能僅處理高層次問題。它不應該處理當用戶觸摸屏幕時需要以什么順序將什么描畫到屏幕上,或者兩個矩形是否相交等問題。它應該處理玩家希望向前移動,什么時候一個新的游戲物體應當被創建/移除以及當兩個物體相互碰撞后應該做什么。

為了維持概念上的距離,處理低層次概念(諸如用戶輸入與物理引擎等)的代碼應當創建高層次的消息并發送給游戲邏輯代碼去處理。這不僅能保持代碼的獨立性與模塊化,還會對調試有所幫助。通過查看高層次消息傳遞的日志,你可以判定是沒有正確處理消息(游戲邏輯代碼的問題),還是沒有在正確的時機傳送消息(低層次代碼問題)。

 一個非?;镜膫鬟f高層次消息的技術是寫一個String并傳遞它。假如玩家按下了上箭頭鍵,它的虛擬人偶必須向上移動。

  1. void onPlayerInput( Input inputEvt ) {     
  2.     if(inputEvt.type == IE_KEY && inputEvt.value == KEY_UP ) {     
  3.         g_myApp->sendGameLogicMessage( "player move forward" );     
  4.     }     
  5. }    

雖然上面的代碼對程序員來說通俗易懂,但對于電腦來說卻并不高效。它需要更多的內存與處理,遠比實際需要的多。我們應該用提示來替代用戶輸入方法。比起一個字符串,它使用一個"type"和"value"。由于可能的事件都是結構化的和有限的,因此我們可以使用整數和枚舉類型來我們消息中的事件信息。

首先,我們定義一個枚舉類型來標識事件類型:

  1. enumeration eGameLogicMessage_Types {     
  2.     GLMT_PLAYER_INPUT,     
  3.     GLMT_PROJECTILE_WEAPON,     
  4.     GLMT_GOAL_REACHED,     
  5. };  

 

接著我們再創建一個枚舉類型來標識事件的值:

  1. enumeration eGameLogicMesage_Values {     
  2.     GLMV_PLAYER_FORWARD,     
  3.     GLMV_PLAYER_BACKWARD,     
  4.     GLMV_PLAYER_LEFT,     
  5.     GLMV_PLAYER_RIGHT,     
  6.     GLMV_ROCKET_FIRED,     
  7.     GLMV_ROCKET_HIT,     
  8. };    

現在我們定義一個結構體來存儲我們的消息數據:

  1. view plaincopy to clipboardprint?struct sGameLogicMessage {     
  2.     short type;     
  3.     short value;     
  4. } Message;    

現在,我們就可以像上一個例子代碼一樣,用一個對象來傳遞我們的消息:

  1. void onPlayerInput( Input inputEvt ) {     
  2.    if(inputEvt.type == IE_KEY && inputEvt.value == KEY_UP ) {     
  3.        Message msg;     
  4.        msg.type = GLMT_PLAYER_INPUT;     
  5.        msg.value = GLMV_PLAYER_FORWARD;     
  6.        g_myApp->sendGameLogicMessage( msg );     
  7.    }     
  8.     

這看起來作了更多的工作,但它運行起來會更有效率。前一個(壞的)例子用了20個字節來傳遞消息(20個字符各占一個字節,別忘了終止符)。第二個例子只用了4個字節來傳遞同樣的消息。但是更要的是,當sendGameLogicMessage()處理方法的時候,它只需要分析兩個switch語句就可以找到正確的響應,而前一個例子則組要從字符串進行解析,速度很慢。

人工智能

游戲邏輯的另外一個職責就是管理AI代理。兩類典型的游戲需要用到AI系統:一種是玩家與電腦競賽;另外一種是在游戲世界中有半自主系統的敵人。在這兩種情況下,AI代理為游戲世界中的物體的動作接受輸入并提供輸出。

在第一種類型游戲里,AI被稱作專家系統。它被期待用來模擬理解游戲規則的人的行為動作,并可以采取具有不同難度的策略來挑戰玩家。AI具有與玩家類似的輸入與輸出,可以近似的模擬玩家的行為。由于人類比現在的AI代理更擅長處理復雜信息,有時為專家系統提供的輸入信息要多于給玩家的,以使AI系統看起來更智能。

例如,在即時戰略游戲(RTS)中,戰爭迷霧用來限制玩家的視野,但AI敵人可以看見地圖上所有的單位。盡管這樣提高AI對抗更高智慧玩家的能力,但是如果優勢變的太大,會讓人覺得AI在作弊。記住,游戲的重要點是讓玩家獲得樂趣,而不是讓AI擊敗他們。

在第二種類型的游戲中,可能有許多AI代理。每一個都獨立,其不是非常智能。在某些情況下,AI代理會直接面對玩家,而有些可能是中立狀態,甚至還有一些是前面兩種狀態的結合。

有些代理可能是完全愚笨的,提供特定的、有限的行為而且并不關心游戲世界中發生的事情。在走廊里面來來回回走動的敵人就是一個例子。有些可能是稍微有些愚笨,只有一個輸入和一個輸出,比如玩家可以打開和關閉的門。還有一些可能非常復雜,甚至懂得將它們的行為組合在一起。為AI代理選擇恰當的輸入允許你模仿“意識”和增加現實性。

不論AI代理有多么簡單,一般都會它們使用狀態機。例如,第一個例子中的完全愚笨的物體必須記錄它在朝哪個方向走動;稍微愚笨的物體需要記錄它是開的狀態還是關的狀態。更復雜的物體需要記錄“中立”與“進攻性之間的”動作狀態,如巡邏、對抗與攻擊。

透明的暫停與繼續

將游戲視作具有主要游戲狀態的模擬是非常重要的。不要將現實世界時間與游戲時間混淆。如果玩家決定休息會兒,游戲必須可以暫停。之后,游戲必須可以平滑的繼續,就像任何事情都沒有發生一樣。由于IPHONE是移動設備,保存與繼續游戲狀態變得尤其重要。

IPHONE上,在一個時間點只允許一個應用程序運行,用戶也希望這些應用程序能夠很快載入。同時,他們希望能夠繼續他們在切換應用程序之前所做的事情。這意味著我們需要具有在設備上保存游戲狀態,并盡可能快的繼續游戲狀態的能力。對于開發游戲,一項任務是要求保持現在的關卡并可以重新載入它使玩家即使在重新啟動應用程序后也可以繼續游戲。你需要選擇保存哪些數據,并以一種小巧的、穩定的格式將其寫到磁盤上。這種結構化的數據存儲被稱為序列化。

根據游戲類型的不同,這可能比聽起來要困難的多。對于一個解謎游戲,你將僅需要記錄玩家在哪個關卡、以及現在記分板看起來是什么樣的。但是在動作類游戲中,除了記錄玩家虛擬人偶之外,你可能還需要記錄關卡中的每個物體的位置。在一個特定時間點,這可能變得難以管理,特別是當希望它能夠很快完成。對于這種情況,你可以在游戲設計階段采取一些措施以確保成功。

首先,你必須決定什么東西是在保存游戲狀態時必須保存的。火焰粒子系統中的每根小火苗的位置并不重要,但是在粒子系統的位置在大型游戲中可能很重要。如果它們能從關卡數據中獲得,那么游戲中每個敵人的狀態可能并不重要。用這種方式進一步考慮,如果你可以簡單的讓玩家的虛擬人偶從check point開始的話,那玩家虛擬人偶的確切狀態與位置也可能不需要保存。

基于幀的邏輯與基于時間的邏輯

基于幀的邏輯是指基于單獨的幀的改變來更新游戲物體。基于時間的邏輯雖然更復雜但卻與實際游戲狀態更緊密,是隨著時間的流逝而更新游戲物體。

不熟悉游戲開發的程序員總是犯了將基于幀的邏輯與基于時間的邏輯混合的錯誤。 它們在定義上的區別是微妙的,不過如果處理不得當,會造成非常明顯的BUG。

比如,讓我們以玩家移動為例。新手程序員可能寫出這樣的代碼:

  1. void onPlayerInput( Input inputEvent ) {     
  2.     if(inputEvt.type == IE_KEY && inputEvt.value == KEY_UP) {     
  3.         //apply movement based on the user input     
  4.         playerAvatar.y += movementSpeed;     
  5.     }     
  6. }   

每當玩家按下按鍵,虛擬人偶像前移動一點。這是基于幀的邏輯,因為每次移動的變化都會潛在的伴隨著新的幀。事實上,在這個的例子中,每次玩家輸入事件都會發生移動。這或多或少有點像主循環的迭代。移動的可視化影響只有在主循環的下次迭代中才會反映,所以任何迭代中間的虛擬人偶移動都會浪費計算。讓我們做一下改進:

  1. void onPlayerInput( Input inputEvent ) {     
  2.     if(inputEvt.type == IE_KEY && inputEvt.value == KEY_UP) {     
  3.         //save the input state, but don't apply it     
  4.         playerAvatar.joystick = KEY_UP;     
  5.     }     
  6.     if(inputEvt.type == IE_KEY_RELEASE) {     
  7.         playerAvatar.joystick = 0;     
  8.     }     
  9. }     
  10. void Update() {     
  11.     //update the player avatar     
  12.     if( playerAvatar.joystick == KEY_UP ) {     
  13.         playerAvatar.y += movementSpeed;     
  14.     }     
  15. }    

現在我們知道,在鍵被按下的過程中,每次游戲循環中都只會被賦予一次速度。但是,這仍然是基于幀的邏輯。

基于幀的邏輯的問題是,幀變化不會總是以相同的時間間隔發生。如果在游戲循環中,渲染或者游戲邏輯會比通常耗費更多的時間,它可能會被推遲到下一次循環中。所以,有時你需要有60幀每秒(fps),有時,你只需要30fps。由于移動是適用于幀的,有時你只會以通常的一半速度來移動。

你可以用基于時間的邏輯來準確的表達移動。通過記錄自從上次幀更新的時間,你可以適用部分移動速度。用這種方式,你可以以每秒為單位來標識移動速度,而不必關心當前幀速率是多少,玩家虛擬人偶的速度是一致的:

  1. void Update( long currTime ) {     
  2.     long updateDT = currTime - lastUpdateTime;     
  3.     //update the player avatar     
  4.     if( playerAvatar.joystick == KEY_UP ) {     
  5.         //since currTime is in milliseconds, we have to divide by 1000     
  6.         // to get the correct speed in seconds.     
  7.         playerAvatar.y += (movementSpeed * updateDT)/1000;     
  8.     }     
  9.     lastUpdateTime = currTime;     
  10. }    

在這個例子中,移動速度的總量將會是相同的,不管是2fps還是60fps。基于時間的邏輯需要一點額外的代碼,但是它可以使程序更精確而不必在乎暫時的延遲。

當然可以用基于幀的邏輯來開發游戲。重要的是,不要混合它們。比如,如果你的圖形代碼使用基于時間的邏輯來渲染玩家虛擬人偶的移動動畫,但是游戲邏輯代碼卻使用基于幀的邏輯在游戲世界中來移動它,這樣移動的動畫將不能玩玩家移動的距離完全同步。

如果可能的話,請盡量移除基于幀的邏輯。基于時間的邏輯將會對你有更大的幫助。

游戲邏輯組織結構

游戲邏輯代碼的核心功能就是管理游戲狀態的規則與進度。根據你的游戲設計,這可能意味著任何事情。但是,還是有一些基本模式基于制作的游戲的類型。

游戲邏輯不與任何一個特定的類相關聯,它游戲狀態對象中表現出來。當主游戲狀態被初始化后,它將會為關卡載入與初始化必要的資源。例如猜謎游戲中的一組提示與單詞、玩家虛擬人偶的圖片數據以及玩家當前所在區域的圖片數據。在游戲循環中,游戲邏輯將會接受用戶輸入,運行物理模擬,并負責處理所有的碰撞結局消息,模擬AI動作,執行游戲規則。最后,當應用程序需要終止主游戲狀態,它會釋放釋放所有的游戲資源,并可能將游戲狀態保存到硬盤驅動器上。

根據游戲的復雜度,你可能會發現很方便進一步分解游戲邏輯。比如,如果你在開發一款冒險游戲,你可能有一個充滿環境數據(地面、建筑、河流、樹等)、可以移動、與玩家交互的實體(玩家虛擬人偶、敵人、非玩家角色、開關、障礙物等),各種GUI使玩家作出特殊動作和顯示重要信息的游戲世界。每種游戲特征都必須有大量的代碼。雖然它們合在一起才能組成完整的游戲,但是你還是可以保持它們的工作模塊化。

你可以創建一個Level Manager類來處理游戲關鍵,包括載入和卸載顯示在游戲世界中的物理與圖像數據與調用游戲引擎來偵測實體與游戲世界的碰撞。你還可以創建另外一個類或者一些類來處理游戲世界中存在的實體。每個類都載入和卸載渲染那些物體的必要的物理和圖片數據,以及包括控制它們的AI。

最后,你可能創建另外一個單獨的類來處理游戲中用戶交互,以保持代碼與三大概念獨立。

這個體系結構適用于任何類型的游戲。首先評估游戲設計的主要特性,接著以某種方式組合,將相近的功能與數據組合在一起。

小結:

小結:iPhone 游戲開發教程 游戲引擎 (6)的內容介紹完了,希望本文對你有所幫助!你應該對創造一個游戲引擎時必須完成的任務有了一個基本的理解。這將會幫助我們在下一節創建這些元素,為我們的游戲做準備。 想要深入了解iPhone  游戲引擎的更多內容,請參考以下幾篇文章:

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

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

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

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

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

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

2011-07-18 10:53:09

2011-07-18 11:07:12

iPhone 游戲 引擎

2011-07-18 11:39:58

iPhone 游戲 引擎

2011-07-18 11:23:29

iPhone 游戲 動畫

2011-07-21 16:48:19

iPhone 游戲

2011-08-09 11:13:07

iPhone游戲網絡連接測試游戲

2013-12-04 17:27:10

Android游戲引擎libgdx教程

2015-07-08 16:38:10

Cocos游戲引擎

2015-07-06 17:36:17

Cocos游戲開發引擎

2015-07-06 17:12:31

游戲開發引擎cocos游戲引擎

2011-07-27 13:57:36

iPhone 游戲 Cocos2d

2013-04-19 01:42:02

2011-12-12 13:58:11

TinyCoiOSAndroid

2023-09-14 11:45:11

Godot項目游戲

2012-03-06 10:56:32

HTML 5

2013-12-04 16:28:29

Android游戲引擎libgdx教程

2012-06-23 20:06:21

jQuery

2013-12-06 09:59:53

Android游戲引擎libgdx教程

2015-07-10 10:27:21

Cocos游戲開發引擎

2011-04-06 15:22:00

虛擬引擎移動游戲開發
點贊
收藏

51CTO技術棧公眾號

国产精品无码乱伦| 91亚色免费| av资源在线免费观看| 精品一区二区三区中文字幕视频| 亚洲国产一二三| 欧美裸体网站| 亚洲精品久久久久久无码色欲四季| 一本久道久久久| 久久九九免费视频| 国产夫妻性爱视频| 国产在线视频欧美一区| 懂色aⅴ精品一区二区三区蜜月 | 国内精品久久久久久久| 久久精品国产亚洲av久| 亚洲一区二区免费在线观看| 91国产丝袜在线播放| 成人午夜视频免费观看| yiren22亚洲综合伊人22| 成人禁用看黄a在线| 国产精品视频自拍| 四虎成人永久免费视频| 欧美久久九九| 色视频www在线播放国产成人| 日本一区二区三区在线免费观看| 日韩国产网站| 疯狂做受xxxx高潮欧美日本| 中文字幕の友人北条麻妃| av电影在线观看一区二区三区| 99re这里只有精品首页| 亚洲一区亚洲二区| 国产精品一级视频| 日本成人中文字幕| 国产97在线视频| 国产成人亚洲欧洲在线| 韩国在线视频一区| www.精品av.com| www成人啪啪18软件| 国产精品一区2区3区| 亚洲精品日韩欧美| 精品人妻一区二区三区日产乱码卜| 亚洲一区二区三区免费| 日韩一区二区三区精品视频| 污色网站在线观看| 成人四虎影院| 一本色道久久综合亚洲aⅴ蜜桃 | 日本不卡一区二区| 国产精品 欧美在线| 久久青青草视频| 亚洲精品乱码| 欧美亚洲在线视频| 国产精品第5页| 久久久水蜜桃av免费网站| 97国产成人精品视频| 国产特黄大片aaaa毛片| 亚洲人成人一区二区三区| 久久久久久免费精品| 国产一级做a爱免费视频| 黑人一区二区三区四区五区| 午夜精品福利在线观看| 日本亚洲欧美在线| 日韩亚洲精品在线| 国产精品69精品一区二区三区| 国产午夜免费福利| 日本女人一区二区三区| 成人av在线网址| 亚洲国产精品一| 99麻豆久久久国产精品免费优播| 久久精品日产第一区二区三区乱码 | 欧美xingq一区二区| 在线成人精品视频| 精品亚洲精品| 亚洲午夜色婷婷在线| 亚洲av毛片基地| 在线中文字幕第一区| 欧美日韩成人在线播放| 在线观看亚洲欧美| 日韩av电影天堂| 91在线视频成人| 欧美一级特黄aaaaaa| 久久免费偷拍视频| 中文字幕中文字幕在线中心一区| 日本一级理论片在线大全| 欧美日韩国产在线| 老司机午夜性大片| 99re8这里有精品热视频免费| 亚洲美女中文字幕| 中国一级片在线观看| 99日韩精品| 国产日韩中文字幕| 婷婷色在线观看| 国产精品婷婷午夜在线观看| 99热这里只有精品免费| 中文字幕人成乱码在线观看| 欧美剧情片在线观看| 日b视频在线观看| 欧美国产一级| 91精品国产91久久久久| 91超薄丝袜肉丝一区二区| 成人深夜在线观看| 亚洲欧美国产不卡| 啊啊啊久久久| 8x福利精品第一导航| 国产中文字幕一区二区| 亚洲欧美在线专区| 国产精品久久综合av爱欲tv| 成人毛片在线精品国产| 国产精品久久久久aaaa| 日韩毛片在线免费看| 99香蕉久久| 久久亚洲精品中文字幕冲田杏梨 | 国产亚洲精品v| 91夜夜未满十八勿入爽爽影院| 欧美3p视频在线观看| 亚洲综合无码一区二区| 日本一二区免费| 精品国产一区二区三区噜噜噜 | 日韩欧美一级视频| 国内精品国产三级国产a久久| 品久久久久久久久久96高清| a'aaa级片在线观看| 日韩欧美一区二区免费| 麻豆视频免费在线播放| 日一区二区三区| 久久精品日产第一区二区三区精品版| 人人澡人人添人人爽一区二区| 欧美视频一区在线观看| 欧美大波大乳巨大乳| 99精品福利视频| 国产伦精品一区二区| 少女频道在线观看免费播放电视剧| 欧美系列一区二区| 极品人妻videosss人妻| 免费视频一区| 久久久久久久有限公司| 激情aⅴ欧美一区二区欲海潮| 日韩欧美123| 九九热国产在线| 国产精品一区二区不卡| 国产树林野战在线播放| 国产va免费精品观看精品| 日韩视频精品在线| 国产精品国产三级国产普通话对白 | 国产乱码一区| 91九色在线播放| 日韩精品小视频| 四虎精品永久在线| 久久在线观看免费| 国产熟人av一二三区| 久久99视频| 国产精品一区二区三| 9191在线| 欧美一级淫片007| 欧美成人精品欧美一级| 成人精品免费视频| 少妇高潮毛片色欲ava片| 全国精品免费看| 日韩美女在线观看| 日韩精品黄色| 91麻豆精品国产91久久久久久 | 国产伦精品一区二区三区高清版| 成人免费图片免费观看| 精品福利视频一区二区三区| 五月婷婷激情网| 国产亚洲欧美日韩日本| 色一情一区二区三区| 一区二区国产在线| 国产偷国产偷亚洲高清97cao| 精精国产xxxx视频在线野外| 亚洲视频在线观看免费| 一级aaaa毛片| 亚洲无人区一区| 亚洲码无人客一区二区三区| 蜜乳av一区二区三区| 欧美人与动牲交xxxxbbbb| 秋霞在线一区| 91精品视频免费观看| 国产精品电影| 中文字幕日韩精品在线| 午夜免费福利视频| 色综合色狠狠综合色| 国内毛片毛片毛片毛片毛片| caoporn国产一区二区| 欧美在线观看视频网站| 欧美成人一区二免费视频软件| 精品亚洲第一| 亚洲日本中文| 欧美在线视频免费| 成人免费网址| 亚洲天堂第一页| 精品人妻一区二区三区含羞草| 婷婷六月综合亚洲| 亚洲欧美卡通动漫| 99久久久无码国产精品| 国产性生活一级片| 亚洲一区不卡| 波多野结衣 作品| 国产一区国产二区国产三区| 不卡视频一区二区三区| 97成人超碰| 久久久久久有精品国产| 一级日本在线| 亚洲欧美福利视频| 国产 日韩 欧美 综合| 精品视频在线看| 日本天堂网在线| 亚洲一区av在线| 国产精品精品软件男同| 久久久久久夜精品精品免费| 黑森林av导航| 国产一区久久久| 激情内射人妻1区2区3区| 亚洲一级一区| 米仓穗香在线观看| 手机亚洲手机国产手机日韩| 欧美日韩一区二区视频在线观看| 亚洲日本va中文字幕| 成人精品福利视频| 视频在线日韩| 日本午夜精品理论片a级appf发布| 婷婷av在线| 久久国产精品偷| 亚洲xxxxxx| 这里只有精品在线播放| 男人的天堂在线| 亚洲精品美女久久久久| 蜜桃91麻豆精品一二三区| 91精品综合久久久久久| 亚洲专区第一页| 欧美午夜精品久久久久久超碰| 国产精品视频久久久久久久| 亚洲va天堂va国产va久| 国产无遮挡免费视频| 亚洲五月六月丁香激情| 国产对白videos麻豆高潮| 亚洲午夜久久久久中文字幕久| 日日骚一区二区三区| 亚洲精品美腿丝袜| 国产乱国产乱老熟300| 亚洲天堂福利av| 国产精品三区在线观看| 亚洲人成在线播放网站岛国| 国产午夜手机精彩视频| 亚洲欧美日韩小说| 美女福利视频在线观看| 亚洲综合久久久久| 日本中文字幕在线免费观看| 午夜精品国产更新| jizz国产在线观看| 91激情在线视频| 91麻豆视频在线观看| 欧美一区二区视频观看视频| 99免费在线视频| 精品国产区一区| 无码h黄肉3d动漫在线观看| 精品丝袜一区二区三区| 精品影院一区| 日韩在线视频观看正片免费网站| 日本a级在线| 久精品免费视频| 97在线超碰| 国产成人极品视频| 97精品资源在线观看| av一区二区在线看| 丝袜美腿一区二区三区动态图 | 欧美成熟视频| 色综合久久久久无码专区| 久久婷婷亚洲| 精品综合久久久久| 成人免费视频网站在线观看| 美国黄色a级片| 国产精品久久久久久久蜜臀| 全程偷拍露脸中年夫妇| 欧美日韩色婷婷| 在线观看国产小视频| 日韩女优毛片在线| 欧美老女人性开放| 久久激情视频久久| 91美女精品| 国产精品视频一区国模私拍| 91蝌蚪精品视频| 日韩久久久久久久| 你懂的成人av| 毛片av免费在线观看| 国内精品久久久久影院一蜜桃| 北岛玲一区二区| 国产精品福利电影一区二区三区四区| 久久久久亚洲AV| 日本韩国精品一区二区在线观看| www.国产黄色| 国产午夜精品全部视频播放 | 亚洲高清免费观看| 国产在线观看第一页| 精品久久久三级丝袜| wwwxxx在线观看| 2019中文字幕在线免费观看| 亚洲精品66| 欧美日韩精品一区| 欧美私人啪啪vps| 自拍偷拍21p| www激情久久| 国产亚洲精品成人| 欧美日韩国产一区| 精品久久久久一区二区三区| 久久久久久久久久久国产| 亚洲日本在线观看视频| 精品综合久久久| 午夜久久tv| 99九九精品视频| 国产精品网站在线| 亚洲黄网在线观看| 亚洲经典中文字幕| 欧美日韩色网| 亚洲精品欧美日韩| 日韩国产一区二区| 日本三区在线观看| 99精品国产热久久91蜜凸| 欧美成人一区二区三区高清| 欧美性猛片aaaaaaa做受| 欧美偷拍视频| 8050国产精品久久久久久| 超碰精品在线| 在线观看污视频| 精品夜夜嗨av一区二区三区| 欧美波霸videosex极品| 欧美性猛交xxxx乱大交极品| 亚洲 欧美 自拍偷拍| 高清一区二区三区日本久| 精品一区二区三区中文字幕视频| 中国人体摄影一区二区三区| 免费人成在线不卡| 国产小视频自拍| 在线观看视频欧美| 国产高清一区在线观看| 国产精品久久久久av免费| 欧美女王vk| 日韩精品一区中文字幕| 国产欧美一区二区三区网站| 天天爱天天做天天爽| 亚洲天堂男人天堂女人天堂| 成人精品电影在线| 日韩高清在线播放| 日韩av在线免费观看不卡| 蜜桃精品成人影片| 日韩欧美国产高清91| 黄色网址在线播放| 国产精品久久久久99| 日韩毛片视频| 欧美性受xxxxxx黑人xyx性爽| 亚洲欧洲在线观看av| 国产欧美日韩成人| 久久久久国产视频| 琪琪久久久久日韩精品| 熟妇人妻va精品中文字幕| 欧美国产一区视频在线观看| 正在播放亚洲精品| 精品国产美女在线| 日韩精品成人| 自慰无码一区二区三区| 久久先锋资源网| 97av免费视频| 欧美国产中文字幕| 欧美天堂社区| 浓精h攵女乱爱av| 亚洲免费在线视频| 亚洲av成人无码网天堂| 国产精品盗摄久久久| 91亚洲国产成人久久精品| 中文字幕欧美视频| 欧美日韩色婷婷| 一广人看www在线观看免费视频| 亚洲自拍小视频| 国产欧美综合一区二区三区| www.黄色在线| 欧美一卡在线观看| 欧美电影网站| 欧美a级黄色大片| 91视频精品在这里| 91片黄在线观看喷潮| 91精品国产91久久久久久久久| 精品免费视频| 亚洲av毛片在线观看| 欧美日韩国产丝袜美女| 日本三级视频在线观看| 国产精品区一区二区三含羞草| 日本系列欧美系列| 欧美日韩免费做爰视频| 亚洲人成在线观看网站高清| 国产精品亚洲欧美日韩一区在线 | 国产呦精品一区二区三区网站| 久久精品无码人妻| 伊人久久久久久久久久| 在线日韩成人| 无需播放器的av| 性做久久久久久| 久久精品视频观看| 欧美一区二区三区在线免费观看| 国产精品系列在线播放| 国产午夜无码视频在线观看| 久久久久九九九九| 久久久9色精品国产一区二区三区|