diff options
| author | SmallFox <2806143047@qq.com> | 2026-05-21 07:21:06 +0800 |
|---|---|---|
| committer | SmallFox <2806143047@qq.com> | 2026-05-21 07:21:06 +0800 |
| commit | 3dcf88a36c072e42005c48dae419c66996c96f84 (patch) | |
| tree | 76a068834f2f536d83d5f1702fa35de6554da8d0 | |
| parent | a60a3d9344118915a50f22567bef6bee3f2a2415 (diff) | |
摄像机视角实现
实现跟随自由旋转
| -rw-r--r-- | Assets/Art.meta | 8 | ||||
| -rw-r--r-- | Assets/Art/Animations.meta (renamed from Assets/Animations.meta) | 0 | ||||
| -rw-r--r-- | Assets/Art/Animations/Falling To Roll.fbx | bin | 0 -> 1920464 bytes | |||
| -rw-r--r-- | Assets/Art/Animations/Falling To Roll.fbx.meta | 109 | ||||
| -rw-r--r-- | Assets/Art/Animations/Idle.anim (renamed from Assets/Animations/Idle.anim) | 0 | ||||
| -rw-r--r-- | Assets/Art/Animations/Idle.anim.meta (renamed from Assets/Animations/Idle.anim.meta) | 0 | ||||
| -rw-r--r-- | Assets/Art/Animations/Jump_land.anim (renamed from Assets/Animations/Jump_land.anim) | 0 | ||||
| -rw-r--r-- | Assets/Art/Animations/Jump_land.anim.meta (renamed from Assets/Animations/Jump_land.anim.meta) | 0 | ||||
| -rw-r--r-- | Assets/Art/Animations/Jump_launch.anim (renamed from Assets/Animations/Jump_launch.anim) | 0 | ||||
| -rw-r--r-- | Assets/Art/Animations/Jump_launch.anim.meta (renamed from Assets/Animations/Jump_launch.anim.meta) | 0 | ||||
| -rw-r--r-- | Assets/Art/Animations/Jump_mid.anim (renamed from Assets/Animations/Jump_mid.anim) | 0 | ||||
| -rw-r--r-- | Assets/Art/Animations/Jump_mid.anim.meta (renamed from Assets/Animations/Jump_mid.anim.meta) | 0 | ||||
| -rw-r--r-- | Assets/Art/Animations/Run.anim (renamed from Assets/Animations/Run.anim) | 0 | ||||
| -rw-r--r-- | Assets/Art/Animations/Run.anim.meta (renamed from Assets/Animations/Run.anim.meta) | 0 | ||||
| -rw-r--r-- | Assets/Art/Animations/Sprint.anim (renamed from Assets/Animations/Sprint.anim) | 0 | ||||
| -rw-r--r-- | Assets/Art/Animations/Sprint.anim.meta (renamed from Assets/Animations/Sprint.anim.meta) | 0 | ||||
| -rw-r--r-- | Assets/Art/Animations/Walk.anim (renamed from Assets/Animations/Walk.anim) | 0 | ||||
| -rw-r--r-- | Assets/Art/Animations/Walk.anim.meta (renamed from Assets/Animations/Walk.anim.meta) | 0 | ||||
| -rw-r--r-- | Assets/Art/Animator.meta (renamed from Assets/Animator.meta) | 0 | ||||
| -rw-r--r-- | Assets/Art/Animator/Humanoid.controller (renamed from Assets/Animator/Humanoid.controller) | 2 | ||||
| -rw-r--r-- | Assets/Art/Animator/Humanoid.controller.meta (renamed from Assets/Animator/Humanoid.controller.meta) | 0 | ||||
| -rw-r--r-- | Assets/Art/Material.meta (renamed from Assets/Material.meta) | 0 | ||||
| -rw-r--r-- | Assets/Art/Material/Floor_M.mat (renamed from Assets/Material/Floor_M.mat) | 0 | ||||
| -rw-r--r-- | Assets/Art/Material/Floor_M.mat.meta (renamed from Assets/Material/Floor_M.mat.meta) | 0 | ||||
| -rw-r--r-- | Assets/Scenes/SampleScene.unity | 205 | ||||
| -rw-r--r-- | Assets/Scripts/CameraHandler.cs | 71 | ||||
| -rw-r--r-- | Assets/Scripts/CameraHandler.cs.meta | 11 | ||||
| -rw-r--r-- | Assets/Scripts/InputHandler.cs | 18 | ||||
| -rw-r--r-- | Assets/Scripts/InputSystem/PlayerControls.cs | 2 | ||||
| -rw-r--r-- | Assets/Scripts/InputSystem/PlayerControls.inputactions | 2 | ||||
| -rw-r--r-- | Assets/Scripts/PlayerLocomotion.cs | 1 | ||||
| -rw-r--r-- | ProjectSettings/TagManager.asset | 2 |
32 files changed, 420 insertions, 11 deletions
diff --git a/Assets/Art.meta b/Assets/Art.meta new file mode 100644 index 0000000..309dae5 --- /dev/null +++ b/Assets/Art.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: e6c431d8b5dcc37408a24b3388eedbdc +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Animations.meta b/Assets/Art/Animations.meta index 4a3f423..4a3f423 100644 --- a/Assets/Animations.meta +++ b/Assets/Art/Animations.meta diff --git a/Assets/Art/Animations/Falling To Roll.fbx b/Assets/Art/Animations/Falling To Roll.fbx Binary files differnew file mode 100644 index 0000000..81b2aca --- /dev/null +++ b/Assets/Art/Animations/Falling To Roll.fbx diff --git a/Assets/Art/Animations/Falling To Roll.fbx.meta b/Assets/Art/Animations/Falling To Roll.fbx.meta new file mode 100644 index 0000000..3fbcad3 --- /dev/null +++ b/Assets/Art/Animations/Falling To Roll.fbx.meta @@ -0,0 +1,109 @@ +fileFormatVersion: 2 +guid: aa6c1d6696c2e194a88dc29a3adac65d +ModelImporter: + serializedVersion: 22200 + internalIDToNameTable: [] + externalObjects: {} + materials: + materialImportMode: 2 + materialName: 0 + materialSearch: 1 + materialLocation: 1 + animations: + legacyGenerateAnimations: 4 + bakeSimulation: 0 + resampleCurves: 1 + optimizeGameObjects: 0 + removeConstantScaleCurves: 0 + motionNodeName: + rigImportErrors: + rigImportWarnings: + animationImportErrors: + animationImportWarnings: + animationRetargetingWarnings: + animationDoRetargetingWarnings: 0 + importAnimatedCustomProperties: 0 + importConstraints: 0 + animationCompression: 3 + animationRotationError: 0.5 + animationPositionError: 0.5 + animationScaleError: 0.5 + animationWrapMode: 0 + extraExposedTransformPaths: [] + extraUserProperties: [] + clipAnimations: [] + isReadable: 0 + meshes: + lODScreenPercentages: [] + globalScale: 1 + meshCompression: 0 + addColliders: 0 + useSRGBMaterialColor: 1 + sortHierarchyByName: 1 + importPhysicalCameras: 1 + importVisibility: 1 + importBlendShapes: 1 + importCameras: 1 + importLights: 1 + nodeNameCollisionStrategy: 1 + fileIdsGeneration: 2 + swapUVChannels: 0 + generateSecondaryUV: 0 + useFileUnits: 1 + keepQuads: 0 + weldVertices: 1 + bakeAxisConversion: 0 + preserveHierarchy: 0 + skinWeightsMode: 0 + maxBonesPerVertex: 4 + minBoneWeight: 0.001 + optimizeBones: 1 + meshOptimizationFlags: -1 + indexFormat: 0 + secondaryUVAngleDistortion: 8 + secondaryUVAreaDistortion: 15.000001 + secondaryUVHardAngle: 88 + secondaryUVMarginMethod: 1 + secondaryUVMinLightmapResolution: 40 + secondaryUVMinObjectScale: 1 + secondaryUVPackMargin: 4 + useFileScale: 1 + strictVertexDataChecks: 0 + tangentSpace: + normalSmoothAngle: 60 + normalImportMode: 0 + tangentImportMode: 3 + normalCalculationMode: 4 + legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0 + blendShapeNormalImportMode: 1 + normalSmoothingSource: 0 + referencedClips: [] + importAnimation: 1 + humanDescription: + serializedVersion: 3 + human: [] + skeleton: [] + armTwist: 0.5 + foreArmTwist: 0.5 + upperLegTwist: 0.5 + legTwist: 0.5 + armStretch: 0.05 + legStretch: 0.05 + feetSpacing: 0 + globalScale: 1 + rootMotionBoneName: + hasTranslationDoF: 0 + hasExtraRoot: 0 + skeletonHasParents: 1 + lastHumanDescriptionAvatarSource: {instanceID: 0} + autoGenerateAvatarMappingIfUnspecified: 1 + animationType: 2 + humanoidOversampling: 1 + avatarSetup: 0 + addHumanoidExtraRootOnlyWhenUsingAvatar: 1 + importBlendShapeDeformPercent: 1 + remapMaterialsIfMaterialImportModeIsNone: 0 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Animations/Idle.anim b/Assets/Art/Animations/Idle.anim index 385bb6f..385bb6f 100644 --- a/Assets/Animations/Idle.anim +++ b/Assets/Art/Animations/Idle.anim diff --git a/Assets/Animations/Idle.anim.meta b/Assets/Art/Animations/Idle.anim.meta index 484ff83..484ff83 100644 --- a/Assets/Animations/Idle.anim.meta +++ b/Assets/Art/Animations/Idle.anim.meta diff --git a/Assets/Animations/Jump_land.anim b/Assets/Art/Animations/Jump_land.anim index 64bdb8b..64bdb8b 100644 --- a/Assets/Animations/Jump_land.anim +++ b/Assets/Art/Animations/Jump_land.anim diff --git a/Assets/Animations/Jump_land.anim.meta b/Assets/Art/Animations/Jump_land.anim.meta index 9a34847..9a34847 100644 --- a/Assets/Animations/Jump_land.anim.meta +++ b/Assets/Art/Animations/Jump_land.anim.meta diff --git a/Assets/Animations/Jump_launch.anim b/Assets/Art/Animations/Jump_launch.anim index 6f68587..6f68587 100644 --- a/Assets/Animations/Jump_launch.anim +++ b/Assets/Art/Animations/Jump_launch.anim diff --git a/Assets/Animations/Jump_launch.anim.meta b/Assets/Art/Animations/Jump_launch.anim.meta index 706433d..706433d 100644 --- a/Assets/Animations/Jump_launch.anim.meta +++ b/Assets/Art/Animations/Jump_launch.anim.meta diff --git a/Assets/Animations/Jump_mid.anim b/Assets/Art/Animations/Jump_mid.anim index ecf97f9..ecf97f9 100644 --- a/Assets/Animations/Jump_mid.anim +++ b/Assets/Art/Animations/Jump_mid.anim diff --git a/Assets/Animations/Jump_mid.anim.meta b/Assets/Art/Animations/Jump_mid.anim.meta index 91c4fbd..91c4fbd 100644 --- a/Assets/Animations/Jump_mid.anim.meta +++ b/Assets/Art/Animations/Jump_mid.anim.meta diff --git a/Assets/Animations/Run.anim b/Assets/Art/Animations/Run.anim index e835010..e835010 100644 --- a/Assets/Animations/Run.anim +++ b/Assets/Art/Animations/Run.anim diff --git a/Assets/Animations/Run.anim.meta b/Assets/Art/Animations/Run.anim.meta index a5ab3f3..a5ab3f3 100644 --- a/Assets/Animations/Run.anim.meta +++ b/Assets/Art/Animations/Run.anim.meta diff --git a/Assets/Animations/Sprint.anim b/Assets/Art/Animations/Sprint.anim index 2b22f43..2b22f43 100644 --- a/Assets/Animations/Sprint.anim +++ b/Assets/Art/Animations/Sprint.anim diff --git a/Assets/Animations/Sprint.anim.meta b/Assets/Art/Animations/Sprint.anim.meta index d4fccf5..d4fccf5 100644 --- a/Assets/Animations/Sprint.anim.meta +++ b/Assets/Art/Animations/Sprint.anim.meta diff --git a/Assets/Animations/Walk.anim b/Assets/Art/Animations/Walk.anim index 5d7528d..5d7528d 100644 --- a/Assets/Animations/Walk.anim +++ b/Assets/Art/Animations/Walk.anim diff --git a/Assets/Animations/Walk.anim.meta b/Assets/Art/Animations/Walk.anim.meta index ce3102f..ce3102f 100644 --- a/Assets/Animations/Walk.anim.meta +++ b/Assets/Art/Animations/Walk.anim.meta diff --git a/Assets/Animator.meta b/Assets/Art/Animator.meta index 90ed13d..90ed13d 100644 --- a/Assets/Animator.meta +++ b/Assets/Art/Animator.meta diff --git a/Assets/Animator/Humanoid.controller b/Assets/Art/Animator/Humanoid.controller index 97378e3..1aea84b 100644 --- a/Assets/Animator/Humanoid.controller +++ b/Assets/Art/Animator/Humanoid.controller @@ -90,7 +90,7 @@ AnimatorStateMachine: m_EntryTransitions: [] m_StateMachineTransitions: {} m_StateMachineBehaviours: [] - m_AnyStatePosition: {x: 50, y: 20, z: 0} + m_AnyStatePosition: {x: 60, y: 30, z: 0} m_EntryPosition: {x: 50, y: 120, z: 0} m_ExitPosition: {x: 800, y: 120, z: 0} m_ParentStateMachinePosition: {x: 800, y: 20, z: 0} diff --git a/Assets/Animator/Humanoid.controller.meta b/Assets/Art/Animator/Humanoid.controller.meta index ef3771a..ef3771a 100644 --- a/Assets/Animator/Humanoid.controller.meta +++ b/Assets/Art/Animator/Humanoid.controller.meta diff --git a/Assets/Material.meta b/Assets/Art/Material.meta index be37edd..be37edd 100644 --- a/Assets/Material.meta +++ b/Assets/Art/Material.meta diff --git a/Assets/Material/Floor_M.mat b/Assets/Art/Material/Floor_M.mat index 00cc3aa..00cc3aa 100644 --- a/Assets/Material/Floor_M.mat +++ b/Assets/Art/Material/Floor_M.mat diff --git a/Assets/Material/Floor_M.mat.meta b/Assets/Art/Material/Floor_M.mat.meta index e40286f..e40286f 100644 --- a/Assets/Material/Floor_M.mat.meta +++ b/Assets/Art/Material/Floor_M.mat.meta diff --git a/Assets/Scenes/SampleScene.unity b/Assets/Scenes/SampleScene.unity index 44f5495..6ed7d71 100644 --- a/Assets/Scenes/SampleScene.unity +++ b/Assets/Scenes/SampleScene.unity @@ -182,7 +182,7 @@ Camera: height: 1 near clip plane: 0.3 far clip plane: 1000 - field of view: 60 + field of view: 40 orthographic: 0 orthographic size: 5 m_Depth: -1 @@ -208,12 +208,12 @@ Transform: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 330585543} serializedVersion: 2 - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 1, z: -10} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 1.3, z: -3.47} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] - m_Father: {fileID: 0} + m_Father: {fileID: 672788657} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!114 &330585547 MonoBehaviour: @@ -377,6 +377,59 @@ MonoBehaviour: m_LightCookieSize: {x: 1, y: 1} m_LightCookieOffset: {x: 0, y: 0} m_SoftShadowQuality: 1 +--- !u!1 &464634225 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 464634227} + - component: {fileID: 464634226} + m_Layer: 0 + m_Name: Camera Holder + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &464634226 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 464634225} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: eb1b68ec627ba6d45a0ea7b392c986b2, type: 3} + m_Name: + m_EditorClassIdentifier: + cameraTransform: {fileID: 330585546} + targetTransform: {fileID: 668448698} + cameraPivotTransform: {fileID: 672788657} + lookSpeed: 0.1 + followSpeed: 0.1 + pivotSpeed: 0.03 + minimumPivot: -35 + maximumPivot: 35 +--- !u!4 &464634227 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 464634225} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 672788657} + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &668448697 GameObject: m_ObjectHideFlags: 0 @@ -390,7 +443,7 @@ GameObject: - component: {fileID: 668448700} - component: {fileID: 668448702} - component: {fileID: 668448701} - m_Layer: 0 + m_Layer: 10 m_Name: Player m_TagString: Untagged m_Icon: {fileID: 0} @@ -498,6 +551,38 @@ MonoBehaviour: normalCamera: {fileID: 0} movementSpeed: 5 rotationSpeed: 10 +--- !u!1 &672788656 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 672788657} + m_Layer: 0 + m_Name: Camera Pivot + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &672788657 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 672788656} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 330585546} + m_Father: {fileID: 464634227} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &832575517 GameObject: m_ObjectHideFlags: 0 @@ -547,6 +632,111 @@ Transform: m_Children: [] m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &874524339 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 874524343} + - component: {fileID: 874524342} + - component: {fileID: 874524341} + - component: {fileID: 874524340} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!65 &874524340 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 874524339} + 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!23 &874524341 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 874524339} + 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_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: 0 + 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_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &874524342 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 874524339} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &874524343 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 874524339} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 12.31} + 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!1 &1222555656 stripped GameObject: m_CorrespondingSourceObject: {fileID: 1229922237220284, guid: bbf9d2d73db526c4aa3f66acf676c574, @@ -654,7 +844,7 @@ Transform: serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalScale: {x: 2.3286433, y: 2.3286433, z: 2.3286433} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 0} @@ -749,8 +939,9 @@ MonoBehaviour: SceneRoots: m_ObjectHideFlags: 0 m_Roots: - - {fileID: 330585546} - {fileID: 410087041} - {fileID: 832575519} - {fileID: 1696157895} - {fileID: 668448698} + - {fileID: 464634227} + - {fileID: 874524343} diff --git a/Assets/Scripts/CameraHandler.cs b/Assets/Scripts/CameraHandler.cs new file mode 100644 index 0000000..c815fae --- /dev/null +++ b/Assets/Scripts/CameraHandler.cs @@ -0,0 +1,71 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using Unity.Mathematics; +using UnityEngine; + +namespace DS +{ + public class CameraHandler : MonoBehaviour + { + public Transform cameraTransform; + public Transform targetTransform; + public Transform cameraPivotTransform; + private Transform _myTransform; + private Vector3 _cameraTransformPosition; + private LayerMask _ignoreLayers; + private Vector3 cameraFollowVelocity = Vector3.zero; + + public static CameraHandler singleton; + public float lookSpeed = 0.1f; + public float followSpeed = 0.1f; + public float pivotSpeed = 0.03f; + + private float _targetPosition; + private float _defaultPosition; + private float _lookAngle; + private float _pivotAngle; + public float minimumPivot = -35; + public float maximumPivot = 35; + + public float cameraSphereRadius = 0.2f; + public float cameraCollisionOffSet = 0.2f; + public float minimumCollisionOffSet = 0.2f; + + private void Awake() + { + singleton = this; + _myTransform = transform; + _defaultPosition = cameraTransform.localPosition.z; + _ignoreLayers = ~(1 << 8 | 1 << 9 | 1 << 10); + } + + public void FollowTarget(float delta) + { + Vector3 targetPosition = Vector3.SmoothDamp(_myTransform.position, targetTransform.position, + ref cameraFollowVelocity, delta / followSpeed); + _myTransform.position = targetPosition; + } + + public void HandleCameraRotation(float delta, float mouseInputX, float mouseInputY) + { + _lookAngle += (mouseInputX * lookSpeed) / delta; + _pivotAngle -= (mouseInputY * pivotSpeed) / delta; + _pivotAngle = Mathf.Clamp(_pivotAngle, minimumPivot, maximumPivot); + + Vector3 rotation = Vector3.zero; + rotation.y = _lookAngle; + Quaternion targetRotation = Quaternion.Euler(rotation); + _myTransform.rotation = targetRotation; + + rotation = Vector3.zero; + rotation.x = _pivotAngle; + + targetRotation = Quaternion.Euler(rotation); + cameraPivotTransform.localRotation = targetRotation; + + + } + } +} + diff --git a/Assets/Scripts/CameraHandler.cs.meta b/Assets/Scripts/CameraHandler.cs.meta new file mode 100644 index 0000000..a828ef6 --- /dev/null +++ b/Assets/Scripts/CameraHandler.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: eb1b68ec627ba6d45a0ea7b392c986b2 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/InputHandler.cs b/Assets/Scripts/InputHandler.cs index ec72656..f653adb 100644 --- a/Assets/Scripts/InputHandler.cs +++ b/Assets/Scripts/InputHandler.cs @@ -14,10 +14,27 @@ namespace DS public float mouseY; private PlayerControls _inputActions; + private CameraHandler _cameraHandler; private Vector2 _movementInput; private Vector2 _cameraInput; + private void Awake() + { + _cameraHandler = CameraHandler.singleton; + } + + private void FixedUpdate() + { + float delta = Time.fixedDeltaTime; + + if (_cameraHandler != null) + { + _cameraHandler.FollowTarget(delta); + _cameraHandler.HandleCameraRotation(delta,mouseX,mouseY); + } + } + public void OnEnable() { if (_inputActions == null) @@ -48,6 +65,7 @@ namespace DS moveAmount = Mathf.Clamp01(Mathf.Abs((horizontal)) + Mathf.Abs(vertical)); mouseX = _cameraInput.x; mouseY = _cameraInput.y; + } } } diff --git a/Assets/Scripts/InputSystem/PlayerControls.cs b/Assets/Scripts/InputSystem/PlayerControls.cs index 71ef71f..c76f6ba 100644 --- a/Assets/Scripts/InputSystem/PlayerControls.cs +++ b/Assets/Scripts/InputSystem/PlayerControls.cs @@ -38,7 +38,7 @@ public partial class @PlayerControls: IInputActionCollection2, IDisposable }, { ""name"": ""Camera"", - ""type"": ""Value"", + ""type"": ""PassThrough"", ""id"": ""bb5b6b4b-5b42-4192-a498-10356a2b125a"", ""expectedControlType"": ""Vector2"", ""processors"": """", diff --git a/Assets/Scripts/InputSystem/PlayerControls.inputactions b/Assets/Scripts/InputSystem/PlayerControls.inputactions index ed31d4a..e71a5c9 100644 --- a/Assets/Scripts/InputSystem/PlayerControls.inputactions +++ b/Assets/Scripts/InputSystem/PlayerControls.inputactions @@ -16,7 +16,7 @@ }, { "name": "Camera", - "type": "Value", + "type": "PassThrough", "id": "bb5b6b4b-5b42-4192-a498-10356a2b125a", "expectedControlType": "Vector2", "processors": "", diff --git a/Assets/Scripts/PlayerLocomotion.cs b/Assets/Scripts/PlayerLocomotion.cs index 686595d..aaa0c12 100644 --- a/Assets/Scripts/PlayerLocomotion.cs +++ b/Assets/Scripts/PlayerLocomotion.cs @@ -41,6 +41,7 @@ namespace DS _moveDirection = _cameraObject.forward * _inputHandler.vertical; _moveDirection += _cameraObject.right * _inputHandler.horizontal; _moveDirection.Normalize(); + _moveDirection.y = 0; float speed = movementSpeed; _moveDirection *= speed; diff --git a/ProjectSettings/TagManager.asset b/ProjectSettings/TagManager.asset index 1c92a78..a4fc6b8 100644 --- a/ProjectSettings/TagManager.asset +++ b/ProjectSettings/TagManager.asset @@ -15,7 +15,7 @@ TagManager: - - - - - + - Controller - - - |
