亚洲有码Av一区二区三区_国产高清啪啪免费视频_69色视频国产_国产成人人人爆出白浆_国产精品自在线拍国_一本久久伊人热热精品无码_午夜性刺激在线看免费带字幕_助力高品质欧美狂喷水_亚洲精品日韩无码_精品无码一区二区三区蜜臀_麻豆高清国产AV_熟妇人素无码中文字幕_亚洲a级片在线观看_国产欧美日韩三区_99国产成人高清在线观看

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運(yùn)營的一線實(shí)戰(zhàn)洞察。

Unity3D實(shí)現(xiàn)VR拋物線傳送:物理公式、軌跡渲染與踩坑實(shí)錄

Unity3D實(shí)現(xiàn)VR拋物線傳送:物理公式、軌跡渲染與踩坑實(shí)錄 做VR項(xiàng)目做到一定階段移動(dòng)方案一定是繞不開的話題。傳送Teleport是VR世界里最成熟的移動(dòng)范式絕大多數(shù)現(xiàn)成方案都是拉一條直線或者弧形射線點(diǎn)哪兒傳哪兒。但如果你想讓“選擇目的地”這個(gè)動(dòng)作本身也有交互樂趣或想讓玩家在游戲里體驗(yàn)“投擲感”拋物線傳送是非常值得做的一種變體。這篇內(nèi)容就圍繞我在VR開發(fā)中用Unity3D實(shí)現(xiàn)拋物線傳送功能的完整過程展開從物理公式推導(dǎo)、軌跡渲染、落點(diǎn)校驗(yàn)到實(shí)際踩坑盡量寫得能直接落地。這個(gè)功能的核心其實(shí)不復(fù)雜按下手柄按鍵從手柄位置拋出一個(gè)帶有初速度的物體讓它受重力影響畫出一道拋物線在軌跡末端生成落點(diǎn)標(biāo)記松開按鍵時(shí)玩家瞬間移動(dòng)到標(biāo)記處。它解決的痛點(diǎn)是傳統(tǒng)直線射線傳送容易顯得廉價(jià)、選擇路徑時(shí)缺少反饋以及部分場(chǎng)景比如要越過矮墻、二層平臺(tái)直線射線夠不著目標(biāo)。本文適合正在做VR交互、想自己實(shí)現(xiàn)傳送而不是無腦套現(xiàn)成插件的人參考也適合對(duì)物理公式在Unity中落地感興趣的開發(fā)者。1. 先說清楚拋物線傳送要解決的三個(gè)問題1.1 為什么不做“點(diǎn)到點(diǎn)”瞬移很多VR項(xiàng)目里“點(diǎn)到點(diǎn)”瞬移是先用一根激光射線瞄準(zhǔn)目標(biāo)點(diǎn)按鍵就傳過去。這種方式最大的問題是它其實(shí)是一個(gè)“一維選擇器”玩家看到的是一條直直的光線它只覆蓋從手柄發(fā)射點(diǎn)向前方直線延伸的視野區(qū)域。如果你要傳送到一個(gè)二層平臺(tái)或者要跨越一堵矮墻直線射線根本選不中目標(biāo)。直線射線在任何遮擋面前都會(huì)直接卡住玩家只好反復(fù)移動(dòng)來尋找合適的發(fā)射角度這種挫敗感在復(fù)雜場(chǎng)景里非常明顯。拋物線就不同因?yàn)槭苤亓τ绊戃壽E天然帶弧線可以“扔”過矮墻落在二層平臺(tái)的邊緣甚至越過某些低矮障礙物落到視野盲區(qū)的后方。它更符合人類“把東西扔過去”的本能認(rèn)知玩家學(xué)起來幾乎零成本。另一個(gè)隱藏原因是反饋豐富度。直線射線傳送玩家只能看到終點(diǎn)的一個(gè)標(biāo)記點(diǎn)軌跡本身沒有太多信息量。但拋物線軌跡上有運(yùn)動(dòng)方向、弧度、速度感這些視覺反饋能幫助玩家估計(jì)落點(diǎn)甚至在游戲里作為解謎機(jī)制比如必須把傳送標(biāo)記拋進(jìn)某個(gè)窗口來用。我當(dāng)時(shí)的項(xiàng)目需求就是需要一個(gè)“能越過障礙物、看起來像扔出去的傳送方式”所以做了拋物線傳送。1.2 三條實(shí)現(xiàn)路線對(duì)比在Unity里做拋物線軌跡行業(yè)內(nèi)常見的其實(shí)有三條路線我在動(dòng)手前也糾結(jié)過路線實(shí)現(xiàn)方式優(yōu)點(diǎn)缺點(diǎn)物理引擎模擬實(shí)例化一個(gè)剛體小球給它初速度和重力讓Unity物理系統(tǒng)自己去跑自然碰撞、落地反彈等行為不用自己寫每幀要實(shí)例化和判銷毀性能開銷大軌跡不確定性高沒法精確預(yù)測(cè)落點(diǎn)純物理公式迭代用拋體運(yùn)動(dòng)公式在腳本里逐幀計(jì)算軌跡點(diǎn)自己判斷碰撞完全確定性強(qiáng)可以提前渲染整條軌跡不依賴物理場(chǎng)景性能可控需要自己寫碰撞檢測(cè)邏輯對(duì)采樣點(diǎn)密度有要求混合式公式算軌跡但落點(diǎn)附近用射線檢測(cè)結(jié)合剛體預(yù)覽球兼顧確定性和碰撞真實(shí)性實(shí)現(xiàn)邏輯更復(fù)雜調(diào)試周期長(zhǎng)我最終選了純物理公式迭代。原因很實(shí)際VR項(xiàng)目對(duì)幀率極度敏感每幀實(shí)例化剛體球那套方案在場(chǎng)景稍大的時(shí)候會(huì)帶來明顯的GC壓力掉幀體驗(yàn)非常糟糕。而純公式方案只需要在Update里循環(huán)幾十次算點(diǎn)坐標(biāo)成本極低而且軌跡完全可預(yù)測(cè)后面做傳送合法性檢測(cè)也方便。1.3 我選“純物理公式”的三個(gè)理由第一個(gè)理由是確定性。物理引擎模擬出來的軌跡受幀率影響不同機(jī)器上落點(diǎn)會(huì)有微小偏差而在VR里玩家對(duì)傳送落點(diǎn)的精準(zhǔn)度容忍度很低偏差一個(gè)腳掌的距離就會(huì)覺得“傳歪了”。公式計(jì)算出來的落點(diǎn)在每一幀都是一樣的只要初始參數(shù)不變結(jié)果就不會(huì)變。第二個(gè)理由是透明可控。物理引擎模擬時(shí)重力、阻尼、碰撞響應(yīng)由Unity內(nèi)部決定我想調(diào)整弧線高度、初速度只能調(diào)Rigidbody參數(shù)調(diào)完經(jīng)常要反復(fù)測(cè)試看效果。純公式路線把這些都變成了腳本里顯式可見的變量速度、角度、采樣間隔、碰撞半徑一目了然后續(xù)做參數(shù)調(diào)優(yōu)非常舒服。第三個(gè)理由也是實(shí)際開發(fā)中遇到的物理引擎路線處理“中途軌跡被擋住”的情況非常死板。剛體碰撞會(huì)直接反彈、減速軌跡形態(tài)不可控而公式路線可以自己決定“碰到障礙物就停住并顯示禁止標(biāo)記”跟傳送語義完全吻合不會(huì)出現(xiàn)一個(gè)滾動(dòng)的小球反彈到莫名其妙的位置。2. VR交互語義從按鍵到拋物線的手感設(shè)計(jì)2.1 交互流程定義拋物線傳送不是一個(gè)單純的“按一下按鈕就完成”的動(dòng)作它其實(shí)包含一個(gè)完整的交互循環(huán)。我最終定義的流程是玩家按住主手柄扳機(jī)Trigger或A鍵此時(shí)手柄前方開始生成拋物線軌跡線。軌跡線實(shí)時(shí)跟隨手柄朝向末端會(huì)顯示一個(gè)半透明圓盤作為落點(diǎn)指示器。玩家保持按住狀態(tài)可以移動(dòng)手柄調(diào)整軌跡弧度和落點(diǎn)。松開按鍵如果落點(diǎn)合法玩家立即瞬移到目標(biāo)點(diǎn)如果落點(diǎn)非法比如撞墻、懸空、超出范圍松手不會(huì)觸發(fā)傳送并給出一個(gè)明顯的“禁止”反饋。如果按住超過3秒視為取消軌跡消失不觸發(fā)傳送。這組流程看起來簡(jiǎn)單但實(shí)際編碼里隱藏了很多細(xì)節(jié)。比如按鍵的“剛按下”和“按住中”要區(qū)分清楚比如從按下到開始生成軌跡需要一個(gè)小延遲我用了0.15秒避免玩家只是無意識(shí)碰了一下扳機(jī)就觸發(fā)預(yù)覽模式也避免點(diǎn)擊式瞬移快速點(diǎn)按即傳被誤判。如果你做的是點(diǎn)擊式傳送流程可以簡(jiǎn)化但“長(zhǎng)按取消”這個(gè)邏輯我還是建議保留因?yàn)閂R里手柄誤觸太常見了。2.2 初速度方向怎么取這是整個(gè)拋物線傳送里手感差異最大的一個(gè)參數(shù)。很多人第一次實(shí)現(xiàn)時(shí)會(huì)直接拿手柄的forward方向作為初速度方向結(jié)果發(fā)現(xiàn)拋物線飛得又平又低多數(shù)落點(diǎn)都在視野近處根本飛不遠(yuǎn)。原因在于玩家的手柄握持姿態(tài)通常是斜向下或水平的forward方向本身就指向水平或偏下。要是直接給一個(gè)10m/s的水平速度重力會(huì)把軌跡迅速壓向地面弧線高度不足越過矮墻變成了一件難事。我的做法是在手柄朝向的基礎(chǔ)上加一個(gè)固定的俯仰補(bǔ)償角。具體來說先取手柄的實(shí)際旋轉(zhuǎn)四元數(shù)然后疊加一個(gè)15度左右的俯仰角即向上抬再作為初速度方向。這個(gè)角度不是一個(gè)最小值你在給參數(shù)表的時(shí)候需要留出開放參數(shù)。實(shí)際測(cè)試中15度到20度之間的體感最平衡——弧線足夠高飛行距離也夠遠(yuǎn)角度太大時(shí)軌跡很長(zhǎng)很飄玩家會(huì)感覺落點(diǎn)不可控。如果想讓手感更好可以進(jìn)一步把初速度方向從“純手柄朝向”改成“手柄位置到玩家頭部朝向的水平投影方向”的插值。也就是說玩家頭往哪看拋物線就更偏向哪邊手柄只負(fù)責(zé)微調(diào)弧線。我當(dāng)時(shí)項(xiàng)目里最終用的就是這個(gè)混合方案初速度方向 頭部朝向的水平投影與手柄朝向的加權(quán)平均權(quán)重分別是0.6和0.4。這個(gè)方案的優(yōu)勢(shì)是玩家不需要大幅度轉(zhuǎn)動(dòng)手腕就能把拋物線導(dǎo)引到自己想看的方向體驗(yàn)上更接近“潛意識(shí)控制”。2.3 防誤觸、冷卻與取消機(jī)制VR里的誤觸比你想的嚴(yán)重得多。別管是手柄握持不穩(wěn)還是玩家在交互中無意識(shí)按動(dòng)只要沒有保護(hù)機(jī)制你就會(huì)看到玩家不停地在場(chǎng)景里亂閃。所以我加了三道保險(xiǎn)。第一道是觸發(fā)閾值。扳機(jī)鍵不是用“按下”判斷而是用“超過0.7的輸入值”判斷抬高觸發(fā)門檻使用觸點(diǎn)式按鍵的則要求按住超過0.15秒才開始進(jìn)入預(yù)覽模式。這一步把無意識(shí)碰觸過濾了大半。第二道是冷卻。傳送完成之后設(shè)置一個(gè)0.8秒的冷卻時(shí)間在這段時(shí)間內(nèi)按住扳機(jī)不會(huì)進(jìn)入預(yù)覽模式。冷卻時(shí)間不宜太長(zhǎng)太長(zhǎng)了影響操作的連續(xù)性不宜太短太短了玩家還沒站穩(wěn)又被傳送一次。0.8秒在多數(shù)場(chǎng)景里已經(jīng)足夠。第三道是取消機(jī)制。按住超過3秒自動(dòng)取消或者玩家可以通過同時(shí)按下另一只手柄的菜單鍵來強(qiáng)行取消。這個(gè)“3秒上限”在調(diào)試時(shí)幫了大忙不然玩家一旦誤按住扳機(jī)就進(jìn)退兩難只能松手瞬移到一個(gè)不想去的地方。3. 軌跡計(jì)算與渲染真·物理公式實(shí)現(xiàn)3.1 拋體運(yùn)動(dòng)公式回顧純公式路線的核心就是這個(gè)高中物理就學(xué)過的位移公式在Unity里寫成向量形式p(t) p0 v0 * t 0.5 * g * t2其中p0是發(fā)射起點(diǎn)位置v0是初速度向量g是重力加速度向量Unity里直接用Physics.gravity就行默認(rèn)是(0, -9.81, 0)t是經(jīng)過的時(shí)間。這個(gè)公式的含義很好理解如果沒有重力物體會(huì)沿初速度方向勻速直線運(yùn)動(dòng)重力則會(huì)讓物體在垂直方向上不斷“下落”。當(dāng)兩個(gè)方向疊加起來就形成了拋物線。在Unity代碼里這個(gè)公式可以直接向量化不需要自己拆x和y分量寫起來反而更直觀。要注意一點(diǎn)Unity的Physics.gravity是可改變的如果你在項(xiàng)目里改過重力設(shè)置這里會(huì)跟著變這其實(shí)是個(gè)好事在某些特殊關(guān)卡里可以調(diào)節(jié)重力制造微重力傳送。如果不想依賴全局設(shè)置就在腳本里寫死一個(gè)重力向量。3.2 軌跡采樣與LineRenderer渲染拿到公式接下來就是把軌跡畫出來。我用的是Unity的LineRenderer組件因?yàn)樗举|(zhì)就是一系列頂點(diǎn)連成的線非常適合畫軌跡。關(guān)鍵是采樣策略。你不能一幀算幾百個(gè)點(diǎn)也沒必要軌跡的平滑度和采樣間隔直接相關(guān)。我最終采用的參數(shù)是采樣間隔0.05秒最多采樣64個(gè)點(diǎn)即最大預(yù)覽時(shí)間3.2秒。在Speed為10m/s、俯仰角15度的條件下水平飛行距離能達(dá)到接近30米對(duì)于VR傳送場(chǎng)景完全夠用。如果你的場(chǎng)景更小可以把采樣間隔拉大點(diǎn)比如0.08秒點(diǎn)少反而更流暢。軌跡的終止條件需要分三種情況處理時(shí)間超過最大采樣時(shí)間水平距離超過設(shè)定的最大傳送距離軌跡碰到了障礙物。前兩種是在循環(huán)里用break跳出第三種需要通過手動(dòng)檢測(cè)碰撞來終止見后面落點(diǎn)檢測(cè)部分。LineRenderer渲染時(shí)頂點(diǎn)數(shù)組我用一個(gè)固定長(zhǎng)度ArrayPool或者直接new一個(gè)Vector3[maxPoints]數(shù)組避免每幀new List的開銷。設(shè)置頂點(diǎn)時(shí)先調(diào)positionCount再逐個(gè)SetPosition最后給LineRenderer設(shè)置一個(gè)漸變的材質(zhì)顏色從發(fā)射點(diǎn)的高亮白色漸變到終點(diǎn)暖黃色這種視覺反饋在VR里非常清晰。3.3 完整示例代碼下面這段代碼是我實(shí)際項(xiàng)目里簡(jiǎn)化后的主邏輯保留了核心框架。它負(fù)責(zé)讀取手柄輸入、計(jì)算軌跡、渲染軌跡、檢測(cè)落點(diǎn)。using UnityEngine; using UnityEngine.XR; public class ParabolaTeleport : MonoBehaviour { [Header(傳送參數(shù))] public float launchSpeed 10f; public float launchAngleCompensation 15f; // 俯仰補(bǔ)償角單位度 public float maxDistance 30f; public float minDistance 1f; public float sampleInterval 0.05f; public int maxPoints 64; public float sphereCastRadius 0.15f; [Header(碰撞層設(shè)置)] public LayerMask groundMask; public LayerMask obstacleMask; public LayerMask teleportBlockMask; [Header(手柄與雷達(dá))] public XRNode handNode XRNode.RightHand; public Transform playerRig; // XRRig的根節(jié)點(diǎn) private LineRenderer line; private Transform marker; // 落點(diǎn)指示器 private bool isPreviewing; private float triggerValue; private float pressStartTime; private Vector3 aimDirection; private Vector3 hitPoint; private bool isValidTeleport; private void Awake() { line GetComponentLineRenderer(); line.positionCount 0; // 這里marker可以是在子物體里預(yù)先放好的一個(gè)圓盤 marker transform.Find(LandingMarker); marker.gameObject.SetActive(false); } private void Update() { var handDevice InputDevices.GetDeviceAtXRNode(handNode); bool triggerDown false; bool triggerUp false; if (handDevice.isValid) { float newValue; handDevice.TryGetFeatureValue(CommonUsages.trigger, out newValue); if (newValue 0.7f triggerValue 0.7f) triggerDown true; if (newValue 0.7f triggerValue 0.7f) triggerUp true; triggerValue newValue; } if (triggerDown Time.time - lastTeleportTime coolDown) { pressStartTime Time.time; isPreviewing true; } if (isPreviewing Time.time - pressStartTime 3f) { // 長(zhǎng)按取消 CancelPreview(); } if (isPreviewing) { UpdatePreview(); } if (triggerUp isPreviewing) { if (isValidTeleport) ExecuteTeleport(); CancelPreview(); } } private void UpdatePreview() { Vector3 origin GetHandPosition(); Vector3 launchDir GetLaunchDirection(); aimDirection Vector3.Lerp(aimDirection, launchDir, 0.2f); Vector3 velocity aimDirection * launchSpeed; Vector3 currentPos origin; int pointCount 0; bool hitObstacle false; Vector3 lastPos origin; for (int i 0; i maxPoints; i) { float t i * sampleInterval; Vector3 point origin velocity * t 0.5f * Physics.gravity * t * t; line.positionCount pointCount; line.SetPosition(i, point); // 水平距離限制 Vector3 horizontal point - origin; horizontal.y 0; if (horizontal.magnitude maxDistance) { hitObstacle true; lastPos point; break; } // 逐段做球形檢測(cè)防止軌跡穿模 if (i 0) { Vector3 direction (point - lastPos).normalized; float distance Vector3.Distance(point, lastPos); if (Physics.SphereCast(lastPos, sphereCastRadius, direction, out RaycastHit hit, distance, obstacleMask)) { point origin velocity * (i * sampleInterval); line.SetPosition(i, point); hitPoint hit.point; hitObstacle true; break; } } lastPos point; } if (pointCount 0) line.positionCount pointCount; // 落點(diǎn)計(jì)算從最后一個(gè)軌跡點(diǎn)向下打射線找地面 Vector3 rayStart line.GetPosition(pointCount - 1); bool foundGround Physics.Raycast(rayStart, Vector3.down, out RaycastHit groundHit, 30f, groundMask); bool validArea IsValidTeleportArea(groundHit.point); isValidTeleport foundGround validArea !hitObstacle; marker.gameObject.SetActive(isValidTeleport); if (isValidTeleport) { marker.position groundHit.point Vector3.up * 0.02f; } // 顏色反饋合法用綠色非法用紅色 line.startColor isValidTeleport ? Color.green : Color.red; line.endColor isValidTeleport ? Color.green : Color.red; } private Vector3 GetHandPosition() { var device InputDevices.GetDeviceAtXRNode(handNode); Vector3 pos; device.TryGetFeatureValue(CommonUsages.devicePosition, out pos); return pos; } private Vector3 GetLaunchDirection() { var device InputDevices.GetDeviceAtXRNode(handNode); Quaternion rot; device.TryGetFeatureValue(CommonUsages.deviceRotation, out rot); // 手柄forward方向 俯仰補(bǔ)償 Vector3 forward rot * Vector3.forward; Quaternion compensation Quaternion.Euler(launchAngleCompensation, 0, 0); return compensation * forward; } }這段代碼包括了輸入讀取、軌跡計(jì)算、碰撞檢測(cè)、落點(diǎn)校驗(yàn)和顏色反饋主體已經(jīng)能跑。但你要注意幾件事GetHandPosition里拿到的坐標(biāo)是手柄追蹤器的世界坐標(biāo)如果你的手柄坐標(biāo)系和玩家根節(jié)點(diǎn)不一致要注意相對(duì)轉(zhuǎn)換GetLaunchDirection里的Vector3.forward要和你手柄模型的實(shí)際朝向一致有些手柄模型建模時(shí)forward方向是反的表現(xiàn)出來就是軌跡往身后飛。3.4 軌跡合法性反饋軌跡顏色反饋我做得比較細(xì)致。合法落點(diǎn)用從綠到白的漸變色非法落點(diǎn)用紅色并降低透明度這樣即使玩家余光掃到也能快速判斷能不能傳送。落點(diǎn)指示器我不用圓盤貼圖而是用一個(gè)半透明淺藍(lán)色圓環(huán)圓環(huán)會(huì)隨地面法線旋轉(zhuǎn)貼在地面上。注意在落點(diǎn)處于斜坡上時(shí)圓環(huán)應(yīng)該貼合斜坡而不是保持水平否則視覺上會(huì)“懸空”或“陷入地里”。除了顏色我還會(huì)在非法落點(diǎn)時(shí)讓指示器閃爍。閃爍頻率在4Hz左右比呼吸燈節(jié)奏快玩家能明確感知“這個(gè)位置不能用”。閃爍的實(shí)現(xiàn)方式是每0.25秒切換一次圓環(huán)的可見性但如果你的項(xiàng)目對(duì)閃爍敏感比如有光敏人群可以改成靜態(tài)紅色圓環(huán)。4. 落點(diǎn)判定與傳送執(zhí)行4.1 落點(diǎn)檢測(cè)與碰撞處理軌跡循環(huán)里我用了SphereCast來判斷“途中是否撞到障礙物”。這里要強(qiáng)調(diào)一下邏輯順序如果軌跡被障礙物擋住那么落點(diǎn)就不能按理想的物理公式終點(diǎn)算而是要以擊中的那個(gè)點(diǎn)作為軌跡末端。代碼里用的方式是在每相鄰兩個(gè)采樣點(diǎn)之間做一次球形檢測(cè)只要途中命中任何障礙物就把當(dāng)前點(diǎn)保留為終點(diǎn)并記錄hitPoint。最后從hitPoint向下打一根射線找地面如果地面在合理范圍內(nèi)且玩家站上去不會(huì)卡住就標(biāo)記為合法落點(diǎn)。這個(gè)“向下打射線”步驟很關(guān)鍵。因?yàn)閽佄锞€的終點(diǎn)只是“軌跡物理飛行能夠到達(dá)的位置”不代表那是一個(gè)人能站的位置。有可能軌跡終點(diǎn)在懸崖外、在半空中、在湖面上所以必須向下尋找到實(shí)體地面。地面射線的長(zhǎng)度我設(shè)為30米因?yàn)樽畲蟮膾佄锞€落點(diǎn)高度差也就這么高太短的射線會(huì)導(dǎo)致高空落點(diǎn)永遠(yuǎn)判為非法。另外SphereCast的半徑要和玩家膠囊體匹配。玩家在VR中通常用一個(gè)膠囊碰撞體表示半徑在0.2米左右。為了確保傳送過去的瞬間不會(huì)卡進(jìn)墻體SphereCast半徑取0.15米對(duì)窄縫的判斷比碰撞體更嚴(yán)格一點(diǎn)寧可錯(cuò)殺一些比較窄的屋檐也不能讓玩家傳進(jìn)去。4.2 傳送前校驗(yàn)清單到了“松開按鍵”的一刻不應(yīng)當(dāng)僅僅檢查軌跡終點(diǎn)下方有地面就傳送。我在執(zhí)行傳送前還會(huì)做四重校驗(yàn)落點(diǎn)是否處于“可傳送區(qū)域”Layer內(nèi)。我會(huì)把所有非傳送平臺(tái)物體都打上teleportBlockMask檢查落點(diǎn)周圍0.25米范圍內(nèi)是否觸碰了這個(gè)Layer觸碰則禁止。落點(diǎn)與玩家當(dāng)前高度差是否超過0.5米或低于-0.5米。VR里玩家可能在小臺(tái)階上允許稍微一點(diǎn)高度差但超過0.5米的落差如果還傳送玩家會(huì)感覺視角瞬間下墜容易產(chǎn)生眩暈。落點(diǎn)周圍是否有玩家站立半徑的碰撞體。用Physics.OverlapCapsule檢測(cè)半徑為0.25米、高度為1.2米的圓柱體區(qū)域。如果該區(qū)域內(nèi)有任何非地面碰撞體禁止傳送。落點(diǎn)是否在可玩邊界內(nèi)。這個(gè)邊界可以是一個(gè)BoundingBox或者一個(gè)圓形半徑防止玩家傳送出場(chǎng)景。每一層校驗(yàn)失敗時(shí)都應(yīng)該有不同的反饋。例如到非法區(qū)域的落點(diǎn)軌跡直接以紅色顯示并閃爍如果只是高度差超過限制軌跡仍然顯示綠色但落點(diǎn)圓環(huán)變暗。這種分級(jí)的反饋?zhàn)屚婕衣龑W(xué)會(huì)哪些落點(diǎn)可以用。4.3 傳送執(zhí)行與防暈細(xì)節(jié)傳送的執(zhí)行其實(shí)就一行代碼把XRRig的位置整體平移到目標(biāo)坐標(biāo)。但這里有幾個(gè)工程化的坑。第一如果你用了CharacterController組件傳送前必須先禁用CharacterController再修改XRRig的position然后重新啟用。不要讓CharacterController在激活狀態(tài)下直接改位置否則它會(huì)和Unity的碰撞檢測(cè)系統(tǒng)產(chǎn)生沖突導(dǎo)致玩家被彈開或者漂移。如果項(xiàng)目用的是Rigidbody加約束也要先把Rigidbody.velocity清零再移動(dòng)位置。第二傳送時(shí)不要改變玩家的旋轉(zhuǎn)方向也不要改變玩家頭部相對(duì)身體的偏移。很多新手實(shí)現(xiàn)傳送時(shí)會(huì)順手把XRRig的rotation設(shè)成落點(diǎn)的面向方向這個(gè)操作在快速轉(zhuǎn)動(dòng)下很容易誘發(fā)頭暈。我的做法是保持rotation不變只改position讓玩家自己轉(zhuǎn)身即可。第三為了減少傳送帶來的視覺跳變我用了一個(gè)簡(jiǎn)單的Canvas黑幕淡入淡出開始傳送前把透明度調(diào)到0.8禁用玩家控制約0.1秒然后移動(dòng)位置并調(diào)回透明。這個(gè)效果不需要復(fù)雜插件一個(gè)ScreenSpaceOverlay的黑色UI就行。有些玩家討厭傳送黑屏但比起瞬間跳圖帶來的眩暈短暫的黑幕其實(shí)更友好。在實(shí)際項(xiàng)目中我讓美術(shù)做了一個(gè)粒子“拖尾”效果在傳送起點(diǎn)和終點(diǎn)各放一個(gè)漣漪配合黑幕反而讓瞬移有了儀式感。5. 常見問題與排查思路5.1 軌跡穿模、落點(diǎn)懸空這是最常見的現(xiàn)象軌跡線明明看起來穿過了墻體LineRenderer卻直接畫到了墻后面或者軌跡末端懸在半空沒有貼到墻面上。絕大多數(shù)原因都是采樣間隔過大。如果你設(shè)sampleInterval為0.1秒那么在初速度10m/s的情況下每?jī)蓚€(gè)軌跡點(diǎn)之間距離有1米1米的間距內(nèi)完全可能跨越一堵薄墻SphereCast檢測(cè)根本碰不到。解決方法是把采樣間隔降到0.03到0.05秒讓每?jī)蓚€(gè)采樣點(diǎn)的間距控制在0.3米以內(nèi)。代價(jià)是LineRenderer頂點(diǎn)變多但64個(gè)點(diǎn)的上限不會(huì)太大。另一種情況是SphereCast的起點(diǎn)和方向計(jì)算錯(cuò)誤。注意在相鄰點(diǎn)檢測(cè)時(shí)不要用當(dāng)前幀的point作為SphereCast的起點(diǎn)而應(yīng)該用上一幀的lastPos并且distance是兩點(diǎn)的距離。很多錯(cuò)誤寫法是把起點(diǎn)設(shè)成point方向設(shè)成上一幀到當(dāng)前幀的方向順序反了射線和實(shí)際運(yùn)動(dòng)方向不一致自然檢測(cè)不到碰撞。5.2 傳送后卡住或掉下去卡住通常是我的四重校驗(yàn)里某個(gè)環(huán)節(jié)沒生效。最常見的是“OverlapCapsule檢測(cè)”只測(cè)了靜態(tài)碰撞體但場(chǎng)景里有動(dòng)態(tài)物體比如移動(dòng)的房門、升降平臺(tái)玩家傳送過去時(shí)動(dòng)態(tài)物體剛好在那里處理方式是把所有動(dòng)態(tài)物體在傳送校驗(yàn)的瞬間強(qiáng)制標(biāo)記為teleportBlockMask一層檢測(cè)這樣動(dòng)態(tài)物體也能被擋住。掉下去的情況多半是地面射線檢測(cè)的groundMask包含了錯(cuò)誤層級(jí)。比如某個(gè)平臺(tái)的玻璃地面確實(shí)寫在了Ground層但踩上去會(huì)掉落這種場(chǎng)景里要單獨(dú)把透明地板從Ground層踢出加入teleportBlockMask。另一個(gè)原因是地面射線距離設(shè)得太長(zhǎng)比如從高層向下的射線穿過了兩層地板最終命中的是最底層的地面導(dǎo)致落點(diǎn)雖然顯示在高層但實(shí)際位置在地下。解決方法是限制Raycast距離或者在高層平臺(tái)間預(yù)先放置一層“不可穿透地板”。5.3 手柄抖動(dòng)導(dǎo)致目標(biāo)亂跳軌跡跟隨手柄朝向而VR手柄實(shí)時(shí)追蹤數(shù)據(jù)帶有高頻噪聲玩家手哪怕微微晃動(dòng)2到3度拋物線落點(diǎn)的水平偏差就可能達(dá)到好幾米。這會(huì)讓軌跡末端像“亂甩”一樣抖。我的解決方案是對(duì)aimDirection做指數(shù)平滑。每次更新軌跡前用Vector3.Lerp(aimDirection, newAimDirection, 0.2f)過渡。注意Lerp的系數(shù)不能太小0.05會(huì)讓落點(diǎn)反應(yīng)遲鈍、手感黏滯0.2到0.3之間是比較舒服的區(qū)間。平滑之后軌跡移動(dòng)會(huì)變得“粘”但又跟手玩家的小幅晃動(dòng)被自然濾除大幅甩動(dòng)仍然能快速響應(yīng)。如果平滑之后還抖動(dòng)說明手柄旋轉(zhuǎn)數(shù)據(jù)本身有問題可能是追蹤器標(biāo)定問題。可以在調(diào)試界面里實(shí)時(shí)打印手柄的rotation觀察是否在靜止時(shí)仍有明顯漂移。若確實(shí)漂移建議按手柄的“重新標(biāo)定”流程處理。5.4 性能與GC優(yōu)化要點(diǎn)純公式路線的性能不是問題但渲染環(huán)節(jié)有一處很容易踩雷每幀修改LineRenderer.positionCount會(huì)引發(fā)Mesh重建如果內(nèi)容在Update里每幀改GC會(huì)和網(wǎng)格重新分配疊加造成掉幀。我優(yōu)化的辦法是初始化時(shí)就給一個(gè)固定長(zhǎng)度比如64平時(shí)不讓positionCount變動(dòng)用完之后把多余的頂點(diǎn)擠到同一位置再用ChangeMaterialPropertyBlock之類的邊緣顯示技巧隱藏尾部。不過實(shí)際開發(fā)里最省心的做法就是每幀先清空positionCount為0再設(shè)置實(shí)際點(diǎn)數(shù)因?yàn)閁nity 2021之后LineRenderer在positionCount變化時(shí)的內(nèi)存分配已經(jīng)優(yōu)化過實(shí)測(cè)在Quest這類一體機(jī)上也沒有明顯問題。如果你用OpenXR 一體機(jī)平臺(tái)還是建議把頂點(diǎn)數(shù)組預(yù)分配好然后一次性SetPositions不反復(fù)改positionCount。另外落點(diǎn)指示器不要每幀Instantiate/Destroy。我項(xiàng)目中用一個(gè)預(yù)置好的圓環(huán)對(duì)象每次只需更新位置和顏色不產(chǎn)生新GameObject這是基本的復(fù)用原則。6. 參數(shù)調(diào)優(yōu)、擴(kuò)展方向與個(gè)人體會(huì)6.1 推薦參數(shù)表與手感調(diào)法調(diào)參數(shù)是一個(gè)反復(fù)試錯(cuò)的過程我這里給出一組實(shí)測(cè)比較穩(wěn)的初始值你可以在此基礎(chǔ)上按場(chǎng)景調(diào)整參數(shù)推薦范圍說明launchSpeed8 ~ 12 m/s偏小會(huì)讓弧線很短偏大容易超出可控范圍launchAngleCompensation10 ~ 20度15度比較平衡喜歡投擲感可以加到20度maxDistance15 ~ 30米取決于場(chǎng)景大小大場(chǎng)景可以放30米minDistance1 ~ 1.5米小于1米會(huì)導(dǎo)致原地傳很出戲sampleInterval0.03 ~ 0.06秒越小軌跡越平滑但點(diǎn)數(shù)和性能開銷增加sphereCastRadius0.1 ~ 0.2米結(jié)合玩家膠囊體半徑使用coolDown0.5 ~ 1.5秒0.8秒最快手感新手場(chǎng)景建議1.2秒cancelTime3 ~ 4秒3秒比較緊迫4秒放寬但容易誤觸我調(diào)參時(shí)的做法是在場(chǎng)景里放置一個(gè)空的大平面用調(diào)試面板實(shí)時(shí)顯示“當(dāng)前落點(diǎn)坐標(biāo)”和“軌跡終點(diǎn)坐標(biāo)”一邊用手柄移動(dòng)一邊打印。你可以把參數(shù)都做成可序列化字段在Inspector里直接改然后跑場(chǎng)景測(cè)試。要注意的是改角度補(bǔ)償和初速度之后軌跡的落點(diǎn)范圍會(huì)大幅變化同時(shí)也要復(fù)查一遍最大傳送距離是否仍合理。6.2 擴(kuò)展方向拋物線傳送這種交互模型的可擴(kuò)展性很強(qiáng)不只是“傳送”本身。我當(dāng)時(shí)做完之后順手還做了一個(gè)投擲物體的變體同樣的物理公式但不再渲染整條軌跡線只是在物體離開手之后顯示一小段拖尾配合碰撞音效變成了一個(gè)投擲交互模塊。另一個(gè)很有用的擴(kuò)展是把軌跡變成“多段彈跳式”讓拋物線擊中地面之后繼續(xù)反彈一次生成第二段拋物線這樣玩家可以把標(biāo)記“彈”到墻背后的區(qū)域。實(shí)現(xiàn)方式并不復(fù)雜一旦第一段軌跡碰到地面或墻面取接觸點(diǎn)、把速度方向沿表面法線反射并乘一個(gè)反彈系數(shù)然后從接觸點(diǎn)重新啟動(dòng)一段新的拋物線。我試過在狹窄走廊場(chǎng)景里這種彈跳式追蹤能力能讓玩家傳送到直線視野根本無法到達(dá)的角落交互樂趣提升不少。如果項(xiàng)目性能緊張還可以把軌跡改為Bezier曲線近似用2到3個(gè)控制點(diǎn)近似拋物線再把采樣點(diǎn)數(shù)量減半。Bezier近似的優(yōu)點(diǎn)是曲線更平滑、頂點(diǎn)更少但缺點(diǎn)是你需要定期驗(yàn)證近似誤差是否在可接受范圍內(nèi)直線穿越薄墻時(shí)仍要依賴物理檢測(cè)來做硬性校驗(yàn)不能為了省頂點(diǎn)犧牲物理正確性。6.3 我踩過的坑和后續(xù)計(jì)劃最后聊幾個(gè)印象比較深的坑。第一個(gè)是手柄的forward方向我當(dāng)時(shí)調(diào)試時(shí)發(fā)現(xiàn)軌跡總是往手柄左邊飛查了半天發(fā)現(xiàn)是手柄模型本身轉(zhuǎn)了90度導(dǎo)致取用的forward方向和玩家視覺上看到的朝向不一致。這個(gè)問題的排查方式是在場(chǎng)景里用一個(gè)Debug箭頭實(shí)時(shí)繪制手柄的rotation一眼就能看出來是模型朝向還是代碼問題。所以你在做這個(gè)功能時(shí)第一件事就是確認(rèn)手柄模型的正方向。第二個(gè)坑是“傳送后保持用戶頭部高度”。大多數(shù)VR項(xiàng)目的玩家高度是動(dòng)態(tài)的坐姿/站姿傳送時(shí)如果直接把XRRig的Y坐標(biāo)設(shè)成落點(diǎn)平面的高度會(huì)導(dǎo)致坐著的玩家突然“站”起來或者站著的玩家突然“坐”下去。正確做法是目標(biāo)位置的Y坐標(biāo) 落點(diǎn)平面高度 玩家當(dāng)前身高偏移這個(gè)偏移在站姿模式用Calibration時(shí)的相對(duì)高度記錄在坐姿模式需要單獨(dú)保存。我當(dāng)時(shí)忽略了這個(gè)導(dǎo)致測(cè)試時(shí)每次傳送后視角高度都跳變后來加了高度偏移才解決。第三個(gè)坑是多人場(chǎng)景中的同步。如果你在做多玩家聯(lián)機(jī)項(xiàng)目傳送絕對(duì)不能只在本地修改位置而是要以網(wǎng)絡(luò)同步的方式把新位置發(fā)送給服務(wù)器。否則其他玩家看你就像閃現(xiàn)一樣而且本地物理碰撞體更新稍慢就會(huì)導(dǎo)致“撞車”判定。我的建議是傳送前先走服務(wù)器驗(yàn)證流程可以執(zhí)行同樣的落點(diǎn)合法性校驗(yàn)確認(rèn)后再本地瞬移這樣既防了外掛又保證了多人一致性。說回后續(xù)計(jì)劃。我目前在考慮把這個(gè)拋物線傳送模塊做成一個(gè)可復(fù)用的通用工具不止適配傳送還能擴(kuò)展到投擲、跳躍目標(biāo)預(yù)覽這些場(chǎng)景。如果再算上多段彈跳、落點(diǎn)雕刻、動(dòng)態(tài)障礙避讓它其實(shí)更像一個(gè)通用的“預(yù)測(cè)運(yùn)動(dòng)學(xué)”工具而不只是一個(gè)傳送腳本。希望你讀了這篇之后能少走些彎路把更多精力放在交互創(chuàng)意上而不是反復(fù)調(diào)試基礎(chǔ)物理參數(shù)。如果后面你遇到其他平臺(tái)尤其是一體機(jī)上的性能問題歡迎再回來交流。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
狼狼色丁香久久婷婷综合五月| 亚洲九九九九| 亚洲AV无码天美传媒一区| 国产美女高潮| 精品国产乱码久久久影院| 夜夜操天天肏| 中文一区二区婷婷视频| 女优免费一区二区永久| 日婷婷| 新91视频.cmp| 天操天操夜操夜月操月年年操操| 四虎免费看黄| 美女的肌被草喷水视频| 青青草视频爽一爽| 亚洲国产精品乱码在线观看| 一起草av| 97精品国产97久久久久久免费| 亚洲天堂7777| 久热九九| 中文字幕一区二区三四五区日日骚| 黄aaaaaaaaaaaaaaaaaa色网站| 91在线精品一区二区三区| 青青草中文字幕| 亚洲人妻精品一区二区| 天天干人人看综合| 亚洲熟女精品| 人人插人人搞人人操| 欧美亚洲中文字幕| 九九热精品视频在线观看| 中文字幕av亚洲在线| 久久东京国产精品视频| 极品销魂美女一区二区 | 色色97爱| 欧美天天| 国产极品美女高潮无套在线观看| 欧美暴力猛交| 偷窥自拍亚洲色图| 伊人久久蜜月| 天天干18禁| 人人澡人人干| 韩国黄片aaaa| 99亚亚热| 999熟女精品| 自拍六区| 亚洲αv一区二区三区| 操逼网站视频漫画国产| 色爱欲亚洲| jiujiujiujingpin| 秋霞网无码| 久久久久久69国产一区二区| 五月天丁香| 久久綜合很很很| 少妇高潮九九九九九九九| 亚洲欧美综合| 九九人人操| a人片中文字幕一区二区| 久久女人| 天天拍天天操| 91精品国产91久久久久久久久久久久| 婷婷色在线| 国产视频三区四区| 亚洲在线欧美| 色好看av| 狠狠色综合网| 青青草中文-久久青草精品一区二区三 | 四虎影视精品| 黄色av一区二区在线| 天天日日本| 火箭成精品视频884必出精品| 亚洲精品国产日韩无码AV永久免| 操逼国产免费| 97精品中文字幕| 亚洲欧洲av影音| 在线观看一卡二卡| 国产二区三区免费视频| 欧美中文字幕男人天堂久久精品| 97超碰欧美精品| 免费的黄片wwwwww| 天天干夜夜鈤| 视频在线观看一二三区| 国产精品免费久久久久久久久久| 中文字幕 人妻不满 在线视频| 亚洲素人综合| 美日韩一卡二卡三卡免费人妻精品| 亚洲美女高潮喷水视频| 亚洲欧美精品一区天堂久久 | 密乳AV免费观看| 欧美天天综| 亚洲中文国际强奸字幕| 97在线观看| 999熟女精品| 毛片视频白嫩| 久久极品一区二区| 久久久免费一级黄片| 色与欲影视| 死我十八禁| 天天干一区二区| 亚洲人妻av| 秋霞久久亚洲精品成人| 狠狠激情综合狠狠操中文字幕| 99这里只有精品| 啊好爽快点-国产一区二区三区撒尿在线-成人AV | 91亚州日韩高清| 天堂8在线新版官网| 多毛小伙内射老太婆| 美女天天干| 97这里有精品| 精品对白久久不卡| 亚洲风情在线观看| 精品一级毛片在线观看| 日韩精品资源专区二区| 小视频国产| 欧美v亚洲v综合v国产v妖精| 少妇高潮流水av免费| 亚洲色婷婷久久91| 高清在线不卡一区二区 视频| 日韩欧美性爱电影在线观看| 很很操在线| 亚洲伊人久久综合97| 夜夜草我| 黑人精品成人一区二区三区 | 久久久久亚洲三级电影| 国产熟女免费观看久久| 国产免费久久久久| 青青11操操操操操操操操| 日韩人妻资源网| 亚洲国产欧美日韩精品一区二区三区,国产一区二区三区在线看片,欧美性猛交 XXX | 五月天丁香网| 日韩熟女精品无码专区一区二区| 久久色一区二区| 蜜臀一二三| 久久亚洲日韩熟女精品| 亚洲无码精品AV久久久| 熟女色综合久久| 色综合天天| 黄网站黄视频网站进入口| 午夜综合在线| 国产精品一区二区手机看片| 午夜国产成人福利视频| 欧美九九99久久精品| 97久久国产亚洲精品超碰热| 日韩熟女三十乱伦| 色婷婷五月综合| 人妻免费观看| 99色在线观看| 久久久久9999妇女| 天天日天天干天天操| 国产熟女乱论| 欧美亚洲AN| 丰满人妻一区二区三区四区| 久久一区二区三区入口| 欧美乱妇狂野欧美在线视频| 亚洲精品一区二区日本| 久久精品国产精品亚洲艾通辽熟妇 | 嫩草美女久久| 超碰在线人妻不卡| 国产亚洲色婷婷久久99精品91 - 百度| 国人欧美精品一区二区| 亚洲 综合 第一页| 久久精品日韩| 精品网站99999| 热99这里有精品综合久久 | 免费一级黄色录像影片| 久久久性爱视频| 毛片久久| 加勒比日本在线| 日本αv| 色呦呦、国产精品| 干我久操| 久久综合av| 国产精品久久99日日| 久操 高清| 麻豆视频国产一区二区| 热久久国产精品视频大陆精品| 国产一级高清免费观看| 久久亚洲不卡一区二区三区| 最新国内自拍av免费| 久草新免费| 噜噜噜在线视频| 国产一区二区三区,在线观看观看| 无码高清少妇久久| 日本中文字幕熟妇| 亚洲天堂综合AV| 日本操逼视频在线| 色综合超碰超| 久久精品欧美一区蜜桃| 国产精品成人无码a v毛片| 日日噜噜夜夜久久亚洲一区二区 | 亚洲少妇激情视频| 色情综合网| 国产精品国产亚洲区艳妇糸列| 日韩三级在线观看mp4| 免费亚洲黄色视频在线观看| 欧美性爱一区二区三区| 骚逼一区二区| 丝袜六区| 精品无码秘 人妻一区二区| 国产内射爽爽大片| 操老熟女AV| 乱欲一区二区| 国内精品伊人久久久久影院会| 九九久久久| 欲色啪| 亚洲第一二区另类图| 丁香久久| 欧美综合娱乐久久| 亚洲一区二区三区春色| 两性综合网| 久草网站免费在线观看| 色综合久久88色综合久久天天| 欧美日韩另类字幕中文| 超碰97人妻在线| 久久国产三区| 亚洲午夜未满十八勿入网站日本又色又爽又黄| 九九热免费视频| 日1区2区3区2020| 美国一区二区免费视频| 97超色| 亚洲 欧美 手机在线观看| 老女人综合网| 26uuu成人影片| 久久有码视频| 人妻另类 专区 欧美 制服| 日韩无码视频黄色| 国产无马av| 厕所偷拍在线| 狠狠躁天天躁日日躁97| 99视频自拍| 女生自91网站| 久久线上视频免费看| 一起草三级AV电影在线观看| 亚乱色| 97舔舔| 黑人与人妻| 天天拍夜夜| 妇女性内射冈站HDWWWCOM| 久干9操| 超碰 97国产熟女| 好屌色综合| 欧美精品99久久久| 欧美 综合 亚洲| 日韩av在线精品观看| 天堂中文资源在线bt| 97精品国产97久久久| 色眯眯av| 美女视频尤物网在线看| 天天综合~91入口| 亚洲欧美激情小说| 久久久久免费看少妇A片特黄| 大香蕉AV在线| 99热这里只有精品1| 免费少妇一区二区| 成人日本精品九区| 国产一国产一级毛片古装| 九九人人操| 综合自拍| 桃花色涩综合影院| 亚洲欧美激情小说| 欧美黄片视频在线观看免费 | 精品78| 精品区9| 熟女人妻精品一区二区视频| 综合网色| 国产色图乱伦| 国产极品999| 亚洲欧美高清无码| 91麻豆天美国产| 欧美伊人久久综合网| 天天综合站| 精品午夜福利国产一区二区在线观看| 亚洲图片欧美制度| 日日日日做夜夜夜夜无码| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区老师 | 人人干人人操人人..com| 国产精品久久久久亚洲av| 欧美亚洲韩国视频十五区| 国产亚洲色婷婷久久99精品91| 九九九九九九九九九国产精品| 公司1区2区3区精产精| 亚洲人妻中文高清| 翔田千里A片一区二区| 人人操人人干xxx| 激情小说在线视频| 精品无码一区二区三区色欲| 日本乱人伦片中文三区| 欧美性爱视频免费一区一A| 久久久久久久国产a∨| 美國A片| 再深点灬舒服灬太大了好硬好爽| 婷婷五月综合在线| 久久思思热| 啊啊啊啊好疼视频| 欧美一区二区福利在线| 蜜臀无码一区二区| 激情婷婷五月天| 黄视频免费| 久久九九精品一区二区 | 欧美日韩美女精品久草一区二区三区| 3p国产欧美99热| 亚洲毛片基地专区| 欧美大干日韩| 中文字幕制服欧美久久一区| 成年人一级黄色毛片大全在线观看| 拍拍拍拍大尺度黄色三级片拍拍拍拍拍照| 极品色社| 99日精品欧美国产| 欧美性爱一区二区三区四区| 99亚洲精品| 日韩欧美俄罗斯A片| 女人爽到高潮久久久| 暴力av在线| 中国探花熟女| 黑人性欧美| 国产免费一区二区在线A片视频| 碰人碰碰人人开房人肉| 日本99久久| 91一区二匹| 久久久不能久久久久| 无码高清操逼网址| 91女优在线观看 | 激情干在线| 啊啊啊啊,啊啊好多水| 日本大片日本一区二区免费高清| 日本影视久久免费| 欧美黑人91| 五月婷婷六月激情| 中文字幕一区二区日韩网| 国产免费一区| 亚洲国产综合久久久性感熟妇| 丁香五六月啪啪| 超碰无码五月97| 99热18| 欧美欧美啪啪视频| 国产精品3| 亚洲天堂,男人| 色综合久久av| 精品午夜福利| 久久女女| 久久伊人青青草| 欧美精品999| 精品蜜乳AV免费观看| 欧美性五月| 爱干爱射网啊啊啊| 337p大胆噜噜噜噜噜91Av| 精品蜜乳AV免费观看| 97超碰色中文字幕| 亚洲综合影视| 殴美性色a级欧美| 色狠狠 - 百度| 五十路三区在线| 91久久久亚洲| 高清不卡 中文 人妻| 91是天天| 开心五月婷婷激情| 口爆吞精在线观看| av日韩在线观看电影| 亚洲电影中字一区二区| 亚洲熟女av中文字幕| 成人久久久精品| 天天弄欧美| 亚洲五月丁香花狠狠干一区二区三区| 久久久精品视频免费观看| 青青操网| 精品无码一区二区三区| 老熟女网站| 久久久精品,3| 五月天久久人妻| 欧美激情亚洲情色| 亚洲天天影视色综合| 久久超碰97中文字幕| 国产三区免费在线观看| 日韩图区 偷拍| 少妇一级婬片免费放一级a性色.| 国产久久成人| 噜噜噜在线视频| 日本十八禁免费看污网站| 亚洲天堂精品日韩电影| 日婷婷| 日韩熟女三十乱伦| 亚洲人妻中文在线视频| www亚洲免费| 国产第12页| 人人做,人人操,人人摸| 欧美性爱第一区| 久久久久亚洲av综合波多野制衣| 国产成人拍国产亚洲精品| 日本一二三高清| 丝袜美腿av女优在线| 久久后入制服| 欧美性爽xyxOOOO| 加勒比东京热五月天天堂网| 噜噜噜无码AV一级一级久久影院| 91国产丝袜足交精品视频| 蜜桃狠狠色伊人亚洲综合 | 黄片com.| 男人天堂东京热| 亚洲久久久久| 亚洲激情久久| 97精品视频| 国产精品不卡一区二区三区| 日韩人妻精品中文字幕| 91jk色拍| 亚洲AO在线| 久久久久密臀一区二区| 啊啊啊久久久视频| 91久久国产精品| 日本阿v天堂在线观看| 干超碰碰熟女| 亚洲无码国产精品久久| 成人性爱电影网| 黑丝少妇在线观看| 91久久伊人婷婷青青草| 国产尤物在线三区| 丁香婷婷五月| 午夜男女爽爽爽在线视频 | 欧美永久激情一区二区| 夜夜操中文字幕| 亚洲色图欧美色18直播在线| 日韩免费簧片| 亚欧高清v| 亚洲最大91网| 果冻传媒A片一二三区| 男女国产精品| 丁香六月东京热| 精品一区二区三区蜜桃臀赵总 | 欧美岛国精品在线观看| 国产中文字幕曰本毛片| 免费看污网站| 欧美东京热青青草| 久久这里是精品| 欧美日不卡| 天美传媒AV国产在线| 综合五月天| 手机在线免费看的av| 亚欧国产无码精品在线| 佐山爱中文字幕| 国产蜜臀精品一区二区尤物| 日韩免费三级黄片电影| 五月丁香色婷婷| 欧美精品久久| 俺去啦俺来也久久综合| 亚洲人人操| 超碰久在线天天做| 色操逼网| 九久久九九久视频| 国产成人无码啪| 日产国产精品中文久久婷婷| 亚洲色阁| 婷婷色婷婷| 久久精品91| 自拍偷拍亚洲熟女妇人精品| 蜜色网色哟哟| 69一区二区三区 | 超碰在线在公开超碰在线在公开| 国产精品成人久久一区二区三区 | 男人的天堂网页| 日韩久久三区| 夜夜嗨一区二区三区直播内容| 2019久久久久久久久福利| 九月AV| 99re超碰| 熟妇视频一区二区三区在线观看| 91久久青青草原精品| 99色色网| 欧亚韩国999| 午夜偷拍久久熟女| 高清不卡 中文 人妻| 色五天伊人| 黄日韩| 成人性爱av| 色噜噜人妻丝袜AV资源| 天天视频网站黄| 操b网站亚洲无码| 午夜福利无毒不卡| 欧洲精品久久| 伊人色综合网电影| 日本高清视频在线观看黄已三辽| 天美麻花大全视频| 国产精品在线免费| 在线观看AV不卡| 91在线免费精品视频| GVH-003 母子姦 青木玲-麻豆视频,麻豆视传媒短视频网站入口,麻豆视传媒官网直 | 日韩三级伊人| 久久蜜桃综合网| 操逼视频色| 丝袜狂射91| 青青草天天亲夜夜操网| 无码人妻一区二区三区免费九色| 国产日韩精品一区二区三区| 日韩av不卡在线看| 久久精品无码熟妇一区二区三区视频导航 | 7月婷婷综合| 免费人成在线观看网站品爱网| 大香蕉之青青草原| 久草视频分类在线| 免费操逼91| 97色色,97综合| 色青青久久影视| 亚洲色图A| 日本97久久久精品| 亚洲欧美日韩夜夜| 国产h小视频在线观看免费| 在线观看A啊啊啊| 黑人精品成人一区二区三区 | 日本狠狠干| 人妻二区| 日韩综合97p| 欧美久久久15P| 丁香五月天激情网站| 中文字幕一区二区视频在线观看 | 色综合天天| 久久久久久久精| 久久大陆| 青青草九九九九九| 天天色综亚洲91污| 一本色道综合久久欧美| av天堂加勒比| 熟妇人妻一区二区三在线| 99色热| 美国一区二区三区视频| 男人午夜天堂| 大香蕉草草| 久久99精品国产| 91爱综合| 丁香激情五月天| 午夜福利在线合集| 亚洲A曰本VA欧美VA视频| 久久久涩| 国产自偷| 日韩无码服务区| 亚洲中文字幕日产无码久久| 青草青青久久久久久国产| 欧美视频一区二区在线| 色综合国产在线观看| 欧中美三级一区二区三区| 中文字幕文字幕无码一区二区三区电影99| 欧美亚男人的天堂| 日韩pv中文| www99热| 久久久国产亚洲精品系列| 四虎国产精品永久在线囯在线| 欧美大的香蕉有线电视视频| 欧美在线第五页| 蜜臀th| 亚洲综合69| 99精品网站| 国产农村妇女精品一| 青青草九九九九九| 精品人妻二区三区| 久久久久久人| 亚洲欧洲无码一区夜| 欧美日韩国产电影| www.91欧美| 美女AV一区二区| 九九九久久久久| 10000部十八禁看电影| 自拍盗摄一区| 久久久久久九九九九-美女久久久久久久-成人AV| 夂久色| 男人的天堂在线有码| 天天综合网~69| 人妻天天夜夜爽一区二区| Julia在线播放亚洲久久| 99精品热| 美女人妻色网站| 97国产精品国| 亚洲一区二区专区-国产丝袜精品丝袜-成人AV| 久草婷婷| 国产日韩中文字幕欧美| 天天影视综合色| 国产精品农村妇女| 亚洲麻豆av一区二区| 肏逼视频日本| 东北丰满熟女国产一区| 国产女生在线| 一色网男人的天堂| 神马午夜久久久| 精品中文一区二区| 大粗鳼巴久久久久| 日韩免费a级毛片无码a∨| 欧美特大AA级黄片| 人人操人人大香蕉| 美女刺激久久国产欧美| 亚洲自拍另类丝袜综合| 色偷偷综合91久久噜噜| 94色色电影网| 国产成人无码啪| 91一起操| 情色五月天久久久| 视频黄站| 色逼综合| 奇米狠999| 亚洲AV无码国产精品久久久久 | 欧美淫乱视频| 97精品一区二区视频| a v网站在线播放| 激情小说五月天| 天操老女人| 91 天天综合| 一级特黄aaa大片在线观看成人一级片在线观看 | 欧美亚洲日本激情在线| 午夜成人福利影视| 蜜臀AV一区二区三区| 岛国免费视频在线| 六月丁香五月婷婷| 中文字幕精品久久久久人妻红杏ⅰ| 大香蕉2017| 国产又猛又粗又爽又黄| 五月天激情综合网| 人妻少妇久久中文| 久久国产逼| 能看的AV| 激情文学亚洲| 午夜AV人气不卡| 国产av高清版| 大香蕉日韩| 国产精品自在自拍视频| 欲色影视综合吧| 97色综合中文网| 国产女人91精品嗷嗷嗷嗷| 欧美中文狠| 日日骚AV| 欧美成人9797| 亚洲高清综合网| 日本精品第一视频在'| 伊人991| 91精品国产91久久福利| 大香樵伊人网| 日日摸日日碰夜夜爽视频| 屁屁影院一区二区三区国产| 清清草影| 手机看片日韩人妻| 久久亚洲不卡一区二区三区 | 中文字幕91综合| 日本加勒比无码专区| 日本欧美国内在线| 素人伊尹大香蕉免费下载视频| 国产高清26uuu| 啊啊啊好舒服视频在线观看| 小日子操bb在线看| 天天天乱色综合全| 欧美日韩国产另类综合| 欧美亚洲AN| 国产成人99久久亚洲综合| 中文字幕av久久爽Av| 国产高清成人免费视频| 国产成人资源| 国产精品懂色tv影视免费观看| 天天欧美欧美亚洲网| 日韩97P| 青娱乐导航AV| 亚洲欧美日韩制服另类| juliaann丝袜大战黑鬼| 亚洲精品xxx| 99热99re6国产在线播放| 亚欧性爱ab| 91情色在线| 熟女丰满人妻一区| 国产二区三区免费视频| 桃色人妻在线视频| 男女真人网18| 欧美色乱| 国产精品欧美激在线| 久久riav中文精品| 欧美女同在线| 97人肏| 国产视频一区二区三区在线免费观看 | 另类图片五月天| 91黑丝露脚| 欧美巨大性舒爽顶到了| 久久久久78| 精品一区二区亚洲国产| 夜色91| 亚熟hd视频在线| 国产综合操逼高清| 婷婷涩嫩草鲁丝久久午夜精品| 校园春色亚洲欧洲| 网页导航五月天免费一二三区 | 色色99| 人妻一区二区三区视频| 99久在线精品99re8| 欧洲天天在线| 看黄片视频免费| 97碰久久| 9999久久久久| WWW4虎| 顶级丝袜熟女一区二区三区 | 最近2019中文字幕国语免费版| 97中文字幕九区| 久热精品色情| 91无码人妻| 亚洲精品一区中文字幕乱码| 人妻中文字幕精品无码| 夜夜嗨一区二区三区直播内容| 久久欧洲| 男人天堂2019亚洲| 福利在线观看一区二区| 看日韩黄片| 五月天精品| 大香蕉欧美国产日韩高潮| 亚洲人成网www| 特级毛片特黄久久免费看| 大香蕉78| 91色欧美| 超碰偷拍| 国产欧美成人精品| 青青草在线视频人人想人人上| 亚洲天堂 视频你懂的| 牛牛操视频逼| 国产女同在线观看视频| 亚洲国产97在线精品一区| 97干天天| 少妇与黑人高潮在线| 亚洲少妇色| 国产成人无码网站在线视频| 狠日操| 99久国产精品午夜性色福利| 欧美性爱一区二区| 欧美日韩欧美| 成人日本片久久久蜜桃| 91影视亚洲| 乱老熟女一区二区三区| 久久超碰亚洲人| 日本免费不卡二区| 最新AVzaixian| 啊啊啊啊一区| 9 9精品一区二区三区| 麻豆国产免费影片| www.人人cao| 在线观看国产黄色| 亚洲欧洲日韩国产自在线| 久久久久久久伊人精品| 狠狠色伊人亚洲综合网站色| 国产强奸乱伦无码视频| 翔田千里AV无码秘 三区| 夜夜精品视频| 搡老女人老91妇女老熟女| 久久啊啊| 99无码| 操国产高清| 国产成久久综合片| 强奸乱伦免费网站| 天天干天天燥| 口爆吞精在线观看| 日韩精品在线观看网站| 90后性网国产欧美| 欧美在线视频99| 亚洲有码 欧美精品| 久久精品视-一级做a爰片性色毛片16美国-中国女与老外在线精品 | 亚洲无套久久嗯嗯| 四虎影视在线| 久久天天躁日日躁狠狠躁 | 欧美性爱中文字幕无线码| ..日韩av毛片精品久久久| 亚洲情色中文字幕一区| 操屄不卡视频| 蜜臀av在线播放一区二区三区| 骚货人妻偷情自拍在线视频| 97视频在线观看播放与子乱对白在线……| 精品国产网站| 色娱乐色呦呦夜夜夜夜av| 黄色一区三区| 亚洲熟女诱惑| 香伊人在线| 国产树林里野战在线看| 九九热最新| 中文字幕乱码人妻一区二区三区,99精品| 天天综合欧美综合| 另类欧美| 综合欧美亚洲| 在线播放一级无码视频| 国产欧美一区激情交| 成人在线视频二区| 啊啊啊啊啊啊啊啊啊啊在线观看| 久久久久久无码人妻中文字幕| 九九九国产| 亚洲成人性爱网站在线播放| 人人色人人操在线| 久久国产视频专区一二三| 99精品高潮| 亚洲精品久久久久久久蜜桃臀| 秋霞一级A片黄色视频| 日韩黄色成人性爱| 久久国产视频专区一二三| 亚洲综合草草| 国产精品黑人一区二区三区| 操逼逼无码| 久久的网站啊啊啊啊啊| 精品9999| heyZO天然素人无码AⅤ专区| 狠狠干婷婷| 亚洲国内精品成人不卡| 亚洲超碰97| 欧亚在线视频| 国产美女精品| 久久午夜色播影院免费高清| 美女写真| 超碰人妻久久人妻中文97| 国产视频小说| 99热精品在线在线| 另类天堂| 麻豆久久久久久久久丝袜 | 免费看污网站| 婷婷色香| 凹凸精品熟女在线观看| 欧美人人AAA| 久草新免费| 97爱爱爱| 夜夜嗨一区二区| 亚洲欧美国产精品久久久久久久| 韩国一级婬片A片无码天美| 成人贴图日韩欧美| 欧美在线电影| 婷婷亚洲五月***久久| 精品国产国产AV| 性无码专区2020| 久久久久13| 91色花堂| 95人妻爽爽人人做人人澡 | 91九色蝌蚪在线观看| 爱干爱射网啊啊啊| 91久久| 九色97| 久久超碰com| 五月婷丁香| 中日韩久久久免费看| 温婉少妇玩3p| 亚洲高清男人天堂| 国产成人免费观看在线视频| 欧美精品久久| 操逼国产免费| 亚洲综合伊人| 欧美日韩操逼嗦吊| 小电影欧美91| 天天爽夜夜操| 超碰91在线| 99青草| 亚洲伊人久久综合97| 中文字幕在线观看第二页| 亚洲色图欧美色图另类图片| 伊人成人中文字幕久久网| 欧美日韩另类激情图片| 亚洲成人碰碰| 日本黄大片在线观看视频| 女人一区| 狠狠色狠狠色狠狠五月| 天操天操夜操夜月操月年年操操| 黄网色一区二区三区四区精品| 后入式五六区| 五月丁香婷婷色| 亚洲情欲| 色天使大香蕉| 亚洲乱码国产乱码精网站| 欧美精品亚洲精品日韩传电影| 国产成人久久久精品免费AV| 欧美se综合| 青青11操操操操操操操操| 日语五十路和六十路亚洲国产精品| 人妻美腿丝袜制服诱惑综合天堂-| 日欧操屄| 欧美黑人91| www.yw尤物| 色综合国产在线观看| 另类av综合久久| 精品久一区免费| 日韩国产欧美伦理在线| 亚洲se电影| 91亚·色| 十八禁成人网站在线观看| 熟女少妇一区二区三区| 伊人大香蕉在线| 国模不卡| 操91| 偷拍欧美综合| 精品少妇人妻av久久免费| 天天综合~91| 欧美少妇第一页| 黄色高清无码无码破解免费暗网| 中欧人妻丝袜中文字幕| 人妻内射一区二区在线视频| 99视频内射三四| 黄色人人| 91精品人妻一品二品三品| 在线视频一区二区传媒| 99久久网站| 成人免费看吃奶视频网站| 97欧美日韩综合| 亚爽爽爽爽爽爽爽爽| 婷婷五月天激情小说| 天天草夜夜草高潮片| 91五十路| 91狠狠狠| 精品一二三区女同 | 思思久热在线精品66| 国产精品动态一区二区三区四四| 青青爽| www久| 亚洲AV无码黄色强奸| 中文字幕在线免费观看2| 人妻激情视频| 天美传媒av在线| 哈哈操电影AV| 亚洲熟妇自偷自拍另欧美| 天天视频黄网站| 家庭乱伦国产精品| 91精品人妻一区二区三区蜜臀| 97精品中文字幕| 欧美熟妇人体| 亚洲国产欧美日韩精品一区二区三区,国产一区二区三区在线看片,欧美性猛交 XXX | 噜噜噜久久亚洲精品色情| 亚洲有码 视频一区| 免費黃色視頻觀看一| 日韩Va亚洲va欧美Ⅴa久久| 草草电影院| 97超碰色色| 97视频播放| 色香网| 麻豆区久久久久亚| 熟妇高潮精品一区二区三区下载| 久久视网78| 欧美性区| 麻豆九九九| 青苹果影院男人的天堂| 久久久蜜桃一区二区三区| 丁香色五月 97干| 久久久久国产精品片区无码直播| 在线国产福利网址导航| 国产黄片精品在线| 日韩亚洲精品一区二区| 亚洲无线码欧洲精品区别| 久久超碰国产一区二区三区| 成人羞羞视频国产| 国产精品午夜AV完会免费 | 日韩三级网址| 亚洲情色 自拍| 日韩欧美被操黄免费观看| 国产精品成人无码av无码免费| 久久78| 囯产精品久久久久久久久久梁医生 | 亚洲中亚日激情视频| 国产强奸乱伦欧美| 久99热| 先锋色眉乱伦资源| 日韩无码三级影院| 中文字幕日本久久| 日韩少妇丰满亚洲| 91亚州日韩高清| 欧美极度丰满熟妇hd| 日本成人免费一区二区三区| 97色欧洲| 国内一级精品| 夜色91| 久久久精品无码亚免费| 这里只有精品久久| 日本淫穴在线| 精品免费视频国产一区| 国产成年免费大片黄在线观看| 亚洲精品精品一区二区| 成人五月天色网| 综合网91| 91天堂| 操逼操逼操| 在线岛| 亚洲精品无码少妇久久| 超碰av在线| GVH-003 母子姦 青木玲-麻豆视频,麻豆视传媒短视频网站入口,麻豆视传媒官网直 | 亚殴在线| 后入式在线免费观看60秒| 精品视频久久区| 九九九国产| 亚洲熟女乱色一区二区三区| 免费簧片在线观看| 91粉芽高清在线一区二区| 欧美天天谢综合网| 无卡一区=区| 久久九色| 欧美顶级黄色大片免费| 五月天激情小说网| 日韩ab网| 懂色Av一区二区三区| 日本高清视频xxxx| 婷婷香蕉| 久久久99999久网站| 欧美 亚洲精品首页| 成人a级高清视频在线观看| 静品嫩模一区二区| 欧亚第一综合网| 欧美日韩妖精91com| 激情黄色片在线观看| 国产精品久久久鸭无码的功能| 九九天堂| 久久久久久久久女黄| 波多野结衣AV无码一区| 久久久国产三级黄色片| 成人A片男人的天堂| 男人的天堂1024| 黄色区免费观看中文字幕| 久久黄色网址| 青青青草原| 99re热有精品视频国产| 五月婷婷综合在线| 天天综合网合集91| 天天干天天舔| 亚洲天堂,男人| 少妇激情AV| 最新岛国大片| 91女网站| 91亚洲情色| 色综合久| 久久综合久色欧美综合狠狠| 日韩免费中文字幕视频| 五月婷婷六月激情| 91热色| 午夜福利精品| 好屌色综合| 国产日韩精品suv| 一品道视频一区二区三区| av橘色网站| 国产成人免费观看在线视频| 91高跟美女在线播放| 视频一区二区免费在线| 91oumei| 熟女熟妇一区二区三四区| 黄片www.| 日韩人人精品| 亚洲强奸乱伦影视网| 亚州熟妇精品| 中文字幕奈奈美被公侵犯| 中文字幕制服欧美久久一区| 亚洲天堂久久久久久粉红视频| 五月丁香| 国产精品一区二区三区四区五区| av资源在线观看少妇| 91碰碰| 国产精品岛国片在线观看| 久久骚| av日韩在线观看电影| 亚洲偷91色| 婷婷激情五月天小说网| 欲色啪| 亚洲精品乱码久久久久久蜜桃麻豆 | 100啪啪视频大全| 老熟女区| 日本精品网站在线中文| 久干网| 操高情无码| 久久精品99| 91九色在线| 狠狠爱大香蕉| 日韩国产品视频中文字| 欧美视频一| 超碰免费人妻在线| 97天天搞在线| 久久性爱视频99| 中国小夫妻勾搭露脸淫荡对白| 日韩性爱毛片操骚逼| 狠狠做深爱婷婷久久二区| 亚洲欧美日韩精品久久久一区二区| 久久精品高清无码一区| 强奸a片网| 欧美性暴力| 五月天综合网| 91人妻素女| 亚洲男人天堂手机版| 97视频在线观看播放与子乱对白在线……| 亚洲一区二区在线观看91| 97天天做| 激情五月天社区| 啊v在线观看视频| 日韩人妻网站| 欧美日韩性爱操大逼| 欧美成人精品一区| 4141514逼喷水三级片| 欧美极品性爱天天射| 东北老熟女| 日韩一999精品| 久久久久久国产无码精品| 亚洲 日本 不卡| 亚洲综合影视| 亚洲第一在线视频| 成人一二| 怡红院网站在线视频| www.四虎在线| 欧美一级黄色18片免费看| 校园春色五月天| 欧美久久久| 日韩美一区| 欧美黑人精品一区二区| 久久久无码视频| 91艹| 久久久久久久久久久人妻| 国产精品蜜乳AV| 亚洲国产另类在线中文| AV色五月| 亚洲高清视频在线观看| 丁香九月激情啪| 亚瑟国产精品久久无码| 亚洲不雅视频1区二区| 性性久久| 国产免费大片| 久久久久久久久久8888| 日小BB小视频| 七月丁香婷婷| 又黄又硬又粗又长国产视频| 一牛一区二区三区久久| 亚洲天堂区| 牛牛aV| 99这里只有精品国产| 久久久久久久唑| 九草九九九| 91爰爱欧美| 久久久久久久久久久人妻| 欧美视频在线视频免费va| 不卡av在线中文字幕| 免费在线黄片视频| 亚州精人品大香蕉| 日本性爱少妇| 国产一级特黄大片处女| 欧美中文字幕精品人妻| 33044男人的天堂深夜备| 使劲用力艹少妇视频一区二区| 国产不卡片| 综合色图区| av九九| 粉嫩在线一区二区懂色| 欧美精品日韩久久久九| 99亚洲国产精品色一区二区三区| 97天天日| 人人妻人人澡人人爽人人精品浪潮 | 久久国产乱子伦精品免费女,网站| 天天干1区2区在线| 天天内射| 亚洲欧洲久久天堂| 国产农村妇女精品一二区| 亚洲中文制服诱惑| 91狠婷| 久久精品欧美一区蜜桃| 九九热精品视频在线观看| 国产亚洲99久久精品| 精品国产精品一区二区| 日韩欧美字幕亚洲一区二区| 一级特级aaaa毛片免费观看 | 国产十八禁视频| 超碰夫妻97| 久久久久9| 99re在线精品78| 很狠操| 激情内射| 青青草依人大香蕉| 欧美色网络| 999精品乱码| 91夜色| 26uuu欧美日韩| 国模不卡| 日韩一级欧美一级在线观看| www…国产操逼| 五月色综合| av在线人气| 国产妇女精品视频青青草| 五月天亚洲网|