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

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
返回資訊列表
欧美一区二区日韩传媒搭讪精品| 国产91av在线播放| 欧美,日韩综合久久| 久久香蕉网| 欧美综合自拍亚洲综合图| 国产性爱在线视频一区二区| 区一在线观看| 日韩欧美国产一区二区三区四区| 欧美精品久久96人妻无码| 日少妇视频| 长长久久曰曰夜夜成人网| 亚洲国产97在线精品一区| 日韩亚洲精品一区二区| 97天天插| 亚洲第一成人影院色播| 干美女人妻| 人人操人人摸人| 狠狠躁天天躁日日躁97| 超碰成人最新最好看| 97资源免费视频| 成人日韩3| 97精品第3页| www.久久制服糖| 国产美女91视频| 国产精品日本无码A片| 天天淫人人妻日日色| 夜夜躁狠狠躁日日躁av| 色九月综合| 国产精品亚洲无码| 久久精品国产97欧美精品亚洲 | 亚洲色图尤物视频| 亚洲超碰综合网| 久久鲁干| 97免费在线观看视频| 亚洲天堂,男人| 人人弄人人摸| 国产精品丝袜久久亚洲不卡| 999久久久九| 曰韩人妻中文字幕在线| 91N综合在线| 色香色欲天天综合网天天来吧| 国产精品久久久亚洲第一牛牛_在线观看 | 韩日色费| 欧美在线第五页| 丁香六月啪啪| 尹人免费观看视频在线| 中文字幕精品亚洲熟女| 99re8超碰| 国产中文精品一区二区在线观看| 丰满人妻一区二区三区四区| 伊人久久久日韩一区| 91天堂色男人的天堂| 亚州黄站| 色综合20p| 玖色AV| 性爱综合一区二区| 亚洲不卡一| 青青草十区九区爱夜| www色日本| 久久久久久久强迫| 亚洲人妻五月丁香婷婷| 黑人干亚洲| 另类图片五月| 国产视频不卡在线观看| 亚洲一卡二卡在线免费| 亚洲精品电影| 亚洲性图91| 天天干天天拍| 日韩中文字幕二区| 伊人精品久久网站| 九九九精品| 亚欧操逼片在线观看 | 操人妻逼91| 国产 三级自拍| yw尤物av无码点击进入麻豆| 亚洲熟女av中文字幕| 校园春色中文字幕AV| 日韩AV片| 久久乐| 性色av网站| 日本三级A片网站com| 不卡在线观看视频| 骚货 中文字幕 av| 久久成人午夜狠狠| 97久久精品国产| 亚洲AV无码天美传媒一区| 亚洲aV无码成人在线观看| 天天懆天天日| 亚洲欧美在线观看无码| 91丨九色丨大屁股| 97摸视频| 思思热er精品视频| 人人干人人搞人人摸| 亚州免费啪啪视频| 370p日韩欧美亚洲精品| 日本精品中文字幕视频| 午夜福利一区二区影院| av网站国产主播在线| 久久久久久久9| 国产综合久| 久久视频,这里只有精品| 久久一留热品黄| 日韩乱码Av| 天天舔天天| 欧美亚性天堂| 一牛影视久久久一区二区三区| 欧美视频在线视频免费va| 黄片aaaaa一区| 日韩国产乱子伦App| 韩国一级婬片A片无码天美| 蜜乳中文字幕a在线| 亚洲高清视频在线免费观看| 日韩欧美操逼xxx| 国产精品99999| 最新日本中文字幕| 99久久久久久亚洲精品不卡| 天天操天天射天天日| 懂色中文一区二区三区| 人人看人人爰人人操| 草草影院日本第一页| 最新国内自拍av免费| 成人影院永久免费观看网址| 无色无码| 99re在线观看| 久久色激情一区二区三区| 67194无码不卡| 色鬼在线综合| 久久久专区| 91操人| 黄页网站成人免费| 欧美亚洲天堂| 亚洲无码免费看| 无码高清国产AV| 亚洲中文字幕三级在线| 亚洲91色在线| 免费草草草草草视频| 少妇熟女一区二区三区| 欧洲亚洲国产综合在线| 18禁超污无遮挡无码免费网| 噜噜在线| 伦理弟一页| 免费视频观看60秒| 日韩成人私密一级精品av| 久草视频制服诱惑| 欧美色日本| 亚洲综人网| 国产强奸无码乱伦| a在线观看| 性色av一区二区| 亚欧操逼片在线观看 | 91在线免费精品视频| 26uuu国产亚洲综合| 温婉少妇玩3p| 欧美乱妇狂野欧美在线视频| 久热最新在线杭州| 日韩不卡a级视频专区| 920日本午夜免费| 狠狠夜色午夜久久综合在线| 99999国产精品| 午夜120视频在线观看| 禁片 高清 在线观看视频网站| 91国产大片| 久久久精选| 蜜乳Av成人片网站| 抽查国产福利主播| 清纯唯美第一页| 一级特黄aaa大片在线观看成人一级片在线观看 | 国产av又色又爽又黄| 97啪啪| 中文字幕久久精品一区| 鸥美中出| 国产情侣自拍在线播放| 99久在线精品99re8a| 巨乳特殊服务按摩| 欧美成人性爱视频大全| 中文字幕AV片| 色噜噜精品一区二区三| 四虎国产成人精品免费一女五男| 91这里只有精品| 黄片不用下载在线观看| 日日噜噜夜夜久久亚洲一区二区| 少妇久久久久久| 91丨九色丨国产打屁股| 亚洲 中文 欧美 日韩 在线 | 伦理第一页| 日韩成人精品视频自拍| 无码久| 国产精品露脸在线观看| 久久综合精品一区二区三区| 亚洲97在线观看| 欧美日韩第一页| www.男人天堂| 不卡一区二区日本视频| 欧美大香蕉久| 狠狠干精品一二三四五六2022| 屁股久久久久久久久久| 在线女人91| 国产精品人妻免费精品| 四季AV综合网址| 人妻少妇久久中文字幕一区二区 麻豆| 九九九九九九九精品视频| 草久在线| 久久久999网站| 亚洲中文字幕精品一区| 一区中文字幕二区日韩| 色黄污美女啪啪啪免费网站| 日韩精品大香蕉伊人在线| 最新中文字幕精品在线| 日韩二区三四区五区六区在线看| 日韩欧美综合激情| 久久久精| 国产67194| 日本媚薬中文字幕在线| 极品五月天噜噜| 永久电影三级在线观看| 人妻无码后入| AV污污污污| 久9综合在线| 激情丁香五月婷婷| 国产乱伦视频污| 一区二区三区四区姦女| 九九性爱网| 四虎av在线| 人妻熟女午夜精品在线| 国产乱伦亚洲| 欧美成人精品一区二区男人蜜臀| 美女诱惑爱爱| 日韩精品一区二区日韩| 亚洲日韩资源| 久久久不能久久久久| 欧美aaaaaaa| 欧美日韩小说| 亚洲中文电影| 免費黃色視頻觀看一| 91精品人妻一区二区三区蜜桃| 搡老女人老妇女老妇老熟女怎么读| 午夜亚洲WWW湿好大| 伊人96在线| 夜夜嗨一区二区| 无码外流操逼视频| 69精品| 天操老女人| 人妻人人操| 国产强奸乱伦欧美| 欧美淫乱视频| 色爱欲亚洲| 久9视频| 色在线视频导航| 欧美伦乱爱| 久7色| 色综合久久888| 欧美黄色图片| 97免费视频网| 亚洲欧美骚| 国产强奸乱伦第1页| 天天色天天干天天爱| 婷婷影院入口| 午夜精品久久久99| 亚洲熟女少妇免费视频| 搡老女人老91妇女老熟女| 第四色奇米影视777| 国产高潮AA片免费看| 9超碰免费| 欧美亚洲今日在线| 每日更新AV| 少妇人妻无码| 99久久亚洲精品无码毛片潘甜甜| 五月天黄色激情视频| 尻女朋友一夜| 精品一区二区三区麻豆| 国产一区二区视频在线播放| 熟女欧美日韩综合婷婷| 国内精品a| 91久久久久免| 深夜激情| 国产一区二区三区影片| 国产精品久久久九九九| 美女尤物人人操| 日本一区二区电影网站| 日韩综合97p| 欧美大香蕉专区网| 亚洲欧美在线综合| 国产女人高潮嗷嗷嗷叫小说 | 女同性恋中文字幕| 亚洲精品白浆高清久久久久久| 无码色| 91网站18禁| 91操人视频| 超碰在线1234区| 青椒国产97在线熟女| 亚洲 欧美 小说| 欧美一区二区三区互相| 国产午夜福利视频在线| AV在线性爱| 十八禁黄色成人网站观看| 亚洲在线| 日韩熟女精品无码专区一区二区| 九九九九国产| 精品无人区麻豆乱码久久久| 免费无码婬片AAAA片直播色戒| 按摩中文字幕| 欧美AAAA黄片| 欧美日韩另类字幕中文| 亚洲国产精品成人无码久久久 | 日本精品无码三级网站| 黄久在线| 五月天综合在线| 四虎影视欧美| 久久9 9 9精品| 午夜亚洲WWW湿好大| 日韩精品人妻中文字幕有码午| 久久久蜜桃臀无码视频| 国产乱码精品久久久久久| 国产91av在线播放| 亚洲脚交| 国产美脚女优尤物在线观看| 91粉嫩萝控精品福利网站_精品影音先锋国 | 天天影视网综合少妇| 欧美啪啪色吧在线| 日韩伦理视频| 亚洲一区二区三区AV无码 | 67194国产| 精品人妻中文字幕高清| 91成人国产综合久久精品蜜月| 日韩欧美大力操| 997色在线| 欧美人妻精品| 波多野结衣一级视频| 热久久无毒不卡| 亚州精人品大香蕉| 免费黄色片。| 色悠久| 一直超碰| 精品少妇后入一区二区三区四区人妻巨乳| 成人av影院在线观看| 久久久九九| 有码人妻系列| 九九热AV| 二男一女成人A片| 国产在线激情| 加勒比海人人操超碰在线| 成人看片网站| 逼逼逼逼操操操操操操操操操午夜剧场| 日韩八十路老熟女| 亚州精品丝袜-不卡成人免费| 91人妻中文| 久久少妇| 97 国产精品| 欧美 传媒 麻豆 日韩 偷拍| 亚洲情色婷婷五月天| 蜜乳AV一区| 少妇高潮九九九九| 2017天天插| 91爱欧美| 97国产天堂岛| 色哟哟国产精品免费网址| 欧美国产精品| 亚洲āv网址在线观看| 欧美狠狠狠| 亚洲男人的天堂在线看| 日本不卡码黄色 | 日本不卡中文| 白丝在线一区| 亚州春色| 亚洲欧洲久久天堂| 日日黄色三级网站| 久热久| 九九九久千久久激情蜜桃在线看 | 激情久久日韩精品中文字幕麻豆| 亚洲网自拍| 殴美性色a级欧美| 亚洲av乱伦色图网站| 亚洲国产精品有声| 国产成人精品必看| 日韩中文字幕国产| 日韩成人精品| 亚洲密乳AV| 国产精品白领在线观看| 亚洲av性爱电影| 欧美天天| 国产精品一区午夜福利| 久久直播国产| 2024人人操人人摸| 337p大胆噜噜噜噜噜91Av| 国产精品激情久久久久久久| 黑人操一区二区| 欧美成人四级在线播放| 精品少妇人妻av久久免费| 在线a v| 中文字幕丝袜国产第一页不卡| 色黄污美女啪啪啪免费网站| 国产专区第一页| 中文字幕aⅴ在线视频| 国产亲戚伦亲在线| 婷婷色影院| AA丁香综合激情| 日韩乱码av| 夜夜爽妓女| 国产精品久久久久久久久久久久久久久久久久 | 97在线欧| 久久激情婷婷| 2020中文字幕在线观看| 99re免费| 亚洲欧洲综合av在线| 熟女乱伦A| 女人双腿搬开让男人桶| 熟女在线视频| 夜夜嗨一区| 天天操天天舔| 伊人AAA| 丝袜综合| 人妻熟女一区二区在线视频| 色在线视频导航| 思思热免费在线视频| 色色色色电影网| 九九热免费国产视频婷婷伊人五月 | 亚洲精品国产无码高清| 性做久久久久久免费观看软件| 成人AV在线电影| 天堂资源欧美| 久久亚洲一区女同性恋中文字幕 | 国产美脚女优尤物在线观看| 欧美人妻一区二区| 亚欧高清| 操人无码| 欧美日韩美女精品久草一区二区三区| 久久久久久综合久久伊人蜜月| 人人操人人插 - 百度 - 百度| 把腿张开老子CAO烂你| 丁香五月综合| 久久影视二区三区行押| 亚洲国产一级黄色视频| 97碰在线视频| 99热日| 国产在线观看一区二区三区| 99re久久| 久久久九精品| 伊人网青青| 日本三级日本三级99| 国模不卡一本二本三电影| 婷婷激情丁香| 97任你吞精| 国产自产91区13区| 99夜夜操| 入口操逼网站| 老女人老91妇女老热女| 青娱乐999| 久碰视频| 97中文综合| 人人艹亚洲| 操人妻丝袜高跟| 欧美丰满少妇交换91欧美精品| 成人免费毛片| 一区二区三区日韩欧美 | 国产女人和拘做爰视频| 日韩99神马视频播放| 超碰2017| 淮穴色AV| 欧美 亚洲 第一页 | 天天爱综合网| 1024人妻熟女一区二区三区| 欧美大战久久久伊人| 亚洲人体视频在线观看| 日韩一999精品| 亚洲激情视频| 狠肏骚人妻| 最新亚洲黄色免费电影| 欧洲精品在线播放| 26uuu国产亚洲综合| 中文字幕一区二区三区蜜臀| 无码久久亚洲高清,| 天天综合~91入口| 97天天日| 爱爱啊啊啊| 一块操欧美性爱| 午夜啊啊| 色妺妺在线视频| 91久久| 78p欧美| 隔壁邻居波多野结衣中文字幕| 亚洲欧美另类少妇精品| 囯戸精品高潮呻吟旡码| 亚洲天天影视色综合| 国产精品自拍xxxx| 91亚洲最新在线| 激情五月综合网| 老熟女综合| 不卡码视频| av无码av无码专区| 男人的天堂99| 嗯嗯啊啊操死我| 高潮的A片激情扒开一区| 伊人991| 国产激情在线| 久久超碰网| 97久久久精品| 国产成人无码久久精品| 在线免费观看高清无码视频| 亚洲www91| 99热精品在线播放| 精品美女久久久久| 亚欧美色图| 精品久久久久,69国产成人精| 99久久精品无码一区二区毛片免费 | 啊灬啊灬啊灬啊灬高潮奶出了免费视| 午夜色婷婷| 欧美Ⅴ性爱| 综合色久欲| 97视频在线观看播放与子乱对白在线……| 国产久久成人| 丰满人妻一区二区三区免费| 亚洲日韩欧美一区二区| 亚洲nv男人的天堂网| 免费一级精品啪啪视频| 超碰九区| 九草九九九| 亚洲 欧美 小说| 亚洲另类电影| 久久久亚洲欧美综合| 亚洲图片另类| 超碰 欧美| 欧美老妇综合网| 色综合九九| 人人潮人人摸| 日韩成人性日韩成人性爱视频在线免费观看 | 久久久久久人体| 欧美后入视频| 大香蕉在线视频15| 91狠狠综合久久久久久| 亚洲最新a在线观看| 日韩性爱小视频| 亚洲天天自拍| 一本色道久久综合狠狠操| 五月天伊人| 2011国产精品| 啊啊啊啊嗯嗯嗯用力好爽| 日韩性爱免费视频在线网站| 翔田千里无码一区| 国产精品 视频| 99精品九九九九九九| 色妇91| 91天天c| 精品十三区| 97综合在线观看| 很很干很很操| 天天操狠狠日夜夜干超碰撸com视频在线观看| 先锋色眉乱伦资源| 成人性爱AV在线免费观看| 97视频网站| 97爱亚洲| 精品综合久久久久久五月天| 超碰在线一区二区三区| 伊人91| 黄色av片三级三级三级免费看| 国产精品又黄又猛又粗| 99e久久国产精品| 日韩一级性爱无码| 午夜福利一区二区影院| 久久av无码| 国模私拍一区二区三区神乳| 国产隔壁老王影院在线| 人妻一二三区| 国产AV激情无码久久无码| 国产女人和拘做爰视频| 精品久久久久av影院| 日韩一区二区高清在线观看的| 久操凹凸视频| 91干熟女| 婷婷尹人大香蕉免费| 草草影院在线视频| 男插女青青影院| 伦理弟一页| 九九九九免费视频| 黄色工厂这里只有精品| 97在线免费观看视频| 国产辣妈在线视频福利| 97人人操人人摸人人爱| 超碰99在线| 99热97| 香港日本韩国人妇99www.wccm20| 久久久久久久久久久久欧美日| 呻吟 欧美 日本 中出| 东京男人天堂| 国产辣妈在线视频福利| 欧美日本一区二区a人| 人人看人人摸人人色| 囯产精品一区二区三区线|亚洲人成无码网WWW动漫|国产精品免费一级... | 亚洲人精品久久久| 久久午夜色播影院免费高清| 欧美探花网| 成视频在线观看免费看| 久九干| 啊啊啊啊好疼视频| 日本一区二区中文字幕久久| 无码人妻精品一区二区中文| a级理论午夜日本| 久久天天摸| www.AV有限公司一区| 国产夫妻性生活视频| 成人国产视频在线观看| 亚洲最大AV网| 午夜成人福利影视| 精品女同一区二区三区| 岛国A V在线免费看| 日韩三级天堂在线观看| 有码免费观看| 精产品久久| 成人乱人伦一区二区| 日韩免费性爱视频在线观看| 台湾肥佬网一区二区三区| 99精品无码| 日日操免费视频| 天天日天天插| 欧美综合传媒| 1769国内精品视频| 五月天色综合| 欧美在线|亚洲| 在线观看一级α片刺激高潮视频| 色婷久久| 色哟哟精品1精品2| 国产高清吃奶免费视频网站| 亚洲午夜免费狠狠干| 无卡一区=区| 精品中文字幕一区二区| 美日韩一卡二卡三卡免费人妻精品| 久久久久久裸体| 五月天久久综合网| 欧美一区91大爱| 久操频道免费在线呗看| 热99这里只有精品| 天天草AV| 国产不良强奸视频免费看| 91精品电影18| 九九九九9999| 婷婷色色五月天| 四虎884| 亚洲成人福利电影免费| 色www精品视频在线观看| 日韩熟女无码| 超碰碰97| 岛国免费黄色网址| 91欧美性| 日韩色欲久久一二三四区| 久久久久久中文版| 久久青青草原免费视频| 久久久久久久人妻丝袜| 久久人妻视频网| 日逼97| 国产后入精品| 国产精品懂色tv影视免费观看| 久久午夜伦| 懂色av一区二区三区天美传媒| 色五月婷婷五月天| 国产一区二区在线播放| 一区二区偷拍拍视频| 熟妇色99| 18一区二区三区| 国产内射爽爽大片| 啊操爽品善一区二区三区| 最新岛国大片| 福利大香蕉| 97人人干人人操| 久久激情婷婷| 久久做97| 国产成人精品日本视频| 超碰色97| 涩爱AV在线| 人人操人人摸人人看人人干| 亚洲国产福利视频| 精品精品精品| 精品人妻1区| 国产和美国毛片| 91久久久久久久久18| 国产久久久久久| 国产成人AV麻豆| 亚洲欧美一区二区三区一猛片| 欧美综合综合| 高树玛利亚无码流出| 欧美精品99久久久**| 亚洲天堂少妇| 国产精品久久久久绯色| 午夜福利在线合集| 成人怡红院| 超碰97最新人妻| 婷婷在线视频| 操www| 精品美女少妇一区二区| 黑人天8A∨高清网站| 人妻中文字幕日韩电影| 婷婷色综合欧美日韩| 人妻少妇精品久久久| 免费观看的av| av强奸乱轮| 综合 亚洲 欧美| 色踪合AV| 国产一区麻豆免费观看| 国产尹人在线视频免费| 极品欧美一区二区三区| 欧美色图99| 色九九九综合| 国产人妻精品久久久一区二区三区| 国产99精品一区二区三区免费| 欧美色干| 搡老熟女国产1000部| 99国产精品在线观看| 亚卅熟女乱色| 亚洲制服aⅴ中文字幕| 日日爱99| 国产又粗又长的视频| 东北女人操比视频| 九久9热| 丁香五月偷拍| 色香色欲天天综合网天天来吧| CCYY草草影院地址入口| 久草这里只有精品| 视频在线97| 日本顶级天天操狠狠操夜夜操中文字幕| 亚洲骚女一区二区三区| 欧美 亚洲 第一页| 日日夜夜国产综合| 熟妇xxxxx性春色| 偷拍导航视频网站| 亚洲图片 激情小说| 精品一区二区三区蜜桃臀赵总 | 天综合中文| 在线人人人人人人精品超| 日韩黄片影院| 日韩电影在线观看网址| 唯美清纯 妖精视频| 亚洲综合另类色图| 日韩天天本| 91夜夜蜜桃臀1区2区3区| 久久侵犯人妻爽爽爽| 亚洲无码99| 亚洲精品久久久久久久蜜桃臀| 免费观看国产不卡av| 眼镜人妻101.com| 69av一区二区三区| 18禁网站在线播放| 国产精品嫩草影院免费| 超碰在线香蕉| 殴美在线AⅤ| 國產尤物AV尤物在線觀看| 久久一区二区高清免费| 成年女人黄网站| 男女激情黄色网址| 日本精品高清一二区一本到| 色成人Www精品永久观看| 熟女精品va中文字幕| 中国乱伦一区二区| 无码聚合| 丁香六月婷婷| 99精品丰满人妻无| 极品内射| 亚洲高清在线se| 日韩欧美麻豆 | 少妇xx精品| 欧美日韩国产色图在线| www九九热| 91在线色综合| 色五月天AV| 校园春色宗合网| 人妻激情视频| 2024年最新色情网站在线观看| 免费无码婬片AAAA片直播色戒| 性色av大全| 黄色网址在线免费观看| 秋霞视频一区二区| 亚洲色人妻综合| 日本黄色裸日本黄色裸体 | 黄色片一区二区三区四区五区| 人妻啪| 自拍偷拍 高清无码| 无码自拍SM| 欧美最婬乱婬爆婬性视频| 亚洲欧洲色情高清| av2014 日韩在线中文字幕| 日韩情色一区二区| 精品人妻中文字幕4399| 丁香九月激情| 天天干天天日天天射黄色片| 中文熟女五十乱码在线| 在线观看中文字幕| 激情综合网五月婷婷五月天| 九九无码| 青青草久久在线| 国产精品天堂| 亚洲砖码砖专无区2023| 国产精品乱人伊人网| 久久噜| JIZZJIZZ亚洲女人被躁| 最新日韩黄片| 熟妇艹鸡八| 在线天堂资源亚洲| 综合在线导航一区| 蜜臀亚洲中文| 欧美92| 青娱乐国产盛宴视频| 久久久久骚| 精品人妻一区二区三区蜜桃视频| 97无码视频在线播放| 久操不卡视频| 韩日精品福利视频一区不卡在线免 | 深喉吞精| 嗯啊抽插大香蕉网页| 美女人妻色网站| 91无码人妻精品一区二区三区蜜桃 | 成人小说视频在线精品欧美| 亚洲天堂电影精品一区| 9997se| 久久久久亚洲av综合波多野制衣| 玖玖97综合| 91天美免费| 自拍偷拍 日韩无码| 男女激情中文字幕| 91在线欧美| 人妻熟女一区在| 91插B网站| 一本一道vs波多野结衣| 亚洲黄日韩无码专区| 91精品国产91综合久久蜜臀| 九九99精品视频在线观看| 肉丝无码中文高清| 色色色欧美| 综合色拍| 可以在线观看的黄色网址| n1038 一二三区| 日本中文熟女视频| 欧美日韩夜夜| 精品一区二区综合熟妇| 99精品九九九九九九| 人人操人人插人人摸人人干| www.亚洲黄色| 青苹果影院男人的天堂| 久久久久亚洲Av无码专区老牛影视 | 久久在线观看免费视频| 国产后入精品| 亚洲另类春色| 免费视频在线观看啊啊啊啊啊| 欧美性性性| 深爱激情五月天| 久久激情婷婷| 九九玖玖精品| 在线毛片片免费观看| 欧美日日夜夜| 操人人| 免费亚洲国产精品久久一区| 国产专区第一页| 亚洲国产精品久久久久婷婷老年| 婷婷中文网| 加勒比99999| 亚洲一区中文字幕久久,果冻传媒一区二区天美传媒 | 啊啊啊啊啊啊好湿好爽视频| 无码区蜜乳| 色拍偷亚洲| 91精品伊人久久久大香线蕉91| 久久九九久精品国产尤物|国产精品爽黄69天堂A片潘金莲,国产亚洲精品第一综合 | 91neishe| 天天视频网站黄| 亚州熟妇精品| 亚洲AV成人在线| 久久男人的天堂| 久久国产对白激情浪潮| 强奸乱伦大香蕉网| 天天操妹子| 欧美专利1区2区3区4区5区免费| 免费久久一级毛片大黄| 日本性一区| 1024久久高清视频| 无码精品久久久天天影视| 日韩无码服务区| 久久熟女人| 国产精品久久久久久无码红治院| 丝袜美腿91| 性色乱AV一区二区| hd成人一区二区在线| 天堂性色| 色www精品视频在线观看| 亚洲国产激情国产av| aa片毛片| 亚洲熟女少妇免费视频| 极品五月天噜噜| 嫩呦国产一区二区三区AV| 四虎精品永久在线观看| 97超碰色屌| 久操精品网| 五十路六十路素人熟女| 狠狠爱夜夜| 美女干逼2| 久jiu久神马影院| 亚洲砖码砖专无区2023| J?P?NESEHD熟女熟妇伦| 0755午夜福利视频| 久久久久78| 理论久久婷婷网 8| 亚洲 国产 精品一区| 超碰成人人人爽人人爽| 亚洲第一男人天堂| 你草精品在线视频| 精品久久久久久亚洲| 国产亲戚伦亲在线| 欧美一区二区日韩三区| 欧美性色网| 九九九九九九九九九九九蜜桃| 久草久热| 99精品在线| 一区二区三区免费岛国片| 亚洲巨爆乳一区二区三区四季网| JuliaAnnXXX888| 视频在线中文字幕| 欧洲亚洲人妻无码中字久久三区四区| 日本片日本片祼观看网站在线看中文版网页在线看 | 天天色天天干天天爱| 色姑娘综合网| 丰满人妻-区二区三区免费看 | 伊人久久综合影院| 国产偷拍网站| 亚洲图片另类| 美女啊啊啊啊啊啊| 黑白配性爱AV成| 天天天堂影视日韩亚洲91| 日日黄色三级网站| 性色高清在线| 亚洲情色1区| 中文字暮97| 麻豆久久视频在线地址| 亚洲精品男人的天堂| 五月婷婷基地| 超碰在线99| 久热超碰| 五月天激情视频| 中文字幕黄色片| 日欧操屄视频| 丁香五月天啪啪| 欧美久热| 久久久久成人蜜桃精品| 亚洲欧美精品91| 大香蕉AV在线| 熟妇在线视频一区二区| 密桃99999| 又黑又大又粗| 中文字幕在线观看第二页| 北条麻妃99精品青青久久| 亚洲色图超碰在线| ′ !γ}丶。。久久精品欧美一区二区三区 | 成人网欧美风情| 中日韩久久人妻一区二区| 亚洲码和欧洲精品激情系列| 久久中出在线| 欧美激情久久久久| 日本二区不卡| 欧美宗合色| 亚洲国产精品久久AV| 91国产操逼视频| 日韩精品碰碰| 久久精品性| 国产av白丝| 亚洲中文电影| 欧美性五月| 特色a在线上| 日本乱人伦片中文三区| 中文字幕国产| 熟女色综合久久| 久久性爱网站| 人人看人人摸人人色| 亚洲中字慕不卡| 中文字幕在线免费观看 | 激情文学 国产一二三aV| 亚洲综合小视频小说在线观看| 国产乱码精品久久久久久| 死我十八禁| 久久一区二区三区四区五区| 人妻啪| 成人片在线播放| 久久9亚洲| 偷拍片久久| 97天天操| 四虎影视永久在线免费| 婷婷色导航| 亚洲欧美另类少妇精品| 久久久草草精品| 91综合色噜噜| 色牛牛AV| 欧洲乱码一区二区| 爱丝福利| 中文字幕美女91| 日本午夜福利影院| 亚洲 se图 欧美电影| 青草伊人网| 亚川综合视频| 五月婷婷激情网| 日日干男人的天堂| 97免费视频在线| 成人八戒网站| 日本天堂网| 久久老熟女| 琪琪精品免费一区二区三区| 丁香五月综合| 久久噜噜噜精品国产亚洲综合| 在线午夜成人无码视频| 一级性爱aaaa| 91欧美丨精品丨入口| 特色a在线上| 久久久久久AⅤ无码免费肉站 | av网站在线观看了| 极品白嫩福利在线| 九九九九九九精品| 377p欧洲日本亚洲大胆| 欧美色图片91| 国产精品扒开腿做爽爽爽视频| 人妻乱仑一区二区三区| 久操操| 亚洲视频中文一区| 密桃99999| 91天天综合在线| 最新中文字幕在线亚洲| 美欧老女人97| 亚洲自拍偷拍视频在线| 99操视频| 国产精品电| 无码高清专| 亚洲综合69| 熟女这里只有精品6| 嗯嗯嗯,草死我| 3PAV乱伦视频| 亚洲美乱| 久久春色| 嗯啊不要啊在线 | 五月天婷婷色| 美女十八禁| 大香蕉五月天| 欧日韩一二三f区| 日韩在线观看中文字幕视频| 尤物视频偷拍免费| 中国国国产一级特黄毛片| 久久久久久久人妻丝袜| 亚洲视频一二区| 激情AV| 国产精品黄色三级av| 欧美性第1页| 亚州欧美在线| 人人色人人操在线| 五月天精品| 国产又操| 欧美熟妇色| 日本三级中国三级99人妇网站| 久久亚洲一区二区色婷婷| 欧美性爱五月天| 亚洲欧美97| 欧美极品女人的天堂| 91模特在线观看| 欧美 亚洲 另类 综合| 亚洲成人性爱网站在线播放| 男人久久精品| 人人摸人人干人人拍97| 亚洲成人AB| 六月丁香五月婷婷| 人人摸人人入| 久插不卡| 91高清无码下载| 天天综合,91入口| www.狠狠| 青青操网| 99久久9| 欧美一级色| 中国一级αV| SUV一区二区在线看| 亚洲综合中文字幕有码| 久久在肏| 麻豆久久久久久久久丝袜| 免费一级黄色录像影片| 九九九只有精品| 97精品国产97久久久| 亚川综合视频| 快播久久人人aV| 热天堂一区二区| 人妻人人做人人澡人人爽欧美一区| 九九九偷拍| 18一区二区三区| 你想操日本小逼吗| 久久二| 嗯嗯啊啊好大好爽| 激情五月婷婷| 日本精品网站在线中文| 精品熟妇视频一区二区| 国产成人资源| 日韩亚洲中文字幕在线| 天天综合中文字幕 91| 媚薬在线视频麻豆| 亚欧精品久久久久久久久久久| 五十路六十路七十路熟婆| 精品国产乱码久久久久久免费| 亚洲熟女国产综合另类| 黄色高清无码无码破解免费暗网| 国产400孕妇孕交群| 久久成人午夜狠狠| GVH-003 母子姦 青木玲-麻豆视频,麻豆视传媒短视频网站入口,麻豆视传媒官网直 | 人妻无码视频一区二区三区久久| 亚洲婷婷五月天| 在线观看成人性爱免费小视频| 性色综合网| 超碰综合97在线| 啊啊啊啊二区好大| 亚洲男人天堂Av| 网页导航五月天免费一二三区| 国产福利精品98视频| 99热精品在线观看| 日日噜噜夜夜久久亚洲一区二区| 小草三级久久观看| 噜噜噜无码AV一级一级久久影院| 国产隔壁老王影院在线| 啊啊嗯嗯好爽| 精品大全99999| 91精产一区二区三区| 蜜桃中文字日产乱幕4区| 九九碰九九爱97| 性色av网站| 岛国毛片在线观看免费| 亚洲婷婷丁香在线| 色色九区| 久久久久久人| 久艹99| 人妻激情在线视频| 熟妇高潮一区二| 欧美综合第一| 欧美精品另类人妖xxxx| 大香蕉久久| 97婷婷色| 蜜乳av首页| 国产大学生高潮在线播放| 温婉少妇玩3p| 久久一区二区高清免费| 欧美精品23| 国产又猛又粗又爽又黄| 另类TS人妖一区二区三区| 丁香婷婷大香蕉| 国产成人自拍视频在线| 亚洲人妻中文高清| www.91理论| 人人操人人uiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii | 884t在线| 欧美专利1区2区3区4区5区免费| 91 刺激在线| 大香蕉免费中文| 囯产精品一区二区三区线|亚洲人成无码网WWW动漫|国产精品免费一级... | 亚洲国产麻豆一区二区三区| 少妇无码av专区线| 东北丰满熟女国产一区| 中文字幕中文字幕一区二区| 少妇无码av专区线| 日韩国产乱子伦App| 午夜福利视频在线一区| 入口操逼网站| 欧美精品999| 一区二区激情国产熟女| 天堂蜜桃无码视频一区二区| 欧美日韩丝袜 | 综合久久97| 亚洲乱码精品一区二区| 亚洲一卡二卡在线免费|