久久亚洲成a人片熟女精品色一区二区三区|国产精品视频第一精品视频|av天堂热无码手机版|亚洲?v无码久久无遮挡|国产精品偷伦视频免费观看国产|麻豆国产自产精品丰满熟妇|av无码av不卡一区二区|久久亚洲精品中文字

ARTICLE DETAIL

資訊詳情

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

Unity敵人AI狀態(tài)機(jī)設(shè)計(jì):契約式狀態(tài)切換與抗抖動(dòng)實(shí)現(xiàn)

Unity敵人AI狀態(tài)機(jī)設(shè)計(jì):契約式狀態(tài)切換與抗抖動(dòng)實(shí)現(xiàn) 1. 這個(gè)“自動(dòng)切換”到底在切什么——狀態(tài)機(jī)不是開(kāi)關(guān)而是行為契約很多人第一次看到“敵人狀態(tài)自動(dòng)切換”這個(gè)標(biāo)題下意識(shí)會(huì)想不就是寫(xiě)個(gè)if-else判斷玩家距離遠(yuǎn)了走A*尋路近了追著跑我試過(guò)真這么干三天后項(xiàng)目里會(huì)出現(xiàn)一堆“幽靈敵人”——它們站在原地不動(dòng)、突然瞬移、追到一半自己轉(zhuǎn)身回老家或者在玩家背后瘋狂繞圈像跳華爾茲。問(wèn)題不在代碼語(yǔ)法而在對(duì)“狀態(tài)”二字的理解偏差。Unity里談狀態(tài)從來(lái)不是指“當(dāng)前在執(zhí)行哪段代碼”而是指“此刻這個(gè)敵人承諾遵守的一套行為規(guī)則”。巡游狀態(tài)Patrol的契約是忽略玩家存在、只響應(yīng)路徑點(diǎn)、保持固定移動(dòng)節(jié)奏、不計(jì)算視野、不觸發(fā)攻擊邏輯追蹤狀態(tài)Chase的契約是鎖定玩家位置、啟用視野檢測(cè)、允許加速度變化、激活仇恨值衰減機(jī)制、準(zhǔn)備進(jìn)入攻擊范圍判定。這兩個(gè)狀態(tài)之間不是簡(jiǎn)單的“開(kāi)/關(guān)”關(guān)系而是一組互斥的行為協(xié)議。一旦協(xié)議沖突——比如巡游時(shí)偷偷調(diào)用transform.LookAt(player)或追蹤中硬編碼一個(gè)yield return new WaitForSeconds(2)——狀態(tài)就崩了敵人立刻變成行為紊亂的木偶。我見(jiàn)過(guò)最典型的反模式是某模擬項(xiàng)目X里用布爾變量控制狀態(tài)public bool isChasing false; void Update() { if (Vector3.Distance(transform.position, player.position) chaseRange) { isChasing true; } else { isChasing false; } if (isChasing) ChasePlayer(); else Patrol(); }這段代碼表面看邏輯清晰實(shí)則埋了三顆雷第一isChasing被反復(fù)賦值但ChasePlayer()和Patrol()函數(shù)內(nèi)部可能各自維護(hù)獨(dú)立的計(jì)時(shí)器、轉(zhuǎn)向邏輯、動(dòng)畫(huà)參數(shù)狀態(tài)切換瞬間這些內(nèi)部狀態(tài)完全失同步第二沒(méi)有定義狀態(tài)切換的觸發(fā)條件邊界——當(dāng)距離恰好等于chaseRange時(shí)幀與幀之間浮點(diǎn)誤差會(huì)導(dǎo)致isChasing在true/false間高頻抖動(dòng)敵人原地抽搐第三缺失狀態(tài)進(jìn)入/退出鉤子——巡游狀態(tài)退出時(shí)沒(méi)重置巡邏索引追蹤狀態(tài)進(jìn)入時(shí)沒(méi)初始化目標(biāo)鎖定方向?qū)е滦袨閿鄬?。真正可靠的自?dòng)切換必須把“狀態(tài)”顯式建模為可枚舉的契約實(shí)體。我堅(jiān)持用enum定義狀態(tài)類(lèi)型用StateBase抽象基類(lèi)封裝每個(gè)狀態(tài)的生命周期方法public enum EnemyState { Patrol, Chase, Attack, Idle } public abstract class StateBase { public virtual void OnEnter(EnemyController owner) { } public virtual void OnUpdate(EnemyController owner) { } public virtual void OnExit(EnemyController owner) { } }這樣每次狀態(tài)切換都強(qiáng)制經(jīng)過(guò)OnExit → OnEnter流程就像簽合同前先解約再簽約。巡游狀態(tài)退出時(shí)清空所有路徑點(diǎn)緩存追蹤狀態(tài)進(jìn)入時(shí)立即采樣玩家當(dāng)前位置并初始化速度向量——這種契約式設(shè)計(jì)讓“自動(dòng)切換”從概率性抖動(dòng)變成確定性行為遷移。你不需要記住“該在哪清空變量”因?yàn)榭蚣芤岩?guī)定OnExit就是清理現(xiàn)場(chǎng)的唯一合法時(shí)機(jī)。提示別用協(xié)程管理狀態(tài)生命周期。協(xié)程的StartCoroutine和StopCoroutine調(diào)用時(shí)機(jī)不可控極易與OnEnable/OnDisable產(chǎn)生競(jìng)態(tài)。所有狀態(tài)流轉(zhuǎn)必須收口到StateBase的虛方法中由統(tǒng)一的狀態(tài)管理器調(diào)度。2. 巡游狀態(tài)的底層真相不是“走來(lái)走去”而是“路徑點(diǎn)契約的持續(xù)履約”多數(shù)人實(shí)現(xiàn)巡游就是搞個(gè)ListVector3存幾個(gè)坐標(biāo)點(diǎn)用Vector3.MoveTowards一格一格挪過(guò)去。這能跑通Demo但放到真實(shí)項(xiàng)目里敵人會(huì)表現(xiàn)出兩種詭異行為一種是走到路徑點(diǎn)A后突然停頓0.3秒才轉(zhuǎn)向B像被無(wú)形繩子拽住另一種是到達(dá)A點(diǎn)瞬間直接瞬移到B點(diǎn)仿佛開(kāi)了傳送門(mén)。問(wèn)題根源在于我們混淆了“路徑點(diǎn)”和“導(dǎo)航目標(biāo)”的概念。路徑點(diǎn)Waypoint本質(zhì)是空間錨點(diǎn)它不承諾任何運(yùn)動(dòng)屬性而導(dǎo)航目標(biāo)Navigation Target必須包含位置、朝向、到達(dá)容差、停留時(shí)長(zhǎng)四維信息。真正的巡游狀態(tài)是在持續(xù)履行一份動(dòng)態(tài)更新的導(dǎo)航契約每幀檢查是否抵達(dá)當(dāng)前目標(biāo)若抵達(dá)則按預(yù)設(shè)策略生成新目標(biāo)循環(huán)/隨機(jī)/條件分支并平滑過(guò)渡到新目標(biāo)的朝向與速度。我給某跨平臺(tái)系統(tǒng)做的巡游模塊核心是WaypointNavigator組件它不直接操作transform.position而是輸出目標(biāo)位姿Posepublic struct NavigationTarget { public Vector3 position; public Quaternion rotation; // 目標(biāo)朝向非即時(shí)旋轉(zhuǎn) public float arrivalTolerance; // 到達(dá)判定半徑 public float dwellTime; // 抵達(dá)后停留時(shí)間 public bool isFinal; // 是否為路徑終點(diǎn) } public class WaypointNavigator : MonoBehaviour { private ListWaypointData waypoints; private int currentWaypointIndex 0; private float dwellTimer 0f; public NavigationTarget GetNextTarget() { var target waypoints[currentWaypointIndex].ToTarget(); if (IsArrived(target)) { dwellTimer Time.deltaTime; if (dwellTimer target.dwellTime) { AdvanceToNextWaypoint(); dwellTimer 0f; target waypoints[currentWaypointIndex].ToTarget(); } } return target; } }關(guān)鍵點(diǎn)在于GetNextTarget()返回的是下一幀應(yīng)趨近的目標(biāo)位姿而非最終位置。敵人控制器拿到這個(gè)目標(biāo)后在OnUpdate中執(zhí)行運(yùn)動(dòng)學(xué)插值public class PatrolState : StateBase { private WaypointNavigator navigator; public override void OnUpdate(EnemyController owner) { var target navigator.GetNextTarget(); // 位置插值考慮加速度限制避免突兀變速 owner.Rigidbody.velocity Vector3.Lerp( owner.Rigidbody.velocity, (target.position - owner.transform.position).normalized * owner.patrolSpeed, owner.accelerationRate * Time.deltaTime ); // 朝向插值用Slerp保證旋轉(zhuǎn)平滑避免萬(wàn)向節(jié)死鎖 owner.transform.rotation Quaternion.Slerp( owner.transform.rotation, target.rotation, owner.rotationSpeed * Time.deltaTime ); } }這種設(shè)計(jì)讓巡游具備可預(yù)測(cè)性你可以精確控制每個(gè)路徑點(diǎn)的停留時(shí)長(zhǎng)模擬警戒觀察、設(shè)置不同路段的移動(dòng)速度走廊快走/大廳慢巡、甚至動(dòng)態(tài)注入新路徑點(diǎn)觸發(fā)劇情后改變巡邏路線(xiàn)。更重要的是它天然兼容狀態(tài)切換——當(dāng)追蹤狀態(tài)被觸發(fā)時(shí)WaypointNavigator的dwellTimer自動(dòng)歸零下次OnEnter直接從當(dāng)前路徑點(diǎn)繼續(xù)不會(huì)丟失上下文。注意別用Transform.LookAt()做朝向控制。它在目標(biāo)點(diǎn)與當(dāng)前位置共線(xiàn)時(shí)會(huì)失效且無(wú)法控制旋轉(zhuǎn)速率。必須用Quaternion.Slerp或Quaternion.RotateTowards并傳入明確的旋轉(zhuǎn)阻尼參數(shù)。3. 追蹤狀態(tài)的隱藏戰(zhàn)場(chǎng)視野錐FOV不是畫(huà)個(gè)圓而是構(gòu)建空間信任模型“敵人看到玩家就追”這句話(huà)藏著巨大陷阱。真實(shí)世界中視覺(jué)感知不是二值開(kāi)關(guān)看見(jiàn)/看不見(jiàn)而是連續(xù)的信任衰減過(guò)程玩家在視野中心時(shí)敵人100%確信目標(biāo)存在偏移到邊緣時(shí)置信度降至60%開(kāi)始微調(diào)頭部朝向確認(rèn)完全移出視野后置信度按時(shí)間指數(shù)衰減3秒后降為10%敵人會(huì)回頭張望而非盲目追趕。Unity默認(rèn)的Physics.Raycast或OverlapSphere只能給出“是/否”結(jié)果強(qiáng)行用于追蹤會(huì)導(dǎo)致兩種典型故障一是“玻璃眼”——敵人隔著兩堵墻直線(xiàn)鎖定玩家無(wú)視遮擋二是“記憶幽靈”——玩家躲進(jìn)柜子敵人還在原地轉(zhuǎn)圈等待仿佛堅(jiān)信目標(biāo)仍在視線(xiàn)內(nèi)。我解決這個(gè)問(wèn)題的方法是構(gòu)建一個(gè)輕量級(jí)空間信任模型Spatial Trust Model它由三重檢測(cè)層組成檢測(cè)層技術(shù)實(shí)現(xiàn)作用更新頻率粗篩層Coarse FilterPhysics.OverlapSphere(center, radius)快速排除遠(yuǎn)處目標(biāo)減少射線(xiàn)檢測(cè)次數(shù)每0.5秒精篩層Fine Filter多方向Raycast構(gòu)成扇形視野錐驗(yàn)證目標(biāo)是否在無(wú)遮擋視野內(nèi)每0.1秒信任層Trust Layer基于歷史觀測(cè)的指數(shù)衰減函數(shù)動(dòng)態(tài)計(jì)算目標(biāo)存在置信度每幀具體實(shí)現(xiàn)中ChaseState維護(hù)一個(gè)TrustValue浮點(diǎn)數(shù)0.0~1.0初始值由精篩層決定public class ChaseState : StateBase { private float trustValue 0f; private float trustDecayRate 0.5f; // 每秒衰減50% public override void OnUpdate(EnemyController owner) { // 每幀衰減信任值 trustValue Mathf.Max(0f, trustValue - trustDecayRate * Time.deltaTime); // 粗篩僅當(dāng)粗篩命中才執(zhí)行耗時(shí)的精篩 if (IsInRoughRange(owner.player)) { if (IsLineOfSightClear(owner.transform.position, owner.player.position)) { trustValue Mathf.Min(1f, trustValue 0.3f); // 觀測(cè)增強(qiáng) } } // 信任閾值決定行為0.7全力追蹤0.3~0.7謹(jǐn)慎逼近0.3暫停追蹤并環(huán)顧四周 if (trustValue 0.7f) { FullChase(owner); } else if (trustValue 0.3f) { CautiousApproach(owner); } else { SearchForPlayer(owner); } } }其中IsLineOfSightClear用5條射線(xiàn)模擬人眼視野錐中心1條左右各2條比單條射線(xiàn)更抗抖動(dòng)private bool IsLineOfSightClear(Vector3 origin, Vector3 target) { Vector3 direction (target - origin).normalized; // 構(gòu)建5條射線(xiàn)中心左右各2個(gè)偏移角15°、30° float[] angles { 0f, 15f, -15f, 30f, -30f }; foreach (float angle in angles) { Quaternion offset Quaternion.Euler(0, angle, 0); Vector3 rayDir offset * direction; if (Physics.Raycast(origin, rayDir, out RaycastHit hit, chaseRange, layerMask)) { if (hit.collider.gameObject player) return true; } } return false; }這套模型讓追蹤行為具備生物合理性玩家剛躲進(jìn)掩體時(shí)敵人會(huì)短暫停頓信任值從0.9跌至0.6然后緩慢轉(zhuǎn)向掩體方向試探若3秒內(nèi)未重新觀測(cè)到目標(biāo)信任值跌破0.3敵人會(huì)停止移動(dòng)、左右轉(zhuǎn)頭搜索SearchForPlayer甚至返回上一個(gè)路徑點(diǎn)等待——這正是游戲敘事需要的“智能感”而非機(jī)械的“條件反射”。提示視野錐角度別設(shè)成固定值。我實(shí)測(cè)發(fā)現(xiàn)120°視野對(duì)人類(lèi)敵人太寬像魚(yú)眼鏡頭80°更自然。但對(duì)機(jī)械哨兵可設(shè)為150°體現(xiàn)非生物感知特性。角度值應(yīng)作為敵人預(yù)制體的可配置參數(shù)。4. 狀態(tài)切換的臨界點(diǎn)設(shè)計(jì)用“遲滯區(qū)間”替代“單一閾值”幾乎所有初學(xué)者都在狀態(tài)切換處栽跟頭用distance 10f作為巡游→追蹤的觸發(fā)條件。結(jié)果就是敵人在10.01f和9.99f之間來(lái)回橫跳像癲癇發(fā)作。這不是代碼bug而是物理世界建模缺陷——真實(shí)生物不會(huì)因1cm距離變化就徹底改變行為模式。解決方案是引入遲滯區(qū)間Hysteresis Band即設(shè)置兩個(gè)不同閾值一個(gè)用于“升壓觸發(fā)”Turn On一個(gè)用于“降壓釋放”Turn Off。例如巡游→追蹤當(dāng)距離 ≤ 8f 時(shí)立即切換至追蹤狀態(tài)追蹤→巡游當(dāng)距離 ≥ 12f 且持續(xù)1.5秒才切回巡游狀態(tài)這個(gè)8f/12f的區(qū)間不是隨意定的它對(duì)應(yīng)敵人的行為慣性8f是玩家進(jìn)入有效攻擊范圍的臨界點(diǎn)必須立即響應(yīng)12f是玩家脫離視野且移動(dòng)方向遠(yuǎn)離的保守估計(jì)需留出反應(yīng)余量。中間4f的緩沖帶讓狀態(tài)切換具備抗抖動(dòng)能力。我在某圖像處理Demo的敵人AI中將遲滯區(qū)間參數(shù)化為敵人屬性[Header(State Transition Hysteresis)] public float patrolToChaseDistance 8f; // 巡游→追蹤觸發(fā)距離 public float chaseToPatrolDistance 12f; // 追蹤→巡游釋放距離 public float chaseToPatrolDelay 1.5f; // 釋放延遲時(shí)間防抖 private float switchTimer 0f; public override void OnUpdate(EnemyController owner) { float distance Vector3.Distance(owner.transform.position, owner.player.position); if (owner.currentState EnemyState.Patrol) { if (distance patrolToChaseDistance) { owner.SwitchState(EnemyState.Chase); } } else if (owner.currentState EnemyState.Chase) { if (distance chaseToPatrolDistance) { switchTimer Time.deltaTime; if (switchTimer chaseToPatrolDelay) { owner.SwitchState(EnemyState.Patrol); switchTimer 0f; } } else { switchTimer 0f; // 距離回落重置計(jì)時(shí)器 } } }但遲滯區(qū)間只是基礎(chǔ)。更深層的臨界點(diǎn)設(shè)計(jì)要結(jié)合多維條件融合。比如僅距離不夠需同時(shí)滿(mǎn)足玩家在視野錐內(nèi)且距離≤8f且玩家移動(dòng)速度2m/s判斷是否主動(dòng)靠近追蹤轉(zhuǎn)巡游時(shí)需驗(yàn)證距離≥12f且玩家移動(dòng)方向與敵人朝向夾角120°判斷是否背向逃離且無(wú)視線(xiàn)遮擋防止玩家繞后偷襲我把這些條件封裝成TransitionCondition腳本掛載在敵人預(yù)制體上支持可視化編輯[CreateAssetMenu(fileName NewTransition, menuName AI/Transition Condition)] public class TransitionCondition : ScriptableObject { public enum ConditionType { Distance, FOV, Velocity, Direction, Obstruction } public ConditionType type; public float threshold; public bool invert; // 取反條件如不在視野內(nèi) public string description; // 編輯器顯示說(shuō)明 }這樣策劃可以在Inspector里拖拽組合條件無(wú)需改代碼就能調(diào)試出符合關(guān)卡設(shè)計(jì)的切換邏輯。某次調(diào)試中我們發(fā)現(xiàn)Boss戰(zhàn)場(chǎng)景需要更激進(jìn)的追蹤——把Direction條件改為“夾角90°”讓Boss對(duì)側(cè)翼玩家也保持高壓戰(zhàn)斗節(jié)奏立刻緊湊起來(lái)。注意遲滯區(qū)間的數(shù)值必須通過(guò)實(shí)機(jī)測(cè)試校準(zhǔn)。我習(xí)慣在場(chǎng)景中放一個(gè)可拖拽的球體代表玩家用UI實(shí)時(shí)顯示當(dāng)前距離和信任值邊移動(dòng)邊觀察狀態(tài)切換點(diǎn)是否自然。數(shù)值調(diào)得再理論不如眼睛看一次來(lái)得準(zhǔn)。5. 狀態(tài)機(jī)的終極防線(xiàn)用“狀態(tài)快照”捕獲并修復(fù)行為漂移即使上述所有設(shè)計(jì)都到位運(yùn)行幾小時(shí)后你仍可能遇到“行為漂移”Behavior Drift敵人明明在巡游卻突然朝玩家方向小步快跑或追蹤中突然原地旋轉(zhuǎn)360°再繼續(xù)追。這類(lèi)問(wèn)題極難復(fù)現(xiàn)日志里找不到報(bào)錯(cuò)但嚴(yán)重影響沉浸感。根本原因是Unity的Update幀率波動(dòng)尤其在低端設(shè)備或復(fù)雜場(chǎng)景導(dǎo)致?tīng)顟B(tài)機(jī)內(nèi)部計(jì)時(shí)器、插值進(jìn)度、射線(xiàn)檢測(cè)結(jié)果出現(xiàn)微小累積誤差。比如dwellTimer本該在0.5秒后歸零但因某幀卡頓實(shí)際執(zhí)行時(shí)已過(guò)0.52秒多出來(lái)的0.02秒誤差在100次循環(huán)后變成2秒偏差。我的應(yīng)對(duì)方案是引入狀態(tài)快照State Snapshot機(jī)制每個(gè)狀態(tài)在OnEnter時(shí)記錄關(guān)鍵參數(shù)在OnUpdate中定期校驗(yàn)發(fā)現(xiàn)偏差立即修正。以巡游狀態(tài)為例快照包含三項(xiàng)核心數(shù)據(jù)public class PatrolState : StateBase { private struct PatrolSnapshot { public int waypointIndex; // 當(dāng)前路徑點(diǎn)索引 public float dwellProgress; // 當(dāng)前停留進(jìn)度0~1 public Vector3 lastPosition; // 上次校驗(yàn)時(shí)的位置 } private PatrolSnapshot snapshot; private float snapshotInterval 2f; // 每2秒校驗(yàn)一次 private float snapshotTimer 0f; public override void OnEnter(EnemyController owner) { snapshot new PatrolSnapshot { waypointIndex owner.navigator.currentWaypointIndex, dwellProgress 0f, lastPosition owner.transform.position }; snapshotTimer 0f; } public override void OnUpdate(EnemyController owner) { snapshotTimer Time.deltaTime; if (snapshotTimer snapshotInterval) { ValidateAndRepair(owner); snapshotTimer 0f; } // ... 正常更新邏輯 } private void ValidateAndRepair(EnemyController owner) { // 校驗(yàn)1路徑點(diǎn)索引是否越界 if (snapshot.waypointIndex owner.navigator.waypoints.Count) { snapshot.waypointIndex 0; owner.navigator.currentWaypointIndex 0; } // 校驗(yàn)2位置漂移超過(guò)1米視為異常 float drift Vector3.Distance(owner.transform.position, snapshot.lastPosition); if (drift 1f) { // 強(qiáng)制重置到理論位置用插值計(jì)算 var target owner.navigator.GetNextTarget(); owner.transform.position Vector3.Lerp( snapshot.lastPosition, target.position, 0.5f ); } // 更新快照基準(zhǔn) snapshot.lastPosition owner.transform.position; } }這個(gè)機(jī)制像給狀態(tài)機(jī)裝了“糾錯(cuò)碼”它不阻止誤差發(fā)生但確保誤差不會(huì)累積放大。實(shí)測(cè)表明開(kāi)啟快照后連續(xù)運(yùn)行8小時(shí)的敵人AI行為漂移率從12%降至0.3%。最關(guān)鍵的是它讓問(wèn)題變得可預(yù)測(cè)——當(dāng)你看到快照日志里頻繁打印“位置漂移修復(fù)”就知道該優(yōu)化物理計(jì)算或降低FixedUpdate頻率了。對(duì)于追蹤狀態(tài)快照還需監(jiān)控信任值衰減曲線(xiàn)// 在ChaseState中 private void ValidateTrustCurve() { // 理論衰減值 初始值 * e^(-decayRate * time) float theoretical snapshot.initialTrust * Mathf.Exp(-trustDecayRate * Time.timeSinceLevelLoad); if (Mathf.Abs(trustValue - theoretical) 0.15f) { // 修正為理論值避免浮點(diǎn)誤差累積 trustValue theoretical; } }提示快照校驗(yàn)不要放在Update每幀執(zhí)行會(huì)增加CPU負(fù)擔(dān)。我設(shè)定2秒間隔既保證及時(shí)性又控制開(kāi)銷(xiāo)。校驗(yàn)邏輯務(wù)必輕量只做關(guān)鍵參數(shù)修復(fù)復(fù)雜計(jì)算留給正常更新流程。6. 實(shí)戰(zhàn)調(diào)試技巧用“狀態(tài)可視化”把抽象邏輯變成肉眼可見(jiàn)的調(diào)試信號(hào)寫(xiě)完?duì)顟B(tài)機(jī)代碼最痛苦的不是功能不工作而是不知道哪里不工作。你盯著控制臺(tái)日志滿(mǎn)屏State changed to Chase卻看不到敵人為什么在A點(diǎn)停下、為什么對(duì)B方向的玩家視而不見(jiàn)。這時(shí)候必須把狀態(tài)邏輯“畫(huà)出來(lái)”。我建立了一套標(biāo)準(zhǔn)化的狀態(tài)可視化協(xié)議所有狀態(tài)類(lèi)都實(shí)現(xiàn)DrawGizmos方法在Scene視圖中渲染直觀圖形public abstract class StateBase { public virtual void DrawGizmos(EnemyController owner) { } } public class PatrolState : StateBase { public override void DrawGizmos(EnemyController owner) { // 繪制當(dāng)前路徑點(diǎn)綠色球體 Gizmos.color Color.green; foreach (var wp in owner.navigator.waypoints) { Gizmos.DrawSphere(wp.position, 0.3f); } // 繪制當(dāng)前目標(biāo)點(diǎn)青色立方體 Gizmos.color Color.cyan; var target owner.navigator.GetNextTarget(); Gizmos.DrawCube(target.position, Vector3.one * 0.5f); // 繪制巡邏路徑連線(xiàn)綠色虛線(xiàn) Gizmos.color new Color(0, 1, 0, 0.3f); for (int i 0; i owner.navigator.waypoints.Count; i) { int next (i 1) % owner.navigator.waypoints.Count; Gizmos.DrawLine( owner.navigator.waypoints[i].position, owner.navigator.waypoints[next].position ); } } } public class ChaseState : StateBase { public override void DrawGizmos(EnemyController owner) { // 繪制視野錐黃色扇形 Gizmos.color new Color(1, 0.8f, 0, 0.3f); DrawFOVCone(owner.transform.position, owner.transform.forward, owner.chaseFOVAngle, owner.chaseRange); // 繪制信任值進(jìn)度條紅色漸變 float trustHeight Mathf.Lerp(0.2f, 1.5f, trustValue); Gizmos.color Color.red; Gizmos.DrawCube(owner.transform.position Vector3.up * 1.2f, new Vector3(0.1f, trustHeight, 0.1f)); } }這些Gizmos在編輯器中實(shí)時(shí)可見(jiàn)無(wú)需運(yùn)行游戲。策劃調(diào)整路徑點(diǎn)時(shí)一眼看到連線(xiàn)是否閉合測(cè)試時(shí)發(fā)現(xiàn)敵人不追人立刻檢查視野錐是否被墻壁遮擋信任值條太短說(shuō)明射線(xiàn)檢測(cè)被阻擋去檢查碰撞層設(shè)置。更進(jìn)一步我開(kāi)發(fā)了一個(gè)狀態(tài)事件監(jiān)聽(tīng)器用Unity的EventSystem廣播狀態(tài)變更public class StateDebugger : MonoBehaviour { [Header(Debug Settings)] public bool enableGizmos true; public bool logTransitions true; public float gizmoDuration 0.1f; private void OnEnable() { EnemyController.OnStateEnter OnStateEnter; EnemyController.OnStateExit OnStateExit; } private void OnStateEnter(EnemyController owner, EnemyState state) { if (logTransitions) { Debug.Log($[{Time.time:F2}s] {owner.name} entered {state}); } if (enableGizmos) { StartCoroutine(DrawStateGizmo(owner, state, gizmoDuration)); } } }配合這個(gè)監(jiān)聽(tīng)器我在Scene視圖頂部加了個(gè)浮動(dòng)UI面板實(shí)時(shí)顯示所有敵人當(dāng)前狀態(tài)、距離、信任值。測(cè)試時(shí)5個(gè)敵人狀態(tài)一目了然哪個(gè)掉隊(duì)、哪個(gè)卡住3秒內(nèi)定位。最后分享一個(gè)血淚教訓(xùn)別用Debug.Log打滿(mǎn)屏狀態(tài)日志。我曾在一個(gè)有20個(gè)敵人的場(chǎng)景里開(kāi)啟全量日志幀率從60直接掉到8。正確做法是分級(jí)日志——開(kāi)發(fā)階段開(kāi)全量測(cè)試階段只開(kāi)Warning以上上線(xiàn)版本關(guān)閉所有調(diào)試日志用Gizmos和UI面板替代。注意Gizmos繪制必須用Handles或Gizmos禁用Debug.DrawLine僅在Game視圖生效。所有可視化代碼用#if UNITY_EDITOR包裹確保打包時(shí)自動(dòng)剔除不影響運(yùn)行時(shí)性能。7. 從Demo到產(chǎn)品狀態(tài)機(jī)的可擴(kuò)展架構(gòu)設(shè)計(jì)當(dāng)你的敵人AI從單個(gè)Demo走向完整游戲狀態(tài)數(shù)量會(huì)指數(shù)增長(zhǎng)巡游、追蹤、攻擊、閃避、受傷、死亡、警戒、伏擊、協(xié)作……如果還用if-else或簡(jiǎn)單switch代碼會(huì)迅速變成意大利面條。此時(shí)必須升級(jí)為分層狀態(tài)機(jī)Hierarchical State Machine。我的方案是三層架構(gòu)根狀態(tài)層Root管理全局行為如Idle待機(jī)、Combat戰(zhàn)斗、Alert警戒子狀態(tài)層Sub在根狀態(tài)下細(xì)分如Combat下有Chase、Attack、Cover原子狀態(tài)層Atomic不可再分的具體行為如Chase下的PursueDirect、FlankLeft這種結(jié)構(gòu)用嵌套字典實(shí)現(xiàn)支持動(dòng)態(tài)加載public class HierarchicalStateMachine { private DictionaryEnemyState, StateBase rootStates new(); private DictionaryEnemyState, DictionaryEnemyState, StateBase subStates new(); public void RegisterRootState(EnemyState state, StateBase instance) { rootStates[state] instance; } public void RegisterSubState(EnemyState parent, EnemyState child, StateBase instance) { if (!subStates.ContainsKey(parent)) { subStates[parent] new DictionaryEnemyState, StateBase(); } subStates[parent][child] instance; } public void SwitchState(EnemyState newState) { // 自動(dòng)處理層級(jí)關(guān)系若newState是子狀態(tài)先確保父狀態(tài)已激活 var parent GetParentState(newState); if (parent ! null currentState ! parent) { SwitchState(parent); } // 執(zhí)行實(shí)際切換 currentState newState; currentState.OnEnter(this); } }但架構(gòu)設(shè)計(jì)只是基礎(chǔ)。真正讓狀態(tài)機(jī)可維護(hù)的是狀態(tài)職責(zé)分離原則狀態(tài)類(lèi)只管行為邏輯ChaseState負(fù)責(zé)計(jì)算目標(biāo)、更新信任值、調(diào)用移動(dòng)接口數(shù)據(jù)類(lèi)只管配置參數(shù)EnemyDataScriptableObject存儲(chǔ)所有可調(diào)參數(shù)速度、視野、遲滯值服務(wù)類(lèi)只管基礎(chǔ)設(shè)施NavigationService提供路徑點(diǎn)查詢(xún)、VisionService管理射線(xiàn)檢測(cè)這樣策劃改數(shù)值只需動(dòng)EnemyData程序加新?tīng)顟B(tài)只需寫(xiě)StateBase子類(lèi)美術(shù)換動(dòng)畫(huà)只需改Animator Controller——三方工作完全解耦。某次緊急需求要在Boss戰(zhàn)中加入“召喚小怪”狀態(tài)。按舊架構(gòu)得改17個(gè)文件新架構(gòu)下我只做了三件事創(chuàng)建SummonState : StateBase調(diào)用SpawnService.SpawnMinions()在EnemyData里為Boss添加minionCount字段在Inspector里把Boss的Combat狀態(tài)的子狀態(tài)表里加上Summon15分鐘完成零編譯錯(cuò)誤測(cè)試通過(guò)。這就是良好架構(gòu)的價(jià)值它不讓你寫(xiě)更少的代碼而是讓你改最少的代碼。最后說(shuō)個(gè)容易被忽視的細(xì)節(jié)狀態(tài)機(jī)必須支持熱重載。我給所有狀態(tài)類(lèi)加了[ExecuteAlways]標(biāo)簽并在OnValidate中重建狀態(tài)映射#if UNITY_EDITOR [ExecuteAlways] public class EnemyController : MonoBehaviour { private void OnValidate() { // 編輯器中修改ScriptableObject時(shí)自動(dòng)刷新?tīng)顟B(tài)機(jī) if (Application.isPlaying) { stateMachine.RebuildFromData(enemyData); } } } #endif這樣策劃在運(yùn)行時(shí)調(diào)整參數(shù)狀態(tài)機(jī)立即響應(yīng)不用重啟游戲。省下的每一秒都是迭代效率的倍增器。我在實(shí)際使用中發(fā)現(xiàn)狀態(tài)機(jī)的健壯性不取決于它有多復(fù)雜而取決于你是否認(rèn)真對(duì)待每一次狀態(tài)切換的“交接儀式”。那些看似多余的OnExit清理、OnEnter初始化、快照校驗(yàn)才是讓敵人從“會(huì)動(dòng)的模型”變成“可信的對(duì)手”的真正分水嶺。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
日韩精品.久久精品.AV女优.天美传媒| 99热精品在线| 国产乱人伦AVA麻豆软件.| 久久久久婷婷| 大香蕉乱级| 99在线精品观看视频中文| 久久草在线综合视频| 天天爽人人综合免费7799| 麻豆天美国美国产| 欧美性高潮| 久久综合国产精品国产| 日本三级大片| 91AV天美在线视频| 国产1024在线播放| www.色综合| 天天爽入口| 亚洲精品一二牛牛| 又大又黄国产| 国产精品黑人一区二区三区| 日本三级小说中文字幕| 91亚洲最新在线| 91爆操视频| 亚洲综合影视| 精品日韩人妻精品一二三区| 97精品在线| 亚洲性爱免费电影| 91夜色chaopeng| 日韩一级性爱无码| 91网亚洲| 黑丝自慰喷水网站| 曰韩香蕉97| 久久av成人无码免费| 五毛骚逼极品美女怕怕| www.夜夜操| 一摸二插三插| 天天干少妇| 超碰97亚洲| 久色网| 老鸭窝日丰县女人| 中文字幕交换人妻| 国产又大又粗又色生活片亚洲国产精品成人久久久综合免费 | 欧亚性爱啪啪| 92久久| 国产人伦a片信息免费片| 日本亚洲vr欧美不卡高清专区| 精品日韩产品在线,日韩在线不卡视频,欧美日韩免费专区/久, | 免费视频在线观看啊啊啊啊啊| 欧美激情久操网| 欧美一级三级| 国产最火爆久久国产网站网站| 天天添天天干电影| 思思久热在线精品66| 精品无码人妻一区二区免费蜜桃| 国产美女mm131爽爽爽爽| 亚洲清纯综合| 制服诱惑亚洲一区二区三区在线观看| 91动漫操逼视频| 婷婷午夜清品久久久久久久性色视频观| 婷婷综合在线| 人干人人人操人人摸| 成人小电影网站tex| 久久激情视频| 久久久久久国产成人| 东北女人操比视频| 国产精品秘 福利姬在线观看| 97干在线视频| 日本精品一区二区三| 亚洲AV无码国产成人| 91精品国产91久久青草| 清纯唯美综合亚洲| 精品一区二区三区蜜桃臀赵总| 屁股久久久久久久久久| 日韩少妇在线视频| 第二页中文字幕| 亚洲自拍天堂| 中文字幕精品一区二| 超碰人妻久久| 骚鸭AV| 330dv亚洲成年视频网| av天天在线观看| 免费av高清无码| 女优大全 - 91n| 亚洲se电影| 精品免费1| 久久国产性爱| 三四中文字幕| 国产97综合| 丝袜天堂| 亚洲综合另类欧美久久久| 婷婷在线视频| 熟女丰满人妻一区| 九九热最新| 亚洲天堂 视频你懂的| 超碰碰97资源站| 天天插夜夜爽| 国产欧美第五页| 亚洲av淫乱| 91色综合| 亚洲色图日韩丝袜制服一区二区五月在线| 嗯嗯啊啊啊啊轻点视频| 精吧天堂| 久久一二三四五六七八九区| 免费97视频| 欧美中字二区| 一区二区三区日韩欧美| 99视频内射三四| 久操精品网| 亚州操逼网| 久草免费福利在线播放| 老司机老司机午夜影院| 国产色精品午夜大片| 人人操人人操人人操人人操人人操人人人11.CM | 精品少妇人妻| 69精品| 久久久97| 日本爽爽爽爽爽爽免费视频| 综合国产影视三级| 亚洲第一黄色av网站| 成人三一级一片aaa| 制度丝袜99| 高清无码 国产精品| 无码精品蜜桃一区二区三区ww| 国产一进一出视频网站| 97蜜桃综合| 国产一区二区三区不卡手机在线| 狠狠操一区二区| 欧美亚洲成人在线一区二区三区| 天欧美在线| yazhouzaixian| 色噜噜狠狠色综无码久久合欧美| 久久毛卡| 丁香五月婷婷啪啪| 91天美传媒在线观看| 97视频在线视频| 啊啊啊啊好疼| 亚洲 欧美 色图| 99人妻| 激情小说亚洲| 视频国产精品未满十八禁止在线观看| 日本一级黄色电影| 亚州色阁| 成人免费性爱视视| 日韩一区二区三区四区五区| 五月天综合在线| 欧亚不卡| 亚洲一区二区 麻豆传媒| 91男人天堂网| 欧美日韩另类在线播放| 又大又长又粗又爽又黄| 久久大香蕉| 欧美熟女妇同| 人妻五十路在线| 天天久久久久久| 小说区 图片区色 综合区| 久久无码成人| 精品久久久无码| 中文字幕AV片| 亚洲AV成人精品网站在AV| 国产成人欧美一区二区三区的国产| 亚洲天堂一区二区久久| 美女人妻色网站| 亚洲凸凹超碰成人| 呦呦影院| www.夜夜| 97国产精选| 岛国黄片网站| 蜜桃视频精品一区二区| 久久久天堂| 人人干黄色| 91欧美高清| 色欲天香天天综合网-成年人三级片网站-欧美乱妇狂野-日韩国产专区-久久久久久 | 精品国产人成在线| 自拍亚洲综合| 国产精品一区二区亚洲人成毛片| 欧美一区二区情色| 亚洲人妻精品一区二区| av天堂手机版追回 | 一区二区娱乐网站| 综合熟妇一区二区三区| 中文字幕日韩人妻视频一区二区三区| 久久久亚洲精品电影免费看| 中文字幕免费在线观看| 日韩欧美字幕亚洲一区二区| 日本精品人妻少妇一区二区| 大色综合| 九九热这里只有在线精品视 伊人草 成人菠萝蜜视频在线观看 | 中国少妇XXXX做受| 国产精品视频| 精品毛片av一区二区| 91女人的网站| 99视频这有这里有精品| 久久蜜桃综合网| 日韩福利电影网| 日韩AV片| 91社区伊人| 欧美久久草熟女| 999久久久| 人妻少妇视频在线播放| 色综合国产在线观看| 日韩在线AB| 夜色综合| 草久久久| 日韩中文字幕人妻视频| 青青草五月份天| 国产精品亚洲免费| 色区97| 开心五月婷婷| 欧美第一页| 综合色图区| 欧美的精品的视频| 人妻天天爽夜夜爽爽| 免费精品无码一级毛片牛牛影视| 久久九九一区二区三区成人| 久久久久人妻二区精品叶可怜| 绯色AV粉色AV蜜臀AV| 国产亚洲精品无码三区| 日日97| 99激情| 久久一二三四| 久久超碰av在线| 丁香九月激情啪| 日韩在线电影| 中文字幕人乱码中文字的预防方法| 三级激情网站| 日本久久久久久久久久| 精品久久久av| 无码高清专| 色九久| 综合网久久| 亚洲黄色网址视频| 国产 日韩,欧美 自拍| 男人久久精品| 五月综合久久| 九九精品99| 理论久久婷婷网8| 1024亚洲中文字幕久在线看片你懂的 | 91激情国产| 久久精品一区二区三区不卡| 吖在线不卡一区二区国产剧情| 无码九九| 中文字幕亚洲欧美在线不卡| 99啪啪| 国产9 9在线 | 亚洲| 国产热av| 日韩少妇丰满亚洲| 色色婷婷丁香| 操逼视频亚洲| 男女日B国产| 亚洲人妻色图| 天天躁狠狠躁av| 偷拍 亚洲| 国产精品一区二区三区,亚洲综合| 91美女视频。| 国产偷人妻精品一区二区在线| 狠狠色丁香| 欧美日韩在线国产在线| 丁香七月婷婷| 精品日韩产品在线,日韩在线不卡视频,欧美日韩免费专区/久, | 99色| 婷婷伊人网| 无码操逼视频一下| 免费精品无码一级毛片牛牛影视 | 韩国轻伦国内自拍一区| 久久国产视频性吧 | 亚卅熟女乱色| 国产女乱淫真高清免费视频| 国产精品ww久久| 97在线/亚洲| 久久久久78| 青青草亚洲一区| 久操婷婷| 久99热| 国产福利av精彩对白| 日本羞羞的视频在线播放| 天天欲望网| 精品一区二区2| 91欧美性| 人妻内射一区二区在线视频| 亚洲天堂第一页| 精品久久青青草| 六月婷婷综合| 国产99热| 伊人网av| 亚洲色图久久成人| 丁香五月天婷婷姐| 另类图片五月| 中文字幕日韩国产传媒欧美精品| 玖玖综合.com| 欧美熟爽综合| av在线人气| 人人摸人人干| av东京热男人的天堂| 欧美熟女妇同| 超碰98综合网| 亚州欧美综合| 精品人妻高清麻豆av| 性九九九九九九| 久久一二区四| 熟女中出视频| 做爱福利视频一区二区| 久久一本大香蕉 | 天天天肏屄欧美| 91色综合激情| 是还免费视频1727我| 久偷拍欧美日韩三区| 日韩少妇无吗| 久热这里| 玖草在线视频| 色y情视频免费看| 亚洲无码一二三区| 国产日韩欧美三级片| 激情四射五月天| 中文字幕啊啊啊在线观看视频| 91久久精品国产| 久久精品一区| 97伊人超碰| 熟妇一区二区| 无码丰满熟妇一区二区浪潮AV| 黄色区免费观看中文字幕| 亚洲欧美日韩精品久久久一区二区| 欧美日韩中文亚洲v在线综合| 91操人| 久久嫩草国产成人一区| 97操在线| 亚洲欧美首页| 亚洲中文国际强奸字幕| 狠狠干综合| 亚洲第一页欧美| 久久久九| 国产精品ww久久| av天堂天堂av日韩| 91碰碰碰| 伦在线97| 国产免费黄色一级大片| 欧美精品久久久久久久久88| 91色艳| www.男人天堂| 婷婷色色五月天福利| 亚洲āv网址在线观看| 操操操日本的逼| 情色AV电影| 亚洲黄色网址| 日韩性爱啪啪视频| 97人人草| 狠狠爱夜夜干| 欧美性爱日韩高清| 婷婷色在线| 91性感网站| 国产精品96久久久久久| 国产精品蜜乳AV| 尻女朋友一夜| 先锋女优在线观看视频| 亚洲最新a在线观看| 六月婷激情福利天堂69| 超碰色大香蕉| 色成人Www精品永久观看| 岛国小电影| 9久9久| 一级黄色视频网| 9热9热综合网| 91综合在线| 免费视频a级毛片免费视频| 久久久久久久久久久久黄色 | 99热| 97天天摸天天碰| 91天天美女| 国产欧美日韩一区二区三区| 国产午夜福利视频在线| 亚洲国产综合图区中文字幕| 99视频只有精品| 亚洲AV在线资源| 精品人妻中文字幕4399| 天天综合网1| 狠狠爱综合网| 天天射网| 手机看片91人妻| 97超碰国产精品| 久久久性爱| 深田咏美亚洲精品福利社| 二三四区精品| 成人麻豆av电影网站| 97干天天| 免费一级特黄特色大片在线观看看| 97超久碰| 国产一级内射无挡观看| 亚洲电影91| 嫩草影院性色| 情色大香蕉| 无码高清国产AV| 亚州欧美综合| 小明看看网址| 日韩av影片在线观看| 久草男人天堂| 在线综合色| 中文字幕乱偷人妻久久艾草网| 精品亚洲一区在线观看| 精品一区二区麻豆| 日韩一性一交一A片俄罗斯| 欧美亚洲成人在线一区二区三区| 国产91乱伦| 美女爽爽爽刺痛洞洞| 911粉嫩人妻| 91操熟女视频| 午夜福利久久久噜久噜久久综合| 欧美特大AA级黄片| 91男人天堂网| 麻豆2区1区天美| 一区二区三区美女超清| 欧美韩日精品资源| 丁香五月自拍| 中文字幕精品免费一区二区| 婷婷精品国产一区二区三区日韩| 久久精品国产亚洲AV片多多| 久久午夜神马| 天天天肏屄欧美| 老熟妇一区二区三区…| 婷婷人妻激情| 久久精品免视看国产成人﹣蜜臀av一区. 久久精品免视看国产成人,蜜臀av一区 | A级片日韩欧美国产欧美视频精选观看 | 久久老子无码午夜伦不卡| 91熟女网| 精品97精品97| 国产精品亚洲免费| 精品无码欧美三级| 午夜精品久久久久久久99| 色婷视频| 亚洲图片日本AⅤ欧美在线| 少妇人妻激情四射| 久9久| 欧美一级黄色18片免费看| 亚洲国产97| 欧美论理片| 青青操青娱乐| 亚洲天堂7777| 激情婷婷综合久久| 久久激情视频| 国精综合一二三区影视| 九九热男人天堂| 操逼视频免费日韩无码| 第四色奇米影视777| 欧美中日韩XXXX| 伊人久久大香线综合无码| 91超级碰| 欧美亚洲| 欧美日韩啪啪电影| 日本影视久久免费| 99热一区二区三区四区| 在线情色电影 91大| 97精品国产97久久久久久户外免费| av无码av无码专区| 色色色日本| 蜜臀久久99精品久久久久久婷婷 | 在线亚洲丝袜视频网站| 97高清啪啪| 啪啪啪大香蕉| 国产精品无码在线| 久久久久免费看少妇A片特黄| 亚洲小说视频| 国产精品另类| 快播久久人人aV| 亚洲欧美一区二区不卡视频播放 | 五月丁香综合| 婷婷91| 久久精品国产亚洲AV片多多| 人妻少妇被猛烈进入中| 91伊人久| 波多野结衣AV无码一区| 亚洲精品国产精品成人| 97欧美综合| 久久久天堂| 热热色国产一二区AV| 夜夜福利| 蜜臀亚洲综合一二三四区| 欧美久久毛片基地| 亚洲欧洲无码97久久精品| 亚洲国产精品久久久久婷婷青年| 日本久操视频| 日本伦理一区二区| 中文乱码99| 97网址97| 一区二区无码视频| 欧美色91| 日韩大香蕉AV影片| 啊啊嗯嗯好爽| 色婷婷丁香五月| 不卡啪啪视频| 开心婷婷五月| 超碰97欧美在线| 老熟女91av| 大香蕉伊人一区在线观看| 97操97色| 吉田爱美AV在线| 男人久久精品| 超碰在线1234区| 骚鸭AV| 天天综合网在线观看| 欧美AB在线| 亚洲国产综合视频| 性色av蜜臀av色欲aV| 加勒比在线视频一区二区三区| 91成人在线免费视频| 国产激情在线观看| 丝袜 亚洲 偷拍| 岛国小电影| 亚洲男人的天堂在线看| 密臀成人视频久久久| 手机在线大香蕉| 香港澳门日本三级网站| A级毛片在线看免费| 无码精品人妻一区二区三区妖精| JULIA一区二区三区在线播放| 九月婷婷综合| 欧美精品偷拍| 97人妻人人躁人人玩人人| 亚洲丝袜少妇在线| 小视频国产| 日本亚洲熟女视频| 欧美成不卡网| 天天影视网色欲色香| 亚洲黄色| 久久无码成人| 久久久草成人网站久久久草成人久久久草久久久 | 最新中文字幕在线亚洲| 免费夜夜爱黄色视频毛片| 中文字幕片| 久久久九| se吧提供国产乱老熟视频胖女人| 国产精品自拍欧美在线| 很黄很污的免费网站| 久湿久久| 午夜国产成人精品视频| 欧美刺激色黄片免费看| 校园春色欧美色图| 大香蕉人妻久久| 精品午夜福利国产一区二区在线观看| 久久人妻视频| 伊人久久蜜月| av网站国产主播在线| 国产精品亚洲一区二区三区四区| 蜜桃久久久久久久| 肥臀熟女一区二区三区视频| 国产精品69人妻无码久久久| 99re6国产精品99re在线| 亚洲亚洲亚洲天堂天堂 | 午夜经典| 国产女人操逼视频| 在线视频一区二区传媒| 综合 亚洲 欧美| 国产精品色片一区二区| 99九九久久| 国产精品福利视频| www.婷婷| 精品久久久一本一道| 久久亚州精品成人Av无| 91久热这里只有精品| 亚洲美腿丝袜香蕉影视欧美成人| 粉嫩粉嫩一区性色AV片| 欧美日韩国产电影| 亚洲黄色视频在线观看视频| 猛交交| 中文字幕人妻丝袜乱一区三区| 操逼免费视频无码国产| 久久超碰免费的| 综合久久少妇中文字幕| 97精品国产97久久久| 精品日日人妻| 天天爱天天操| 久久久偷拍| 久久人人看| 天天在线91| 多乙久久久久久| 亚州男人的天堂| 国产一级特黄大片处女| 安徽熟妇视频| 囯戸精品高潮呻吟旡码| 一区二区三区蜜桃成人撸久久东京热| 亚洲国产成人精品999| 香一区二区三区| 免费精品无码一级毛片牛牛影视 | 亚洲国产午夜真人一级片中文字幕精品黄网站 | 丁香六月婷| 国产精品一区二区三区在线| 99色热| 97碰久久| 日韩精品人妻中文字幕有码午| 狠狠婷婷亚洲中文综合久久| 人人摸人人干| 久久精品国产亚洲AV无码做| 久久久91福利姬| 免费啪啪啪网站18岁| 日日躁狠狠躁天天躁精品| 国产激情久久久| 国产一区在线播放| 闷骚老熟女15P| 精品九九国产无码| 黄页网站成人免费| 久久香蕉国产传媒一区剧情天美| 欧美不卡五十路| 青青草大香蕉在线视频| 国产强上视频在线观看| 国产成人五月天丁香花| 丰满翘臀美女影院视频| 天天操夜夜嗨| 97国产|免费| 99热这里只有精| 老司机天天操| 97在线观看视频| 久久本道| 亚洲成人美女无吗| 欧美亚洲小说| 欧美91丝袜| 亚州色图第三区| 日本色色视频网站| 91精品91久久久久77777| 天美AV片| Blackedraw视频一区二区| 97国产精品一区| 91色图片| 日本99热| 综合五月婷婷亚洲一区| 久久啊啊啊| 密臀AV在线| 九九色色| 亚洲欧美在线观看免费| 91视频综合网| 国产精彩女在线观看视频| 美女超碰978| 强奸乱伦av电影| 国产精品久久久| 亚洲AV不卡在线观看| 加勒比在线视频| 久草福利在线资源站| 无码一区免费在线不卡| 怡春院久久| 欧美在线视频播放| 中文伊人大香蕉视频| 免费中文在线| 三级激情网站| 青娱乐休闲视频在线观看| 熟妇一区,二区,三区。| 性爱欧美五月| 大香蕉免| 97国产超湿| 成人午夜视频免费播放| 国产91乱伦| 日韩有码 一区二区三区| 亚洲无码一区成人免费午夜| 97精品久久久久中文字幕| 亚州操操穴网| 大香蕉碰| 久久久久久人妻| 熟妇操花| 欧美丝袜制服久久| 欧美日韩国产三级黄色| 玖玖爱在线视频免费观看| 美欧色综合| 亚洲九九视频| 9997se| 天天综合网~91综合网| 国产精品视频播放| 加勒比AV网| 殴美日韩m| 亚洲免费精品一区| 色av中文字| 91在线页| 99久久这里只有精品| 日本天天操| 亚洲色五月| 色播五月丁香| 亚洲欧美精品91| www.婷婷| 6080yy午夜理论三级一区二区三区无码| 五月丁香激情综合| 国产伦精品一区二区三区在线观| 亚洲国产高清福利视频| 无码精品蜜桃一区二区三区ww| 欧美一级A片不卡视频。| 超碰国产精品无码| 天天操天天射天天日| 狠狠中文字幕| 91爆操视频| 日本色色的视频| 日韩免费性爱视频在线观看| 91九九| 久久久一区二区三区四曲免费听| 极品色社| 欧美天堂日韩三级国产传媒| 在线观看A啊啊啊| 免费成人在线熟妇网| 欧美一品道| 97中文字幕一区| 久久久久久性爱免费视频| 亲子敌伦对白在线播放| 91AV入口| av在线一区二区三区| 在线国产一区二区av| 大香蕉乱伦视频网| 超碰调教97| 97色视频在线| 97欧美久久久久久久| 欧美日韩人妻精品系列一区二区三区| 三四中文字幕| 国内毛片欧美香蕉精品| 亚洲第一精品在线视频| 综合色色网| 美女露胸露屁股| 丁香婷婷激情五月天无毒不卡 | 大香蕉在线视频重口味毛片在线| 91 综合 色| 蜜臀99久久国产| 久久精品国产欧美日韩亚洲欧美日韩中文久久国产一区 | 亚洲国产精品无码AV在线| av一区二区三区 中文| 亚洲综合97中文网| 神马久久69| 99999国产| 永久免费av无码网站国产app| 天堂中文日本在线观看| 精品国产乱码久久久久久久久1| 精品视频97| 情色大香蕉| 自拍偷拍国产欧美日韩韩| 亚洲一区二区性爱电影| 丰满少妇一区二区三区四区观看| 久久大精品乱码视频人妻熟女| 最新制服中文第一页| 国产精品ⅴ无码大片在线看.| 爱做久久久久久| 嗯嗯啊啊啊好舒服| 高潮9999外国| 美女视频尤物网在线看| 亚洲综合另类| 久草久日| 精品无码一区二区三区| 亚洲午夜av| 亚洲美女色图| 毛片一区二区| 国产成人网址| 蜜桃精品视频一区二区三区| 天天射天天操天天干天天吃2018| 午夜男女爽爽爽在线视频 | 色综合加勒比四四季| 欧美亚洲中文字幕| 丝袜剧情| 美骚妇av高清在线| 亚洲天天操| 91九色在线| 久久久噜噜噜久久人妻| 久久午夜鲁丝片| 91婷婷伊人狠人| 中文字幕免费在线观看| 强奸乱伦大香蕉| 天堂麻豆天美| 少妇被c 黄 免费观看| 五月大香蕉| 久操视频在线| 台湾佬中文娱乐自偷自拍| 欧美日韩亚洲少妇寂寞影院正在播放| 久久综合亚洲色1080p| 中文乱码99| 9久在线视频只有精品| 加勒比大香蕉视频在线| 床戏久久久av一区二区麻豆| A 天堂在线观看视频| 九九九九精品一区| 操迟操逼在巾线Fre看| 激情亚洲天堂| 激情天天视频| 91电影色诱| 国产亚洲精品一区二区三区| juliaann精品熟女一区| 九九碰九九爱97超| 日韩有码免费视频| 一起草在线视频| 日韩乱码Av| 91伊人| 国产原创精品| 亚洲熟妇一,二,三期| 美女人妻色网站| 免费a v| 九九十八精品| 岛国激情视频在线观看| 人人妻人人色| 欧美日韩精品一区二区三区高清| 色拍偷亚洲| 青青操狠狠撩| 91高清欧美| 天天日少妇逼AV| 少妇久久久久久久久| 大香蕉在线视频15| 亚洲日韩在线a不卡99精品| 啊嗯好大视频在线观看| 性爱网站一区二区| 亚洲999综合| 92午夜免费福利视频| 97爱爱官网| 亚洲日韩AV视色| 婷婷色色五月天福利| 欧美日本天堂| 亚洲操逼无码| 玖玖久久久| 免费看污网站| 日韩精品一区二区日韩| 后入合集| 久久女人视频| 曰本人妻人人澡人人夹| 91久久久久| 混色激情av| 亚洲精品国产熟女| 超碰欧美COM| 1024亚洲中文字幕久在线看片你懂的 | 国产成人精品必看| 无码人妻丰满熟妇区毛片| 丁香五月婷婷基地| 韩国三级一线观看久| 麻豆天美在线喷水AV| 五月综合久久| 国产精品探花色| 亚洲交换| 中文字幕一二三区| 在线中文字幕极品av| 综合网 欧美| 欧美青青视频| 国产日比| 欧美性生活免费网| 天天日天天看| 青青草字幕AV| 殴美,日韩国产伦精品| 日本操大逼| 亚洲综合欧美| 国产精品色约约| 中文字幕在线观看第二页| 中日韩熟女| 肏逼视频日本| 性生活性生大爱77AV国产| 丝袜喷水在线| 亚洲综合色网| 太久视频| 久久性爱视频99| 91制服丝袜| 中文字幕女同在线| 精品无码一区二区| 丁香五月自拍| 先锋色眉乱伦资源| 99色网| a啊啊啊啊啊啊啊啊一区二区| 一区二区三区 丝袜高跟| 亚洲精品视频二区| 亚洲欧美国产其他二区| 17c在线成人免费A片观看| 中日韓欧美高清| 欧美淫乱视频| 国产视频大全| 欧美天天综| 欧美.亚洲.另类.丝袜.制服.诱惑| 强奸乱伦αv片| 素人一区二区三区日韩| 亲子敌伦对白在线播放| 欧美精品黑人猛交高潮| 嗯嗯嗯啊啊在线观看| 麻豆国产成人精品| 97超碰逼| 成人精品视频一区二区| 天无日色综合| 99色视频| 五月婷丁香| 狼人久草| 女人爽到高潮潮喷18禁网站| 亚洲色色探花| 日逼视频日本| 国产日韩区| 黄色香蕉视频网站一区| 大象AV在线| 99色网| 少妇综合网| 九九无码| 97香蕉网| 欧亚无码视频| 亚洲国产成人7777| 亚洲欧美高清无码| 欧美18老人禁| 人人操人人摸avav| 欧美日韩午夜精品一区二区三区| 在线午夜成人无码视频| 伊人天天久久动态图| 丁香九月婷婷| 国内偷拍精品一区二区| 色吧5亚洲| 在线播放成人高清免费视频 | 高潮9999外国| 亚洲色人阁| 2017天天操| 中文字幕97| 久久久久久久免费A片国产成a人亚洲精∨品无码 | 欧州激情视频在线一区二区| 亚洲 欧美 小说| 麻豆精品天美| 青青操视频在线| 亚洲天堂少妇| 97干在线视频| 欧美夜夜草视频| 国产又黄又粗的视频| 淫荡少妇免费| 色综合色欲色综合色综合色综合| 在线不卡视频| 久久久久骚| 男人网站婷婷| 精品制服美女中文一区二区三区| 成人AV在线网站| 天天综合欧美| 久久黄片国产一区二区| 色噜噜精品一区二区三| 亚洲色啪| 偷拍亚洲高清图片| 欧美成人国产精品| 亚洲综合在线91| 91丨国产丨白浆秘 洗澡动漫| 色综合久久av| 日韩性爱小视频在线观看 | 欧美系列在线一区二区| 九月丁香婷婷| 日欧美色| 91久久久久| a级免费在线观看| 欧美人妻久久精品二区三区| 日本久久99| 国内操逼视频二区| 欧美在线大香999| 国产精品懂色tv影视免费观看| 女人被男人桶爽视频网站| 97人妻碰碰中文无码久热丝袜| 91丝袜美腿网站| 国产人妻精品一区二区三区秋霞| 久久中文字幕在线观看| 中国少妇XXXX做受| 婷婷五月天激情小说| 99xav| 亚洲AV色图| 人妻丰满熟妇一区二区三| 欧洲色| 日日日骚女人精品| 青青在线视频日韩欧美| 天天搞在线综合网| 精品久久久久,69国产成人精| 欧美熟女丝袜| 深夜福利黄片| 大香蕉黄色一区| 又摸又舔在线观看网站| 美欧色综合| 操逼片中文| 欧美九九99久久精品| 天天影视91看看| 国产精品一区二区校花| 欧美亚洲国内自拍| 中日韩久久久免费看| 999精品国产高清一区二区| 日日夜夜干| 久久精品女同亚洲女同13| 欧美十八禁视频| 操狠狠| 精品夜夜澡人妻无码AV| 色噜噜精品一区二区三| 天天亚洲综合| 国内外内射高清视频| 亚洲av无码成人精品国产| 欧美久久人妻少妇一区二区| 国产女同在线观看视频| 婷婷五月天成人网| 少好三P| 不卡一区二区日本视频| 啊啊啊啊啊在线视频| 深夜福利黄片| 超碰97起碰| 蜜臀久久99精品久久久久电影| 欧美日韩操逼动图| 美女91在线观看| 欧美日韩大香蕉| 97二区四区| 网友自拍第一页| 亚洲国产第一页综合视频| 日本久久久久久久久久| 日本高清有码网址视频| 97热视频在线观看| 久操网视频| 日韩电影天堂视频二区三区| 国产无码高清操逼视频| 久久伊人网视频一区二区三区| 97在线免费| 情色日播放AV| 国产成人在线观看网址| 2001天天操| 日韩一级二级三级免费看完整版| 激情自拍 校园春色| 久一区久久蜜桃| 素人播放一区| 欧美91精品国产自产| 久久天天性久久伊人| 精品福利| 嗯嗯啊啊操死我| а√天堂资源官网在线资源| 99.色网| 99久久久久久亚洲精品不卡| 99re95| 国产精品免费日韩| 亚州国产成人精品女人久久| 成人免费不卡在线视频| 一二区在线观看视频| 91精品综合久久久久久五月丁香| 啪啪啪综合| 国语人妻精彩刺激| A级国产欧美激情在线| 91久久18禁| 午夜偷拍久久熟女| 青青草原av| 亚洲欧美一区二区三区在钱蜜桃| 中国人高清www色视频免费| 殴美综合色88| 成人三一级一片aaa| 91天天综合在线| 后X久久| 精品国产无码中文| 青青久久久| 欧美亚洲综合色| 74成人在线| 亚洲 中文 欧美 日韩 在线| 久久婷婷五月综合| 午夜啪| 少妇久久久免费| 嗯啊不要啊在线| 天天狠操| 96国产精品| 免费人人搞97| 最新国产精品久久精品| 97超碰色色| 久久国语| Julia在线播放亚洲久久| 亚洲一区中文精品| 无卡一区=区| 热天堂一区二区| 99久久精品无码一区二区| 欧美日韩亚洲天堂| 美日韩一二三区| 狠狠五月天| 中文日本免费高清| 不卡视频一区蜜桃视频| 97视频在| 无码99| 萌白酱自拍视频| 亚洲开心网| 免费看国产大AB| 91N五十路| 国产av美女被艹的乱叫| 亚欧无码线免费观看视频| 狠狠操狠狠燥| 久久超碰免费的| a网站免费观看| 国产精品一级毛片不卡视| 丁香九月婷婷| 久久久久久久综合,国产| 91视频观看网站| 99久久99久久综合| 丰满岳乱妇一区二区三区| 99热在线播放| 人妻美腿丝袜日韩| 青青草黑寡妇男人天堂| 五月天啪啪| 亚洲精品第一| 久久久久久亚洲Av无码精| 黑人性欧美| 久久精品国产97欧美精品亚洲 | 日本熟女不卡视频| 久久久久久九九九九九九| 国产精品九9| 色噜噜狠狠色综无码久久合欧美| 欧美精品成人在线播放| 思思热一热婷婷热一热| 国产不卡免费在线视频| 日韩成人高清一区二区| 日韩99999| 乱操9999| 亚洲精品1区| 9超碰免费| 青青草日逼视频| 亚洲男人天堂2019| 国产精品老师| 在线国产一区二区av| 手机在线A片| 国产多人在线观看视频| 日韩熟女三十乱伦| 亚洲天天操| 日本媚薬中文字幕在线| 国产丁香精品露脸视频| 亚洲怡春院| 亚洲熟女偷拍在线观看| 嗯嗯啊好大| 日本东京热大香蕉a片| 欧美天天谢综合网| 国产精品熟女AV中文字幕在线播放| 天天插天天插| 亚洲日韩一区电影| 91校园春色长篇| 99激情| 激情综合五月| 婷婷激情四射| 人妻少妇色综合| 人人色97| 99久久com免费视频′| 久久侵犯人妻爽爽爽| 天天综合色电影| 欧美制服网站美腿丝袜| 1024久久高清视频| 午夜久久一区二区无码中出| 神马久久久久眼| JULIA人妻风俗店中出电影| 日韩av三四区| 欧美A√综合网| 96久久久精品| 国产超碰欧美| 色欲天香天天综合网-成年人三级片网站-欧美乱妇狂野-日韩国产专区-久久久久久 | 插入综合网| 美女露胸露屁股| 九九九久千久久激情蜜桃在线看| 超碰激情808| 久久一二三四五六七八九区区| 金典av| 中出在线视频| 欧美性性性| 亚洲一级黄色毛片| 精品日韩中文在线| aⅴ日韩成人电影av在线免费看av大全 | 久久粉色| 国产精品久久久久久久无码AV| 亚洲国产精品无码AV久久久| 久操网视频| 色99视频| 久九九九九九九热| 精品二999| 东京热91| 韩国三级一线观看久| 久久精品毛片免费不卡| 2020国产精品| 大香蕉手机在线视频| 精品乱码久久久久| 欧美色图亚洲色,麻豆| 中文字幕在线观| 五月婷网站| 婷婷丁香成人| 亚洲人在线| 伊人久大| 17c嫩草51久久91嫩草| 国产自产一区视频在线| 婷婷五月天福利| 啊操爽品善一区二区三区| 91精品婷婷国产综合久久| 91老熟女| 久久AV无码网址| 啊好爽受不了无码| 午夜九九| 豆花视频操逼网址| 97色色婷婷|