Add first-person camera mode with pose-aware eye offset and yaw facing

Introduce a FirstPersonController / FirstPersonMode pair (mirroring the
free-cam mode) wired into the GameModeManager Tab cycle. In first person the
mesh is hidden, the eye sits on CameraTarget plus a per-pose
firstPersonCameraTargetYOffset, and the character body yaw is driven to match
the camera via a new single-writer FaceYaw hook on PlayerCharacterController.

Also includes user content edits (poses, prefabs, scene) carried along.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
adminandClaude Opus 4.8 committed 2026-06-27 13:03:52 +02:00
1 parent 381b21cd02
commit cfb767f6cb
17 files changed
+681 -91

No files matched your search

+200 -88
View File
@@ -603,7 +603,7 @@ MonoBehaviour:
TransparentLayers:
serializedVersion: 2
m_Bits: 0
MinimumDistanceFromTarget: 0.8
MinimumDistanceFromTarget: 0.5
AvoidObstacles:
Enabled: 1
DistanceLimit: 0
@@ -614,7 +614,7 @@ MonoBehaviour:
YOffset: 0
Strategy: 0
MaximumEffort: 4
SmoothingTime: 0
SmoothingTime: 0.05
Damping: 0.2
DampingWhenOccluded: 0.1
ShotQualityEvaluation:
@@ -735,11 +735,11 @@ MonoBehaviour:
m_StreamingVersion: 20241001
m_LegacyPriority: 0
Target:
TrackingTarget: {fileID: 1774267802}
LookAtTarget: {fileID: 1774267802}
TrackingTarget: {fileID: 5297240775790447668}
LookAtTarget: {fileID: 0}
CustomLookAtTarget: 0
Lens:
FieldOfView: 40
FieldOfView: 45
OrthographicSize: 10
NearClipPlane: 0.1
FarClipPlane: 5000
@@ -767,7 +767,7 @@ Transform:
m_GameObject: {fileID: 172071430}
serializedVersion: 2
m_LocalRotation: {x: 0.1305262, y: 2.1996925e-11, z: -4.1198815e-12, w: 0.9914449}
m_LocalPosition: {x: 0, y: 1.5396858, z: -4.3466663}
m_LocalPosition: {x: 0, y: 3.0396857, z: -4.3466663}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
@@ -1453,7 +1453,7 @@ Camera:
height: 1
near clip plane: 0.1
far clip plane: 5000
field of view: 40
field of view: 45
orthographic: 0
orthographic size: 10
m_Depth: -1
@@ -1480,7 +1480,7 @@ Transform:
m_GameObject: {fileID: 330585543}
serializedVersion: 2
m_LocalRotation: {x: 0.1305262, y: 2.1832952e-11, z: -2.8743629e-12, w: 0.9914449}
m_LocalPosition: {x: 0, y: 1.5396858, z: -4.3466663}
m_LocalPosition: {x: 0, y: 3.0396857, z: -4.3466663}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
@@ -2246,6 +2246,19 @@ Transform:
m_CorrespondingSourceObject: {fileID: 433010, guid: ac92cfb4db971489da14157130119008, type: 3}
m_PrefabInstance: {fileID: 505084142}
m_PrefabAsset: {fileID: 0}
--- !u!134 &539493728
PhysicsMaterial:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: ' (Instance)'
serializedVersion: 2
m_DynamicFriction: 0.6
m_StaticFriction: 0.6
m_Bounciness: 0
m_FrictionCombine: 0
m_BounceCombine: 0
--- !u!1001 &551852894
PrefabInstance:
m_ObjectHideFlags: 0
@@ -2498,6 +2511,104 @@ Transform:
m_CorrespondingSourceObject: {fileID: 477104, guid: 6aacb349af157442ebc4e122e8d6b9bd, type: 3}
m_PrefabInstance: {fileID: 580280589}
m_PrefabAsset: {fileID: 0}
--- !u!1 &582951479
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 582951482}
- component: {fileID: 582951481}
- component: {fileID: 582951480}
m_Layer: 0
m_Name: FirstPersonCamera
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!114 &582951480
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 582951479}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 43b8f1dc43642294f99fab0aaabf6197, type: 3}
m_Name:
m_EditorClassIdentifier: Assembly-CSharp::FirstPersonController
cameraTarget: {fileID: 897939465}
hiddenRenderers:
- {fileID: 1294962561}
horizontalSensitivity: 0.1
verticalSensitivity: 0.075
invertY: 0
maxPitch: 89
lookSmoothTime: 0.04
activePriority: 100
inactivePriority: -100
--- !u!114 &582951481
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 582951479}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: f9dfa5b682dcd46bda6128250e975f58, type: 3}
m_Name:
m_EditorClassIdentifier: Unity.Cinemachine::Unity.Cinemachine.CinemachineCamera
Priority:
Enabled: 1
m_Value: -100
OutputChannel: 1
StandbyUpdate: 2
m_StreamingVersion: 20241001
m_LegacyPriority: 0
Target:
TrackingTarget: {fileID: 0}
LookAtTarget: {fileID: 0}
CustomLookAtTarget: 0
Lens:
FieldOfView: 45
OrthographicSize: 10
NearClipPlane: 0.1
FarClipPlane: 5000
Dutch: 0
ModeOverride: 0
PhysicalProperties:
GateFit: 2
SensorSize: {x: 21.946, y: 16.002}
LensShift: {x: 0, y: 0}
FocusDistance: 10
Iso: 200
ShutterSpeed: 0.005
Aperture: 16
BladeCount: 5
Curvature: {x: 2, y: 11}
BarrelClipping: 0.25
Anamorphism: 0
BlendHint: 0
--- !u!4 &582951482
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 582951479}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 1.875, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1001 &607565146
PrefabInstance:
m_ObjectHideFlags: 0
@@ -2559,19 +2670,6 @@ PrefabInstance:
m_AddedGameObjects: []
m_AddedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: ac1cc01cb5dbf5d4f869c403b38f8a21, type: 3}
--- !u!134 &610463647
PhysicsMaterial:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name:
serializedVersion: 2
m_DynamicFriction: 0.6
m_StaticFriction: 0.6
m_Bounciness: 0
m_FrictionCombine: 0
m_BounceCombine: 0
--- !u!1001 &626957352
PrefabInstance:
m_ObjectHideFlags: 0
@@ -3965,6 +4063,37 @@ MeshCollider:
m_Convex: 0
m_CookingOptions: 30
m_Mesh: {fileID: 4300000, guid: 6d5becbf770f24fa3ab1ceaba45fcefa, type: 3}
--- !u!1 &897939464
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 897939465}
m_Layer: 0
m_Name: FirstPersonTarget
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &897939465
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 897939464}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 1.2, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 1141039639}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1001 &924705986
PrefabInstance:
m_ObjectHideFlags: 0
@@ -4530,10 +4659,15 @@ Transform:
m_CorrespondingSourceObject: {fileID: 411130, guid: a4bb788560e5d4617b970cd301097f38, type: 3}
m_PrefabInstance: {fileID: 1039758568}
m_PrefabAsset: {fileID: 0}
--- !u!4 &1141039639 stripped
Transform:
m_CorrespondingSourceObject: {fileID: 1950906664192868687, guid: cf153a3aea3d5da4f9d4cdbff0be8180, type: 3}
m_PrefabInstance: {fileID: 5297240775790447667}
m_PrefabAsset: {fileID: 0}
--- !u!114 &1141039642 stripped
MonoBehaviour:
m_CorrespondingSourceObject: {fileID: 1035623159758896108, guid: 97017ed3bb40aff4e885440d9a7336ee, type: 3}
m_PrefabInstance: {fileID: 2016604527338364568}
m_CorrespondingSourceObject: {fileID: 8381518232634759850, guid: cf153a3aea3d5da4f9d4cdbff0be8180, type: 3}
m_PrefabInstance: {fileID: 5297240775790447667}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
@@ -4934,7 +5068,7 @@ CharacterController:
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1282734303}
m_Material: {fileID: 610463647}
m_Material: {fileID: 539493728}
m_IncludeLayers:
serializedVersion: 2
m_Bits: 0
@@ -4976,7 +5110,7 @@ MonoBehaviour:
LookAtTarget: {fileID: 0}
CustomLookAtTarget: 0
Lens:
FieldOfView: 40
FieldOfView: 45
OrthographicSize: 10
NearClipPlane: 0.1
FarClipPlane: 5000
@@ -5010,6 +5144,11 @@ Transform:
m_Children: []
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!137 &1294962561 stripped
SkinnedMeshRenderer:
m_CorrespondingSourceObject: {fileID: 8001664246499114791, guid: cf153a3aea3d5da4f9d4cdbff0be8180, type: 3}
m_PrefabInstance: {fileID: 5297240775790447667}
m_PrefabAsset: {fileID: 0}
--- !u!1001 &1317768121
PrefabInstance:
m_ObjectHideFlags: 0
@@ -5800,6 +5939,7 @@ MonoBehaviour:
cameraInput: {fileID: 172071431}
painter: {fileID: 0}
freeCam: {fileID: 1282734304}
firstPerson: {fileID: 582951480}
switchKey: 3
startModeIndex: 0
--- !u!4 &1516578028
@@ -6824,11 +6964,6 @@ Transform:
m_CorrespondingSourceObject: {fileID: 468598, guid: 0525b7ad910d145f9a39a0da3b697815, type: 3}
m_PrefabInstance: {fileID: 1762911884}
m_PrefabAsset: {fileID: 0}
--- !u!4 &1774267802 stripped
Transform:
m_CorrespondingSourceObject: {fileID: 4348940595172967010, guid: 97017ed3bb40aff4e885440d9a7336ee, type: 3}
m_PrefabInstance: {fileID: 2016604527338364568}
m_PrefabAsset: {fileID: 0}
--- !u!1001 &1797333846
PrefabInstance:
m_ObjectHideFlags: 0
@@ -7678,7 +7813,7 @@ Transform:
m_CorrespondingSourceObject: {fileID: 4922444305696846, guid: ac1cc01cb5dbf5d4f869c403b38f8a21, type: 3}
m_PrefabInstance: {fileID: 1424346480}
m_PrefabAsset: {fileID: 0}
--- !u!1001 &2016604527338364568
--- !u!1001 &5297240775790447667
PrefabInstance:
m_ObjectHideFlags: 0
serializedVersion: 2
@@ -7686,95 +7821,71 @@ PrefabInstance:
serializedVersion: 3
m_TransformParent: {fileID: 0}
m_Modifications:
- target: {fileID: 273411532115212066, guid: 97017ed3bb40aff4e885440d9a7336ee, type: 3}
propertyPath: scale
value: 0.5
objectReference: {fileID: 0}
- target: {fileID: 1514890176713383521, guid: 97017ed3bb40aff4e885440d9a7336ee, type: 3}
propertyPath: m_Enabled
value: 1
objectReference: {fileID: 0}
- target: {fileID: 4587432968399885263, guid: 97017ed3bb40aff4e885440d9a7336ee, type: 3}
propertyPath: poses.Array.size
value: 5
objectReference: {fileID: 0}
- target: {fileID: 4587432968399885263, guid: 97017ed3bb40aff4e885440d9a7336ee, type: 3}
propertyPath: 'poses.Array.data[2]'
value:
objectReference: {fileID: 11400000, guid: 90df501d86681394b834f647f6f4e939, type: 2}
- target: {fileID: 4587432968399885263, guid: 97017ed3bb40aff4e885440d9a7336ee, type: 3}
propertyPath: 'poses.Array.data[3]'
value:
objectReference: {fileID: 11400000, guid: c5cf9d420554e5e4e96d3bee1903967a, type: 2}
- target: {fileID: 4587432968399885263, guid: 97017ed3bb40aff4e885440d9a7336ee, type: 3}
propertyPath: 'poses.Array.data[4]'
value:
objectReference: {fileID: 11400000, guid: 1545cfba9b5e06d41ae72c7ec766baaf, type: 2}
- target: {fileID: 5280718916654756701, guid: 97017ed3bb40aff4e885440d9a7336ee, type: 3}
propertyPath: m_IsActive
value: 1
objectReference: {fileID: 0}
- target: {fileID: 5384024074013944205, guid: 97017ed3bb40aff4e885440d9a7336ee, type: 3}
propertyPath: m_Name
value: Player
objectReference: {fileID: 0}
- target: {fileID: 6997860362608943113, guid: 97017ed3bb40aff4e885440d9a7336ee, type: 3}
propertyPath: m_LocalScale.x
value: 0.5
objectReference: {fileID: 0}
- target: {fileID: 6997860362608943113, guid: 97017ed3bb40aff4e885440d9a7336ee, type: 3}
propertyPath: m_LocalScale.y
value: 0.5
objectReference: {fileID: 0}
- target: {fileID: 6997860362608943113, guid: 97017ed3bb40aff4e885440d9a7336ee, type: 3}
propertyPath: m_LocalScale.z
value: 0.5
objectReference: {fileID: 0}
- target: {fileID: 6997860362608943113, guid: 97017ed3bb40aff4e885440d9a7336ee, type: 3}
- target: {fileID: 1950906664192868687, guid: cf153a3aea3d5da4f9d4cdbff0be8180, type: 3}
propertyPath: m_LocalPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6997860362608943113, guid: 97017ed3bb40aff4e885440d9a7336ee, type: 3}
- target: {fileID: 1950906664192868687, guid: cf153a3aea3d5da4f9d4cdbff0be8180, type: 3}
propertyPath: m_LocalPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6997860362608943113, guid: 97017ed3bb40aff4e885440d9a7336ee, type: 3}
- target: {fileID: 1950906664192868687, guid: cf153a3aea3d5da4f9d4cdbff0be8180, type: 3}
propertyPath: m_LocalPosition.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6997860362608943113, guid: 97017ed3bb40aff4e885440d9a7336ee, type: 3}
- target: {fileID: 1950906664192868687, guid: cf153a3aea3d5da4f9d4cdbff0be8180, type: 3}
propertyPath: m_LocalRotation.w
value: 1
objectReference: {fileID: 0}
- target: {fileID: 6997860362608943113, guid: 97017ed3bb40aff4e885440d9a7336ee, type: 3}
- target: {fileID: 1950906664192868687, guid: cf153a3aea3d5da4f9d4cdbff0be8180, type: 3}
propertyPath: m_LocalRotation.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6997860362608943113, guid: 97017ed3bb40aff4e885440d9a7336ee, type: 3}
- target: {fileID: 1950906664192868687, guid: cf153a3aea3d5da4f9d4cdbff0be8180, type: 3}
propertyPath: m_LocalRotation.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6997860362608943113, guid: 97017ed3bb40aff4e885440d9a7336ee, type: 3}
- target: {fileID: 1950906664192868687, guid: cf153a3aea3d5da4f9d4cdbff0be8180, type: 3}
propertyPath: m_LocalRotation.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6997860362608943113, guid: 97017ed3bb40aff4e885440d9a7336ee, type: 3}
- target: {fileID: 1950906664192868687, guid: cf153a3aea3d5da4f9d4cdbff0be8180, type: 3}
propertyPath: m_LocalEulerAnglesHint.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6997860362608943113, guid: 97017ed3bb40aff4e885440d9a7336ee, type: 3}
- target: {fileID: 1950906664192868687, guid: cf153a3aea3d5da4f9d4cdbff0be8180, type: 3}
propertyPath: m_LocalEulerAnglesHint.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6997860362608943113, guid: 97017ed3bb40aff4e885440d9a7336ee, type: 3}
- target: {fileID: 1950906664192868687, guid: cf153a3aea3d5da4f9d4cdbff0be8180, type: 3}
propertyPath: m_LocalEulerAnglesHint.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 3510981371713521867, guid: cf153a3aea3d5da4f9d4cdbff0be8180, type: 3}
propertyPath: m_Name
value: Player
objectReference: {fileID: 0}
- target: {fileID: 3510981371713521867, guid: cf153a3aea3d5da4f9d4cdbff0be8180, type: 3}
propertyPath: m_IsActive
value: 1
objectReference: {fileID: 0}
- target: {fileID: 8381518232634759850, guid: cf153a3aea3d5da4f9d4cdbff0be8180, type: 3}
propertyPath: sprintSpeedMultiplier
value: 2
objectReference: {fileID: 0}
m_RemovedComponents: []
m_RemovedGameObjects: []
m_AddedGameObjects: []
m_AddedGameObjects:
- targetCorrespondingSourceObject: {fileID: 1950906664192868687, guid: cf153a3aea3d5da4f9d4cdbff0be8180, type: 3}
insertIndex: -1
addedObject: {fileID: 897939465}
m_AddedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 97017ed3bb40aff4e885440d9a7336ee, type: 3}
m_SourcePrefab: {fileID: 100100000, guid: cf153a3aea3d5da4f9d4cdbff0be8180, type: 3}
--- !u!4 &5297240775790447668 stripped
Transform:
m_CorrespondingSourceObject: {fileID: 5067936922952835876, guid: cf153a3aea3d5da4f9d4cdbff0be8180, type: 3}
m_PrefabInstance: {fileID: 5297240775790447667}
m_PrefabAsset: {fileID: 0}
--- !u!1660057539 &9223372036854775807
SceneRoots:
m_ObjectHideFlags: 0
@@ -7782,12 +7893,13 @@ SceneRoots:
- {fileID: 1516578028}
- {fileID: 2009475134}
- {fileID: 330585546}
- {fileID: 582951482}
- {fileID: 172071436}
- {fileID: 1282734307}
- {fileID: 832575519}
- {fileID: 410087041}
- {fileID: 2025317892}
- {fileID: 2016604527338364568}
- {fileID: 5297240775790447667}
- {fileID: 686187287}
- {fileID: 489277934}
- {fileID: 347639557}