M1: player stand + control handoff + Cinemachine camera system

- Install Cinemachine 3.1.7
- Stand (raised platform behind north wall) with StandPoint_0/_1
- PlayerAvatar: seat-ownership drives the mode — hold a seat => teleport to your
  stand, freeze, refuse input (control transfers/locks to your tread); release =>
  teleport back, resume on-foot. Resolves the WASD overlap off one flag.
- CameraDirector on Main Camera: 4 Cinemachine vcams (AvatarFollow / RobotFollow
  / StandView / CinematicOrbit), Brain blends; V cycles; default auto-follows the
  seat flag (on-foot=Avatar, driving=Robot). Retires the old FollowCamera.
- Verified in play: claim->teleport+freeze+RobotFollow, release->return+AvatarFollow

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
megaproxy 2026-07-12 20:44:18 +01:00
parent e93e6e76a3
commit e92be317f5
6 changed files with 490 additions and 25 deletions

View file

@ -469,6 +469,118 @@ Transform:
m_CorrespondingSourceObject: {fileID: 400000, guid: 463e9d66ec2b7ad428d27c80a2b2d1db, type: 3}
m_PrefabInstance: {fileID: 67875927}
m_PrefabAsset: {fileID: 0}
--- !u!1 &101108170
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 101108171}
- component: {fileID: 101108174}
- component: {fileID: 101108173}
- component: {fileID: 101108172}
m_Layer: 0
m_Name: Stand_Platform
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 2147483647
m_IsActive: 1
--- !u!4 &101108171
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 101108170}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 1.5, z: 0}
m_LocalScale: {x: 12, y: 3, z: 5}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 1532509717}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!23 &101108172
MeshRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 101108170}
m_Enabled: 1
m_CastShadows: 1
m_ReceiveShadows: 1
m_DynamicOccludee: 1
m_StaticShadowCaster: 0
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 2
m_RayTraceProcedural: 0
m_RayTracingAccelStructBuildFlagsOverride: 0
m_RayTracingAccelStructBuildFlags: 1
m_SmallMeshCulling: 1
m_ForceMeshLod: -1
m_MeshLodSelectionBias: 0
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
- {fileID: 2100000, guid: 31321ba15b8f8eb4c954353edc038b1d, type: 2}
m_StaticBatchInfo:
firstSubMesh: 0
subMeshCount: 0
m_StaticBatchRoot: {fileID: 0}
m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_ReceiveGI: 1
m_PreserveUVs: 1
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0
m_StitchLightmapSeams: 1
m_SelectedEditorRenderState: 3
m_MinimumChartSize: 4
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
m_LightmapParameters: {fileID: 0}
m_GlobalIlluminationMeshLod: 0
m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 0
m_MaskInteraction: 0
m_AdditionalVertexStreams: {fileID: 0}
--- !u!65 &101108173
BoxCollider:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 101108170}
m_Material: {fileID: 0}
m_IncludeLayers:
serializedVersion: 2
m_Bits: 0
m_ExcludeLayers:
serializedVersion: 2
m_Bits: 0
m_LayerOverridePriority: 0
m_IsTrigger: 0
m_ProvidesContacts: 0
m_Enabled: 1
serializedVersion: 3
m_Size: {x: 1, y: 1, z: 1}
m_Center: {x: 0, y: 0, z: 0}
--- !u!33 &101108174
MeshFilter:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 101108170}
m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
--- !u!1001 &130342001
PrefabInstance:
m_ObjectHideFlags: 0
@ -1372,6 +1484,37 @@ BoxCollider:
serializedVersion: 3
m_Size: {x: 150.5, y: 4, z: 0.5}
m_Center: {x: 0, y: 0, z: 0}
--- !u!1 &506345465
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 506345466}
m_Layer: 0
m_Name: StandPoint_1
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &506345466
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 506345465}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 1, z: 0, w: -0.00000004371139}
m_LocalPosition: {x: 2.5, y: 3, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 1532509717}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &562137767
GameObject:
m_ObjectHideFlags: 0
@ -1384,6 +1527,7 @@ GameObject:
- component: {fileID: 562137769}
- component: {fileID: 562137768}
- component: {fileID: 562137771}
- component: {fileID: 562137772}
m_Layer: 0
m_Name: Main Camera
m_TagString: MainCamera
@ -1483,6 +1627,24 @@ MonoBehaviour:
positionSmoothTime: 0.25
lookAtDegreesPerSecond: 180
lookAtHeightOffset: 1
--- !u!114 &562137772
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 562137767}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: cd21368c9a8b1064d913c375fb607c0b, type: 3}
m_Name:
m_EditorClassIdentifier: Assembly-CSharp::Jankenbots.Prototype.CameraDirector
avatarOffset: {x: 0, y: 4, z: -6}
robotOffset: {x: 0, y: 8, z: -12}
orbitRadius: 20
orbitHeight: 9
orbitSpeed: 18
lookHeight: 1.2
--- !u!1001 &579422633
PrefabInstance:
m_ObjectHideFlags: 0
@ -3779,6 +3941,37 @@ Transform:
m_CorrespondingSourceObject: {fileID: 400000, guid: 5161c2c79aa7dc44b8a812f624bf37d7, type: 3}
m_PrefabInstance: {fileID: 893957807}
m_PrefabAsset: {fileID: 0}
--- !u!1 &903945605
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 903945606}
m_Layer: 0
m_Name: StandPoint_0
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &903945606
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 903945605}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 1, z: 0, w: -0.00000004371139}
m_LocalPosition: {x: -2.5, y: 3, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 1532509717}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1001 &912005198
PrefabInstance:
m_ObjectHideFlags: 0
@ -6914,6 +7107,40 @@ Transform:
m_CorrespondingSourceObject: {fileID: 400000, guid: 034ba005b2423b84ebc087e917744363, type: 3}
m_PrefabInstance: {fileID: 1531216050}
m_PrefabAsset: {fileID: 0}
--- !u!1 &1532509716
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1532509717}
m_Layer: 0
m_Name: Stand
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &1532509717
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1532509716}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 82}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 101108171}
- {fileID: 903945606}
- {fileID: 506345466}
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1001 &1537562849
PrefabInstance:
m_ObjectHideFlags: 0
@ -8460,3 +8687,4 @@ SceneRoots:
- {fileID: 1378796740}
- {fileID: 850707848}
- {fileID: 326006527}
- {fileID: 1532509717}