精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

特级西西444| 午夜精品久久17c| 亚洲综合欧美在线| 国产人成在线观看| 国产免费a∨片在线观看不卡| 福利写真视频网站在线| 国产激情一区二区三区| 欧洲成人在线观看| 国产成人在线视频| 国产日本欧美在线观看| 久久久久亚洲AV成人无在| 四虎精品永久免费| 午夜av电影一区| 日韩精品欧美一区二区三区| 国产女人高潮的av毛片| 在线午夜精品| 日韩视频免费在线观看| 成人性生活免费看| 91精品亚洲一区在线观看| 精品久久久久久久久久国产| 亚洲精品一区二区三区樱花| 嫩草影院一区二区| 久久99热国产| 日本在线观看天堂男亚洲| 国产精品 欧美激情| 国产成人精品免费视| 亚洲精华国产欧美| 7777精品伊人久久久大香线蕉完整版 | 国产免费成人在线视频| 91成人理论电影| 中国a一片一级一片| 亚洲大片av| 久久精品国产精品亚洲| 欧美做受xxxxxⅹ性视频| 在线综合色站| 91精品婷婷国产综合久久| 欧美一级片中文字幕| 久色国产在线| 亚洲欧美日韩国产综合| 久久亚洲综合网| 亚洲精品国产精品国| 黄页视频在线91| 国产精品www网站| 69国产精品视频免费观看| 亚洲小说区图片区| 欧美成人高清视频| 亚洲怡红院在线观看| 精品久久综合| 在线播放国产精品| 中文字幕网站在线观看| 亚瑟一区二区三区四区| 亚洲激情视频网站| 日本道中文字幕| 大伊香蕉精品在线品播放| 欧美一区二区三区四区视频| 天天操狠狠操夜夜操| 国产成人精品一区二三区在线观看| 狠狠综合久久av一区二区小说| 国产曰肥老太婆无遮挡| 国产白丝在线观看| 亚洲成a人片综合在线| 日本免费a视频| 国产一二三在线| 精品久久久一区| 国产肥臀一区二区福利视频| 妞干网免费在线视频| 欧美午夜www高清视频| www.国产在线视频| 不卡一本毛片| 欧美日韩激情网| 国语对白做受xxxxx在线中国| 韩国久久久久久| 欧美三日本三级三级在线播放| 自拍偷拍21p| 四虎国产精品成人免费影视| 日韩女优毛片在线| 亚洲中文字幕一区| 最新国产精品视频| 日韩一区二区福利| 久久久精品国产sm调教网站| 99精品国产福利在线观看免费| 91大神福利视频在线| 高潮毛片又色又爽免费 | 午夜激情av在线| 国产午夜久久av| 亚洲成人动漫在线播放| 不卡一区二区在线观看| 第四色成人网| 国产做受69高潮| 成人免费视频国产免费| 国产在线不卡一区| 精品国产综合| a天堂中文在线88| 一区二区三区在线视频免费观看| 蜜桃传媒一区二区三区| 日韩高清在线| 亚洲精品在线网站| 日韩福利在线视频| 好看不卡的中文字幕| 欧美在线性视频| 999国产精品视频免费| 99久久综合国产精品| 亚洲人成网站在线播放2019| 毛片在线导航| 欧美日韩卡一卡二| 97香蕉碰碰人妻国产欧美 | 免费观看性欧美大片无片| 精品调教chinesegay| 日本中文在线视频| 久久国产精品久久w女人spa| 亚洲一区久久久| 精品美女视频在线观看免费软件| 亚洲精品第1页| 99视频在线免费| 懂色av一区二区| www.精品av.com| 日韩欧美亚洲国产精品字幕久久久| 久久精品无码一区二区三区| 美女在线一区二区| 欧美日韩成人一区| 午夜男人的天堂| 日韩精品一区二区三区免费观看| 欧美激情第6页| 伊人网中文字幕| 91免费在线看| 欧美无砖专区免费| 91成人精品观看| 免费观看在线综合| 欧美一级淫片videoshd| 草草视频在线播放| 国产在线观看免费av| 国内成人在线| 成人免费网站在线观看| 风间由美一区| 色综合久久九月婷婷色综合| 国产婷婷在线观看| 国产在线不卡| 91视频免费在线| av电影在线播放高清免费观看| 色呦呦国产精品| 国产国语性生话播放| 一区视频在线看| 国产精品区一区二区三在线播放| 黄色网在线免费看| 91精品在线免费观看| 99热在线观看精品| 久久精品国产99| 一级特黄录像免费播放全99| 成人精品高清在线视频| 一区二区福利视频| 国产69精品久久久| 久久久久亚洲av无码专区桃色| 欧美日韩三级电影在线| 亚洲影院高清在线| 国产三区视频在线观看| 91麻豆精品国产91久久久久久久久 | 精品久久久久久无| 久久久久久久久久99| av网站在线播放| 成人视屏免费看| 日韩黄色片在线| 动漫3d精品一区二区三区乱码| 九九热最新视频//这里只有精品 | 精品一区二区av| 亚洲欧美日韩在线综合| 成人午夜亚洲| 久久综合色88| 亚洲av无码一区二区三区dv| 亚洲国产精品一区二区尤物区| 丰满少妇xbxb毛片日本| 99香蕉国产精品偷在线观看| 久久人人97超碰人人澡爱香蕉| 不卡一二三区| 国产一区二区在线观看免费| 欧美精品高清视频| 精品无码国产污污污免费网站 | 久久免费精品视频| 五月婷婷在线观看视频| 91黄色免费看| 免费中文字幕日韩| 成人免费毛片片v| 亚洲自偷自拍熟女另类| 欧美日韩黑人| 91青青草免费在线看| 岛国av在线网站| 亚洲香蕉成视频在线观看| 国产一区二区在线播放视频| 亚洲黄色免费电影| av无码av天天av天天爽| 美国美女黄色片| 亚洲欧美综合久久久| 国产精品一 二 三| 91精品论坛| 久久中文字幕一区| 每日更新在线观看av| 欧美精品123区| 自拍偷拍欧美亚洲| 国产精品乱码妇女bbbb| 国产精品日日摸夜夜爽| 日韩va欧美va亚洲va久久| 8x8x华人在线| 国产精品美女久久久久久不卡| 91九色视频在线| 一个人www视频在线免费观看| 日韩中文在线视频| 性xxxx视频| 日韩午夜激情av| 99re热视频| 天天影视涩香欲综合网| 成年人免费视频播放| 不卡视频在线看| 国产女同无遮挡互慰高潮91| 国产亚洲一区在线| 日韩一级片一区二区| 国产一区二区亚洲| 国产一区二区不卡视频在线观看| 另类一区二区三区| 国产69久久精品成人看| 天堂8中文在线| 在线观看精品自拍私拍| 婷婷综合激情网| 欧美一区二区在线观看| 丰满人妻一区二区三区四区| 成人av网站免费观看| 欧美激情久久久久| 国产精品无码2021在线观看| 亚洲成人xxx| 国产视频手机在线| 欧美日韩在线直播| 潘金莲一级淫片aaaaaa播放| 久久影院一区| 国产精品亚洲综合天堂夜夜| 国产在线美女| 欧美日韩国产999| 麻豆免费在线视频| 自拍偷拍亚洲一区| 黄色软件在线| 精品亚洲va在线va天堂资源站| 亚洲产国偷v产偷v自拍涩爱| 91精品黄色片免费大全| 日韩精品第一页| 亚洲精品久久久久久久久久| 欧美精品v日韩精品v韩国精品v| 免费黄色小视频在线观看| 精品毛片三在线观看| 日产电影一区二区三区| 亚洲综合区在线| 日本青青草视频| 亚洲图片激情小说| 国产精品夜夜夜爽阿娇| 中文字幕一区二区三区不卡| 国产91在线播放九色| 国产精品对白交换视频| av在线免费播放网址| 亚洲伦在线观看| 免费视频网站www| 亚洲一区中文日韩| 日韩高清免费av| 欧美日韩一二三四五区| www.色国产| 在线观看国产91| 亚洲中文字幕在线观看| 91精品国产麻豆| 亚洲免费成人网| 亚洲国产高清高潮精品美女| 亚洲aⅴ在线观看| 亚洲区免费影片| 137大胆人体在线观看| 日韩视频欧美视频| 色呦呦在线资源| 91精品国产成人www| 伊人久久精品一区二区三区| 国产精品91久久| 99综合99| 国产精品一区二区a| 香蕉久久精品| 亚洲精品免费在线看| 最新欧美人z0oozo0| 久久视频这里有精品| 日日夜夜精品视频天天综合网| 亚洲高清免费在线观看| 国产一区二区免费视频| 国产极品一区二区| 国产调教视频一区| 国产盗摄x88av| 欧美日韩国产色| 夜夜爽8888| 亚洲第一精品福利| 大胆av不用播放器在线播放| 欧美精品手机在线| 欧美www.| 91成人免费看| 国产精品手机在线播放 | 制服丝袜中文字幕第一页| 国产尤物视频在线| 综合中文字幕亚洲| 日韩成人一区二区三区| 欧美性色黄大片手机版| 国产色综合视频| 99久久伊人| 国内精品视频一区| jizz欧美| 国产三区精品| 国产精品久久久久久影院8一贰佰| 无码人妻精品一区二区蜜桃网站| 免费亚洲网站| 少妇极品熟妇人妻无码| 国产欧美视频一区二区| 国产真实夫妇交换视频| 欧美日韩另类一区| 少妇激情av一区二区| 欧美精品在线视频观看| 深夜视频一区二区| 久久草.com| 欧美精品99| 久热精品在线观看视频| 91丨九色丨国产丨porny| 超碰在线国产97| 在线观看亚洲一区| 天堂在线中文资源| 欧美激情亚洲自拍| 91麻豆精品| 亚洲人成人77777线观看| 久久福利影视| 国产人妻人伦精品1国产丝袜| 亚洲日本欧美天堂| 国产精品露脸视频| 亚洲美女久久久| 18aaaa精品欧美大片h| 亚洲www视频| 色喇叭免费久久综合网| 免费激情视频在线观看| av午夜一区麻豆| 国产精品18p| 日韩精品中午字幕| sm国产在线调教视频| 国产在线观看不卡| 色综合久久一区二区三区| 日韩免费高清在线| 久久在线观看免费| 中文字幕超碰在线| 精品亚洲aⅴ在线观看| 岛国在线视频网站| 欧美极品欧美精品欧美视频| 国产在成人精品线拍偷自揄拍| 亚洲区一区二区| 亚洲人免费短视频| 亚洲成人精品久久久| 日韩欧美亚洲视频| 精品日本一线二线三线不卡| 亚洲熟妇av乱码在线观看| 成人3d精品动漫精品一二三| 欧美色网一区二区| 亚洲婷婷久久综合| 亚洲女在线观看| 国产精品迅雷| 欧美一二三区| 青青草97国产精品免费观看 | 国产在线不卡一区二区三区| 一区二区三区四区欧美日韩| 久久国产欧美日韩精品| 秋霞欧美一区二区三区视频免费| 欧美日本一区二区在线观看| 日本成人在线播放| 成人性生交大片免费看视频直播| 久久精品青草| 中文字幕永久免费| 午夜视频在线观看一区| 欧美日韩影视| 国产精品久久久久福利| 国产精品不卡| www.四虎精品| 色综合久久天天| 午夜在线视频| 成人在线观看av| 亚洲激情亚洲| 免费人成又黄又爽又色| 欧美男男青年gay1069videost | 日本成人动漫在线观看| 555www成人网| 日韩av自拍| 师生出轨h灌满了1v1| 亚洲va欧美va人人爽| 国产污视频在线| 1卡2卡3卡精品视频| 99国产精品视频免费观看一公开| 婷婷色一区二区三区| 91精品国产aⅴ一区二区| 久久久男人天堂| 亚洲欧洲一二三| 成人国产在线观看| 乱子伦一区二区三区| 欧美精品在线第一页| 欧美a级网站| 992tv人人草| 日韩欧美a级成人黄色| 成人欧美在线| 热re99久久精品国99热蜜月| 国产麻豆欧美日韩一区| 久久夜色精品国产噜噜亚洲av|