Skip to content

fix: 家具交互修正 - #26

Merged
ULookup merged 1 commit into
mainfrom
feat/pet-auto-interaction
Aug 7, 2026
Merged

fix: 家具交互修正 #26
ULookup merged 1 commit into
mainfrom
feat/pet-auto-interaction

Conversation

@ULookup

@ULookup ULookup commented Aug 7, 2026

Copy link
Copy Markdown
Owner

背景

桌宠在漫游时撞上家具后只会原地卡住走路,需要玩家手动 F 键/点击家具才会交互。本次实现桌宠自动与附近家具交互。

改动内容(仅桌宠交互相关,不涉及 UI/场景/字体)

自动交互触发 (PetController.cs / PetPlayerFurnitureInteractionController.cs)

  • 宠物物理卡住(撞家具)时立即尝试自动交互,半径内无可用家具则 1s 冷却后重试、2s 放弃换目标
  • 优先复用手动 F 键/点击同一套绑定(硬编码交互点 + 显式动画状态名),不依赖 _placedFurniture(公寓场景为空);有注册家具的场景兜底 _placedFurniture
  • 自动搜索半径在绑定激活距离上放宽 1.25,宠物撞在大型家具边缘也能命中中心交互点
  • 交互结束 5s 限频,避免角落反复交互死循环

位置固定

  • 自动交互播放到绑定解析出的固定交互点,不再在卡住的原地播动画

大小与手动一致(本次关键修复)

  • 自动路径此前强制 usePetPoseOverride: true,导致 _usePetPoseOverride: 0 的门边/书柜绑定在自动触发时把宠物缩到 1.0(两倍大),而手动 F 键保持当前缩放 0.5
  • 修复:自动路径尊重绑定 UsePetPoseOverride(仅 !hasRequestData || request.UsePetPoseOverride 时应用 pose),门边/书柜与手动行为一致

动画状态按宠物映射

  • 恶魔映射到自身实际拥有的状态(Interact_PlayGame/Draw/LookAround),避免播放天使专属状态(Interact_BesideDoor/Read/PlayingMusic)导致 Animator state missing 警告

动画方向去抖 (新增 PetAnimatorDirectionDebouncer + EditMode 测试)

  • 撞上家具后宠物沿表面滑动/抖动,逐帧位移方向高频翻转导致 Move_Front/Back/Side 乱切换;去抖后移动动画方向稳定

测试

  • 新增 PetAnimatorDirectionDebouncerTests(EditMode,4 个用例)
  • 手动验证场景:自动触发门边/书柜时宠物大小应与手动 F 键一致(0.5),玩掌机/床/画画保持绑定缩放(0.45/0.4)

- 宠物撞上家具后自动触发交互动画(优先复用手动 F 键同一套绑定,兜底 _placedFurniture)
- 交互播放到绑定固定交互点,不再在卡住的原地播动画
- 自动交互缩放与手动触发一致:尊重绑定的 UsePetPoseOverride,门边/书柜保持当前缩放
  (修复自动触发把宠物缩到 1.0、手动保持 0.5 的大小差异)
- 动画状态按宠物映射:恶魔映射到 Interact_PlayGame/Draw/LookAround,避免播放天使专属状态报警
- 移动动画方向去抖(新增 PetAnimatorDirectionDebouncer + EditMode 测试),避免撞家具后
  Move_Front/Back/Side 因物理滑动抖动而乱切换
@ULookup ULookup changed the title feat: 桌宠漫游自动交互家具 — 撞家具触发交互动画、位置固定、大小与手动一致 fix: 家具交互修正 Aug 7, 2026
@ULookup
ULookup merged commit 4ee6bfe into main Aug 7, 2026
3 of 4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant