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

Corona SDK游戲開發實例(二):物理效果與互動操作

譯文
移動開發 Android iOS 移動應用 游戲開發
在本系列指導教程中,我們共同來學習如何創建一款平衡球類游戲。這款游戲的目標是保持小球平衡、避開各種障礙物并最終到達終點。簡單的小游戲,咱們馬上進入正題!

[[90110]]教程說明

  • 技術工具: Corona SDK
  • 執行難度: 普通
  • 操作時間: 30 到60分鐘

書接上文

在本系列文章的前編中,我們了解了平衡球小游戲的基本概念并創建出基礎用戶界面。在后編中,我們將共同完成基礎物理效果創建、游戲互動性編寫等工作,并最終制作出能夠給用戶帶來樂趣的應用成品。

步驟二十九: 添加物理效果

為游戲中的各個圖形元素分配物理屬性,要注意靜態元素是不能移動的。另外還要檢查玩家操控的小球與陷阱洞的半徑,這些元素必須聲明使用圓形物理屬性而不能用一般的方形,這樣會提高物理碰撞效果、提高游戲性。

  1. -- Add Physics to GFX  
  2.  
  3. physics.addBody(left, 'static'
  4. physics.addBody(right, 'static'
  5. physics.addBody(top, 'static'
  6. physics.addBody(bottom, 'static')  
  7.  
  8. physics.addBody(b1, 'static'
  9. physics.addBody(b2, 'static'
  10. physics.addBody(b3, 'static'
  11. physics.addBody(b4, 'static')  
  12.  
  13. physics.addBody(h1, 'static', {radius = 15}) 
  14. physics.addBody(h2, 'static', {radius = 15}) 
  15. physics.addBody(h3, 'static', {radius = 15}) 
  16. physics.addBody(h4, 'static', {radius = 15}) 
  17. physics.addBody(h5, 'static', {radius = 15}) 
  18.   
  19. physics.addBody(player, {radius = 14}) 
  20. physics.addBody(goal, 'static', {radius = 15}) 

步驟三十: 將陷阱小洞設置為感應器

由于作為陷阱的小洞本身不會產生物理碰撞效果,因此我們只要為其設置接觸感應器即可。

  1. -- Set Holes as Sensors      
  2.  
  3.     h1.isSensor = true 
  4.     h2.isSensor = true 
  5.     h3.isSensor = true 
  6.     h4.isSensor = true 
  7.     h5.isSensor = true      
  8.  
  9.     --gameListeners('add'
  10. end 

步驟三十一: 代碼審查

以下列出的是本教程所提到全部代碼綱要,大家可以從宏觀角度對作品進行核查,確定所有要素都已經包含在程序成品當中:

  1. -- Teeter like Game 
  2.  
  3. -- Developed by Carlos Yanez 
  4.  
  5.   
  6.  
  7. -- Hide Status Bar 
  8.  
  9.   
  10.  
  11. display.setStatusBar(display.HiddenStatusBar) 
  12.  
  13.   
  14.  
  15. -- Physics 
  16.  
  17.   
  18.  
  19. local physics = require('physics'
  20.  
  21. physics.start() 
  22.  
  23. physics.setGravity(0, 0) 
  24.  
  25.   
  26.  
  27. -- Graphics 
  28.  
  29.   
  30.  
  31. -- [Background] 
  32.  
  33.   
  34.  
  35. local bg = display.newImage('bg.png'
  36.  
  37.   
  38.  
  39. -- [Title View] 
  40.  
  41.   
  42.  
  43. local titleBg 
  44.  
  45. local playBtn 
  46.  
  47. local creditsBtn 
  48.  
  49. local titleView 
  50.  
  51.   
  52.  
  53. -- [Credits] 
  54.  
  55.   
  56.  
  57. local creditsView 
  58.  
  59.   
  60.  
  61. -- [Player] 
  62.  
  63.   
  64.  
  65. local player 
  66.  
  67.   
  68.  
  69. -- [Bars Table] 
  70.  
  71.   
  72.  
  73. local bars = {} 
  74.  
  75.   
  76.  
  77. -- [Holes Table] 
  78.  
  79.   
  80.  
  81. local holes = {} 
  82.  
  83.   
  84.  
  85. -- [Goal] 
  86.  
  87.   
  88.  
  89. local goal 
  90.  
  91.   
  92.  
  93. -- Sounds 
  94.  
  95.   
  96.  
  97. local bell = audio.loadSound('bell.caf'
  98.  
  99. local buzz = audio.loadSound('buzz.caf'
  100.  
  101.   
  102.  
  103. -- Functions 
  104.  
  105.   
  106.  
  107. local Main = {} 
  108.  
  109. local startButtonListeners = {} 
  110.  
  111. local showCredits = {} 
  112.  
  113. local hideCredits = {} 
  114.  
  115. local showGameView = {} 
  116.  
  117. local gameListeners = {} 
  118.  
  119. local movePlayer = {} 
  120.  
  121. local onCollision = {} 
  122.  
  123. local alert = {} 
  124.  
  125. local dragPaddle = {} 
  126.  
  127.   
  128.  
  129. -- Main Function 
  130.  
  131.   
  132.  
  133. function Main() 
  134.  
  135.     titleBg = display.newImage('titleBg.png'
  136.  
  137.     playBtn = display.newImage('playBtn.png', display.contentCenterX - 35.5, display.contentCenterY + 10) 
  138.  
  139.     creditsBtn = display.newImage('creditsBtn.png', display.contentCenterX - 50.5, display.contentCenterY + 65) 
  140.  
  141.     titleView = display.newGroup(titleBg, playBtn, creditsBtn) 
  142.  
  143.       
  144.  
  145.     startButtonListeners('add'
  146.  
  147. end 
  148.  
  149.   
  150.  
  151. function startButtonListeners(action) 
  152.  
  153.     if(action == 'add') then 
  154.  
  155.         playBtn:addEventListener('tap', showGameView) 
  156.  
  157.         creditsBtn:addEventListener('tap', showCredits) 
  158.  
  159.     else 
  160.  
  161.         playBtn:removeEventListener('tap', showGameView) 
  162.  
  163.         creditsBtn:removeEventListener('tap', showCredits) 
  164.  
  165.     end 
  166.  
  167. end 
  168.  
  169.   
  170.  
  171. function showCredits:tap(e) 
  172.  
  173.     playBtn.isVisible = false 
  174.  
  175.     creditsBtn.isVisible = false 
  176.  
  177.     creditsView = display.newImage('credits.png', 0, display.contentHeight+40) 
  178.  
  179.     transition.to(creditsView, {time = 300, y = display.contentHeight-20, onComplete = function() creditsView:addEventListener('tap', hideCredits) end}) 
  180.  
  181. end 
  182.  
  183.   
  184.  
  185. function hideCredits:tap(e) 
  186.  
  187.     playBtn.isVisible = true 
  188.  
  189.     creditsBtn.isVisible = true 
  190.  
  191.     transition.to(creditsView, {time = 300, y = display.contentHeight+creditsView.height, onComplete = function() creditsView:removeEventListener('tap', hideCredits) display.remove(creditsView) creditsView = nil end}) 
  192.  
  193. end 
  194.  
  195.   
  196.  
  197. function showGameView:tap(e) 
  198.  
  199.     transition.to(titleView, {time = 300, x = -titleView.height, onComplete = function() startButtonListeners('rmv') display.remove(titleView) titleView = nil end}) 
  200.  
  201.       
  202.  
  203.     -- [Add GFX] 
  204.  
  205.       
  206.  
  207.     -- Goal 
  208.  
  209.       
  210.  
  211.     goal = display.newImage('goal.png'
  212.  
  213.     goal.x = 439 
  214.  
  215.     goal.y = 31 
  216.  
  217.     goal.name = 'g' 
  218.  
  219.       
  220.  
  221.     -- Walls 
  222.  
  223.       
  224.  
  225.     local left = display.newLine(-1, 0, -1, display.contentHeight) 
  226.  
  227.     local right = display.newLine(display.contentWidth+1, 0, display.contentWidth+1, display.contentHeight) 
  228.  
  229.     local top = display.newLine(0, -3, display.contentWidth, -3) 
  230.  
  231.     local bottom = display.newLine(0, display.contentHeight, display.contentWidth, display.contentHeight) 
  232.  
  233.       
  234.  
  235.     -- Bars 
  236.  
  237.       
  238.  
  239.     local b1 = display.newImage('bar.png', 92, 67) 
  240.  
  241.     local b2 = display.newImage('bar.png', 192, -2) 
  242.  
  243.     local b3 = display.newImage('bar.png', 287, 67) 
  244.  
  245.     local b4 = display.newImage('bar.png', 387, -2) 
  246.  
  247.       
  248.  
  249.     -- Holes 
  250.  
  251.       
  252.  
  253.     local h1 = display.newImage('hole.png', 62, 76) 
  254.  
  255.     local h2 = display.newImage('hole.png', 124, 284) 
  256.  
  257.     local h3 = display.newImage('hole.png', 223, 224) 
  258.  
  259.     local h4 = display.newImage('hole.png', 356, 114) 
  260.  
  261.     local h5 = display.newImage('hole.png', 380, 256) 
  262.  
  263.       
  264.  
  265.     h1.name = 'h' 
  266.  
  267.     h2.name = 'h' 
  268.  
  269.     h3.name = 'h' 
  270.  
  271.     h4.name = 'h' 
  272.  
  273.     h5.name = 'h' 
  274.  
  275.       
  276.  
  277.     -- Player 
  278.  
  279.       
  280.  
  281.     player = display.newImage('player.png'
  282.  
  283.     player.x = 49 
  284.  
  285.     player.y = 288 
  286.  
  287.     player:setReferencePoint(display.CenterReferencePoint) 
  288.  
  289.       
  290.  
  291.     -- Add Physics to GFX 
  292.  
  293.       
  294.  
  295.     physics.addBody(left, 'static'
  296.  
  297.     physics.addBody(right, 'static'
  298.  
  299.     physics.addBody(top, 'static'
  300.  
  301.     physics.addBody(bottom, 'static'
  302.  
  303.       
  304.  
  305.     physics.addBody(b1, 'static'
  306.  
  307.     physics.addBody(b2, 'static'
  308.  
  309.     physics.addBody(b3, 'static'
  310.  
  311.     physics.addBody(b4, 'static'
  312.  
  313.       
  314.  
  315.     physics.addBody(h1, 'static', {radius = 15}) 
  316.  
  317.     physics.addBody(h2, 'static', {radius = 15}) 
  318.  
  319.     physics.addBody(h3, 'static', {radius = 15}) 
  320.  
  321.     physics.addBody(h4, 'static', {radius = 15}) 
  322.  
  323.     physics.addBody(h5, 'static', {radius = 15}) 
  324.  
  325.       
  326.  
  327.     physics.addBody(player, {radius = 14}) 
  328.  
  329.     physics.addBody(goal, 'static', {radius = 15}) 
  330.  
  331.       
  332.  
  333.     -- Set Holes as Sensors 
  334.  
  335.       
  336.  
  337.     h1.isSensor = true 
  338.  
  339.     h2.isSensor = true 
  340.  
  341.     h3.isSensor = true 
  342.  
  343.     h4.isSensor = true 
  344.  
  345.     h5.isSensor = true 
  346.  
  347.       
  348.  
  349.     gameListeners('add'
  350.  
  351. end 

步驟三十二: 游戲監聽器

下列代碼的作用是為應用程序添加重力加速及物理碰撞監聽器。代碼還能通過遞交參數來移除這些效果。

  1. function gameListeners(action) 
  2.  
  3.     if(action == 'add') then 
  4.  
  5.         Runtime:addEventListener('accelerometer', movePlayer) 
  6.  
  7.         player:addEventListener('collision', onCollision) 
  8.  
  9.         player:addEventListener('touch', dragPaddle) 
  10.  
  11.     else 
  12.  
  13.         Runtime:removeEventListener('accelerometer', movePlayer) 
  14.  
  15.         player:removeEventListener('collision', onCollision) 
  16.  
  17.         player:removeEventListener('touch', dragPaddle) 
  18.  
  19.     end 
  20.  
  21. end 

步驟三十三: 移動小球

以下函數用來捕捉物理加速值,并根據結果給小球的X及Y屬性賦值。

  1. function movePlayer:accelerometer(e) 
  2.  
  3.     player.x = player.x + (e.yGravity*-15) 
  4.  
  5.     player.y = player.y + (e.xGravity*-15) 
  6.  
  7. end 

步驟三十四: 物理碰撞

當小球與其它對象發生碰撞時,其名稱會與觸碰對象相比照。根據對象類型的不同(陷阱小洞及目的地),游戲會給出不同的提示信息。

  1. function onCollision(e) 
  2.  
  3.     if(e.other.name == 'h') then 
  4.  
  5.         alert() 
  6.  
  7.     elseif(e.other.name == 'g') then 
  8.  
  9.         alert('win'
  10.  
  11.     end 
  12.  
  13. end 

步驟三十五: 提示信息

提示信息被觸發時,游戲中的所有監聽器都會被移除,并在播放音效的同時顯示正確的文本內容。

  1. function alert(action) 
  2.  
  3.     local alert 
  4.  
  5.       
  6.  
  7.     gameListeners('rmv'
  8.  
  9.       
  10.  
  11.     if(action == 'win') then 
  12.  
  13.         alert = display.newImage('complete.png'
  14.  
  15.         alert.x = display.contentCenterX 
  16.  
  17.         alert.y = display.contentCenterY 
  18.  
  19.         transition.from(alert, {time = 300, xScale = 0.3, yScale = 0.3}) 
  20.  
  21.         audio.play(bell) 
  22.  
  23.     else 
  24.  
  25.         alert = display.newImage('gameOver.png'
  26.  
  27.         alert.x = display.contentCenterX 
  28.  
  29.         alert.y = display.contentCenterY 
  30.  
  31.         transition.from(alert, {time = 300, xScale = 0.3, yScale = 0.3}) 
  32.  
  33.         audio.play(buzz) 
  34.  
  35.     end 
  36.  
  37. end 

步驟三十六: 模擬移動

這一步純屬建議,大家可以將下列代表添加進來,借以在模擬環境下拖動小球,觀察移動方式是否與預期相符。

  1. function dragPaddle(e) 
  2.  
  3.     if(e.phase == 'began') then 
  4.  
  5.         lastY = e.y - player.y 
  6.  
  7.         lastX = e.x - player.x 
  8.  
  9.     elseif(e.phase == 'moved') then 
  10.  
  11.         player.y = e.y - lastY 
  12.  
  13.         player.x = e.x- lastX 
  14.  
  15.     end 
  16.  
  17. end 

步驟三十七: 調用Main函數

為了在應用啟動時進行初始化,我們需要調用Main函數。上述代碼編寫完成之后,我們只需編輯以下內容即可實現初始化需求:

  1. Main() 

步驟三十八: 載入界面

[[90111]]

當我們啟動指南針應用時,iOS系統會逐項載入基本數據,這時Default.png文件將作為背景圖案顯示在主屏幕當中。將這張圖片保存到我們的項目資源文件夾中,這樣它就會被自動添加到Corona的編譯器中。

步驟三十九: 圖標

[[90110]]

現在大家的做圖功力就該派上用場了,快為自己的應用打造一款美觀又令人印象深刻的圖標吧。在非視網膜屏的iPhone設備上,圖標文件的尺寸應為57x57像素,而視網膜屏則需要114x114像素,另外我們還需要為iTunes軟件商店打造一個512x512的大版圖形。我建議大家先以512x512像素為基準設計,然后再縮小成其它兩種尺寸。

大家沒必要在圖標制作方面過分投入精力,制作圓角或者添加半透明特效完全是種花蛇添足——因為iTunes與iPhone會自動為你實現這些效果。

步驟四十: 在模擬環境下進行測試

是時候進行最終測試了。打開Corona模擬器,選擇我們的項目文件夾并點擊“打開”。如果一切都依照預期效果順利運行,那么我們就可以著手做***一項工作了。

步驟四十一: 創建

在Corona模擬器中,點選文件選項下的創建項并選擇目標設備平臺。在對話框中輸入項目數據并點擊創建按鈕。等上幾秒,我們的應用作品就大功告成啦!接下來大家可以在設備上進行實機測試,或者直接將應用發布到軟件商店中。

總結

后期測試總是越多越好,當我們對自己的應用作品詳加打磨后,發行用戶版吧——這也許會成為輝煌成功的***步!

希望這篇指南文章能夠幫助大家在移動開發的道路上越走越好,感謝朋友們的支持!

 

原文鏈接:

http://mobile.tutsplus.com/tutorials/corona/corona-sdk-create-a-teeter-like-game-physics-and-interaction/

責任編輯:佚名 來源: 51CTO.com
相關推薦

2012-08-09 08:49:30

CoronaCorona SDKCorona SDK游

2012-12-13 13:27:29

Corona SDK

2012-12-13 09:20:55

Corona 2.0Corona SDK下

2013-04-27 16:14:33

Corona

2012-12-13 10:55:25

CoronaCorona SDK

2011-07-08 14:04:40

LuaCorona

2013-08-01 14:03:49

JavaScript

2012-03-06 08:47:40

Corona

2012-07-12 17:10:40

頑石互動吳剛迭代開發

2013-05-20 15:42:22

2011-07-27 17:07:06

iPhone 游戲 Cocos2d

2011-04-25 14:45:38

2011-07-22 18:20:04

IOS View 動畫

2020-12-28 06:29:31

Bash互動游戲Linux

2012-08-07 09:20:48

CoronaCorona SDKCorona SDK指

2009-06-05 09:24:53

struts標簽jsp

2011-12-31 21:28:33

2011-07-11 09:58:52

2013-05-21 11:26:49

Android游戲開發Sensor感應

2013-12-12 15:53:00

移動廣告移動游戲互動游戲
點贊
收藏

51CTO技術棧公眾號

国产一区二区四区| 国产在线拍偷自揄拍精品| 成熟妇人a片免费看网站| 国产网站在线| 国产精品欧美综合在线| 成人妇女淫片aaaa视频| 日韩免费一二三区| av中字幕久久| 精品国内片67194| 日韩欧美xxxx| 深夜国产在线播放| 久久先锋影音av| 91九色单男在线观看| 国产午夜久久久| 日韩精品2区| 亚洲激情视频在线观看| 麻豆三级在线观看| 97蜜桃久久| 亚洲欧美一区二区三区久本道91| 国产一区二区三区av在线| 最好看的日本字幕mv视频大全| 欧美一区激情| 伊人亚洲福利一区二区三区| 亚洲一区二区三区三州| 亚洲播播91| 一区二区三区精品视频| 三区精品视频观看| 手机看片福利在线| 国产综合色视频| 国产精品高潮呻吟视频| 日本三级黄色大片| 91精品久久久久久久久久不卡| 亚洲精品美女久久久| 中文字幕亚洲影院| 欧美xnxx| 色综合久久中文字幕综合网| 欧美国产综合在线| 男人资源在线播放| 国产欧美一区二区精品久导航 | 亚洲最新视频在线| 永久免费未满蜜桃| 久久精品九色| 欧美精品久久天天躁| 国产一区视频免费观看| 美女91在线看| 亚洲国产成人av好男人在线观看| 超碰97免费观看| 女女色综合影院| 中文字幕在线一区| 亚洲精品成人三区| 黄色片在线免费看| 久久久九九九九| 久久久福利视频| 天天操天天操天天| 成人av免费网站| 国产欧美一区二区三区不卡高清| 亚洲av无码片一区二区三区| 国产一区二区三区国产| 成人做爽爽免费视频| 亚洲手机在线观看| 精品亚洲成a人| 成人精品福利视频| av av片在线看| 国产高清不卡一区二区| 91视频99| 免费看日韩av| 97se亚洲国产综合在线| 鲁丝片一区二区三区| 日本福利在线观看| 国产丝袜在线精品| 亚洲精品一区二区三区蜜桃久| a天堂中文在线| 日韩一区有码在线| 日韩一级片一区二区| 黄网在线免费看| 亚洲大片一区二区三区| 欧美国产亚洲一区| 欧美精品高清| 欧美美女视频在线观看| 特级西西444www| 中文字幕日韩在线| 日韩精品视频观看| 国产123在线| 亚洲成人精品| 国语自产精品视频在线看一大j8 | av日韩国产| 都市激情亚洲色图| 亚洲少妇久久久| 激情视频亚洲| 日韩精品在线第一页| 午夜影院黄色片| 综合激情一区| 欧美一级免费视频| 亚洲天堂avav| av激情综合网| 亚洲精品乱码久久久久久蜜桃91| 污污在线观看| 日本电影亚洲天堂一区| 亚洲天堂国产视频| 精品福利一区| 日韩中文字幕在线| 久久精品性爱视频| 免费看欧美女人艹b| 成人免费看片网址| 黄色电影免费在线看| 亚洲嫩草精品久久| 欧美精品色婷婷五月综合| 四虎国产精品免费久久| 亚洲国产天堂网精品网站| 国产美女永久免费无遮挡| 欧美激情第8页| 国产精品黄色影片导航在线观看| 亚洲av无码国产综合专区| 欧美韩日一区二区三区四区| 日本免费a视频| 亚洲免费看片| 亚洲美女av在线| 免费在线观看一级片| 日韩电影在线一区| 国产伦精品一区二区三区免费视频| 啊v视频在线| 欧美视频精品一区| 少妇献身老头系列| 五月天激情综合网| 国产va免费精品高清在线| 亚洲狼人综合网| 中文字幕欧美一区| 9久久婷婷国产综合精品性色| 国产精品成人自拍| 欧美成人免费全部观看天天性色| 少妇无套内谢久久久久| 91麻豆文化传媒在线观看| 久久久久久久免费视频| 久久99久久久精品欧美| 尤物九九久久国产精品的分类 | 国产一区在线免费观看| 国产一二三区在线观看| 欧美午夜精品久久久久久超碰 | 性刺激的欧美三级视频| 天天做夜夜做人人爱精品 | 国产91丝袜在线观看| 亚洲欧美日韩综合一区| 日韩精品影院| 亚洲免费一在线| 国产精品视频免费播放| 成av人片一区二区| 日韩欧美精品免费| 91精品尤物| 欧美黄色免费网站| 亚洲av无码专区在线| 一区二区三区在线观看欧美| 久久久福利影院| 欧美有码视频| 97人人模人人爽人人喊38tv| 最新超碰在线| 欧美成人aa大片| 精品少妇久久久久久888优播| 国产精品一区免费在线观看| 欧美乱做爰xxxⅹ久久久| 久久亚洲精精品中文字幕| 欧美理论片在线观看| 亚洲第九十九页| 午夜伦欧美伦电影理论片| 久久性爱视频网站| av不卡在线| 欧洲精品久久| 国产精品亚洲成在人线| 精品国偷自产在线视频99| 国产强伦人妻毛片| 亚洲愉拍自拍另类高清精品| xxxxxx黄色| 久久久夜精品| 中文字幕一区二区三区有限公司| 国产一区 二区| 午夜精品一区二区三区视频免费看 | 日本理论中文字幕| 久久99久久精品欧美| 欧美 国产 精品| 波多野结衣一区二区三区免费视频| 欧美激情亚洲自拍| 精品一二三区视频| 欧美日韩国产美| 久久国产一级片| 久久精品一区蜜桃臀影院| 国产又大又黄又猛| 欧美久久九九| 久久综合入口| 伊人久久大香伊蕉在人线观看热v 伊人久久大香线蕉综合影院首页 伊人久久大香 | 91亚洲男人天堂| 国产高清视频网站| 黄色成人在线网站| 天堂√在线观看一区二区| 日韩08精品| 欧洲一区二区视频| 免费在线看黄| 亚洲级视频在线观看免费1级| 最近中文字幕在线视频| 亚洲综合在线第一页| 中国女人特级毛片| 风间由美性色一区二区三区| 国产免费人做人爱午夜视频| 综合激情一区| 天堂√在线观看一区二区| 成人春色在线观看免费网站| 国产福利精品视频| av在线加勒比| 久热精品视频在线| 久久精品国产亚洲a∨麻豆| 91精品国产综合久久福利| 天堂网中文字幕| 一区二区三区精品视频在线| 天天躁夜夜躁狠狠是什么心态| 国产ts人妖一区二区| www.xxx亚洲| 在线观看日韩av电影| 国产卡一卡二在线| 欧美最新另类人妖| 精品无人乱码一区二区三区的优势 | 91国产成人在线| 日韩欧美三级在线观看| 中文字幕日本不卡| 日本理论中文字幕| 久久免费视频色| 少妇被狂c下部羞羞漫画| 国产综合色精品一区二区三区| 91淫黄看大片| 亚洲欧美日韩精品一区二区| 999一区二区三区| 91精品91| 中国成人亚色综合网站| 日本不卡高清| 日韩精品第一页| 小说区图片区色综合区| 国产精品入口免费| 欧美一级大片在线视频| 成人动漫网站在线观看| 国产一区二区主播在线| 日本国产欧美一区二区三区| 免费成人在线电影| 欧美高清视频在线播放| a在线免费观看| 精品国产一区二区三区久久久狼 | 欧美一区二区视频97| 成人av影院在线观看| 欧美成年人视频网站| 99在线播放| 欧美国产高跟鞋裸体秀xxxhd| 羞羞的视频在线看| 久久99热精品这里久久精品| av网址在线播放| 欧美国产精品va在线观看| 四虎影视国产在线视频| 色综合男人天堂| 污污的网站在线免费观看| 色综合久久久888| 久久免费电影| 国内精品久久影院| 亚洲欧美电影| 国产精品欧美亚洲777777| 色噜噜成人av在线| 亚洲自拍在线观看| 操欧美女人视频| 久久国产精品一区二区三区四区| 丝袜连裤袜欧美激情日韩| 清纯唯美一区二区三区| 激情综合网五月| 中文网丁香综合网| 欧美日本一区二区高清播放视频| www.av毛片| 久久精品主播| 九九九九九国产| 岛国一区二区三区| 日韩av一二区| 中文字幕av在线一区二区三区| 一二三四在线观看视频| 亚洲天堂免费在线观看视频| 国产va在线播放| 精品成人av一区| 免费看av在线| 欧美一区二区三区白人| 亚洲AV第二区国产精品| 国产亚洲精品久久久久动| 欧美私人网站| 国内精品久久久久| 日本综合视频| 99久久综合狠狠综合久久止| 亚洲精品**不卡在线播he| 亚洲欧洲日夜超级视频| 国产一区二区三区自拍| 超碰影院在线观看| 国产99久久精品| 秋霞网一区二区三区| 一区二区欧美在线观看| 亚洲天堂一区在线| 欧美一区二区三区公司| 青青免费在线视频| 不卡av在线网站| 亚洲伦乱视频| 国产精品theporn88| 欧美军人男男激情gay| 欧美视频在线第一页| 日韩高清电影一区| 国产精品麻豆入口| 亚洲特黄一级片| 国产三级精品三级在线观看| 欧美一区二区人人喊爽| 成人免费高清在线播放| 久久免费在线观看| 91麻豆精品国产91久久久更新资源速度超快| 国产女人水真多18毛片18精品 | 亚洲一区二区天堂| 亚洲精品久久久久中文字幕欢迎你 | 中文字幕在线观看欧美| 亚洲国产欧美一区二区丝袜黑人| 91精品国产综合久久久久久豆腐| 97av在线视频| 成人在线tv视频| xxxxxx在线观看| 奇米综合一区二区三区精品视频| 日批在线观看视频| 一区二区三区毛片| 国产裸体无遮挡| 原创国产精品91| 范冰冰一级做a爰片久久毛片| 国产精品一区二| 欧美三区视频| 日本网站在线看| 中文字幕一区二区三区视频| 天天干天天操天天爱| 亚洲精品美女在线| 99热99re6国产在线播放| 电影午夜精品一区二区三区| 91精品一区二区三区综合在线爱| xxxx一级片| 国产午夜精品理论片a级大结局 | 欧美一级在线观看| 亚洲精品传媒| 国产精品一区av| 不卡日本视频| 亚洲三级视频网站| 国产精品欧美极品| 日韩乱码一区二区三区| 亚洲天堂第一页| 免费观看成人性生生活片 | 最新精品国产| 亚洲综合在线一区二区| 亚洲免费在线观看视频| 国产a级免费视频| 欧美黄色片在线观看| 视频一区中文字幕精品| 9色porny| 91在线丨porny丨国产| 亚洲日本视频在线观看| 亚洲视频在线视频| 国产一区精品福利| 中文字幕人成一区| 国产美女精品在线| 欧美日韩成人免费观看| 欧美精品一区二区精品网| 老司机深夜福利在线观看| 精品日本一区二区| 久久精品伊人| 日本少妇aaa| 日韩午夜中文字幕| sm捆绑调教国产免费网站在线观看 | 成人免费一级视频| 91av视频在线| 成人午夜国产| 日批视频在线看| 婷婷综合五月天| 高清av电影在线观看| 国产精品一区二区三| 欧美在线精品一区| 小毛片在线观看| 欧美午夜精品久久久久久孕妇| fc2ppv国产精品久久| 国产在线一区二| 日本不卡的三区四区五区| 日韩一级片大全| 亚洲第一页在线| 99蜜月精品久久91| 欧美久久久久久久久久久久久久| 2021中文字幕一区亚洲| 国产一区二区麻豆| 久久久久久国产| 欧美禁忌电影网| 三上悠亚 电影| 一本大道综合伊人精品热热| 黄色网在线播放| 国产伦精品一区二区三区视频黑人 | 国产无套精品一区二区三区| 欧美日韩中文字幕| 老司机在线永久免费观看| 国产伦精品一区二区三毛| 全部av―极品视觉盛宴亚洲| 精品无码黑人又粗又大又长| 中文字幕精品久久| 国产精品45p| 老司机久久精品| 日韩欧美国产视频|