diff --git a/Assets/3D Models/VillainGuy/Animations/Cover.meta b/Assets/3D Models/VillainGuy/Animations/Cover.meta new file mode 100644 index 0000000..4f321fe --- /dev/null +++ b/Assets/3D Models/VillainGuy/Animations/Cover.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: be3292b4179d57a4aad5365b8ebd2683 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/3D Models/VillainGuy/Animations/Cover/Stand To Cover.fbx b/Assets/3D Models/VillainGuy/Animations/Cover/Stand To Cover.fbx new file mode 100644 index 0000000..85d1ccf --- /dev/null +++ b/Assets/3D Models/VillainGuy/Animations/Cover/Stand To Cover.fbx Binary files differ diff --git a/Assets/3D Models/VillainGuy/Animations/Cover/Stand To Cover.fbx.meta b/Assets/3D Models/VillainGuy/Animations/Cover/Stand To Cover.fbx.meta new file mode 100644 index 0000000..5ead2fe --- /dev/null +++ b/Assets/3D Models/VillainGuy/Animations/Cover/Stand To Cover.fbx.meta @@ -0,0 +1,916 @@ +fileFormatVersion: 2 +guid: 1e7d35cfd092cd343a0169f0c7f81612 +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: "\nClip 'mixamo.com' has import animation warnings that + might lower retargeting quality:\nNote: Activate translation DOF on avatar + to improve retargeting quality.\n\t'neck_01' is inbetween humanoid transforms + and has rotation animation that will be discarded.\n" + animationRetargetingWarnings: + animationDoRetargetingWarnings: 0 + importAnimatedCustomProperties: 0 + importConstraints: 0 + animationCompression: 1 + animationRotationError: 0.5 + animationPositionError: 0.5 + animationScaleError: 0.5 + animationWrapMode: 0 + extraExposedTransformPaths: [] + extraUserProperties: [] + clipAnimations: + - serializedVersion: 16 + name: Stand_To_Cover + takeName: mixamo.com + internalID: -203655887218126122 + firstFrame: 0 + lastFrame: 75 + wrapMode: 0 + orientationOffsetY: 0 + level: 0 + cycleOffset: 0 + loop: 0 + hasAdditiveReferencePose: 0 + loopTime: 0 + loopBlend: 0 + loopBlendOrientation: 1 + loopBlendPositionY: 1 + loopBlendPositionXZ: 0 + keepOriginalOrientation: 1 + keepOriginalPositionY: 1 + keepOriginalPositionXZ: 1 + heightFromFeet: 0 + mirror: 0 + bodyMask: 01000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000 + curves: [] + events: [] + transformMask: [] + maskType: 3 + maskSource: {instanceID: 0} + additiveReferencePoseFrame: 0 + 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: + - boneName: pelvis + humanName: Hips + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: thigh_l + humanName: LeftUpperLeg + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: thigh_r + humanName: RightUpperLeg + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: calf_l + humanName: LeftLowerLeg + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: calf_r + humanName: RightLowerLeg + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: foot_l + humanName: LeftFoot + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: foot_r + humanName: RightFoot + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: spine_01 + humanName: Spine + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: spine_02 + humanName: Chest + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: head + humanName: Head + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: clavicle_l + humanName: LeftShoulder + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: clavicle_r + humanName: RightShoulder + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: upperarm_l + humanName: LeftUpperArm + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: upperarm_r + humanName: RightUpperArm + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: lowerarm_l + humanName: LeftLowerArm + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: lowerarm_r + humanName: RightLowerArm + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: hand_l + humanName: LeftHand + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: hand_r + humanName: RightHand + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: ball_l + humanName: LeftToes + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: ball_r + humanName: RightToes + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: thumb_01_l + humanName: Left Thumb Proximal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: thumb_02_l + humanName: Left Thumb Intermediate + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: thumb_03_l + humanName: Left Thumb Distal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: index_01_l + humanName: Left Index Proximal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: index_02_l + humanName: Left Index Intermediate + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: index_03_l + humanName: Left Index Distal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: middle_01_l + humanName: Left Middle Proximal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: middle_02_l + humanName: Left Middle Intermediate + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: middle_03_l + humanName: Left Middle Distal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: ring_01_l + humanName: Left Ring Proximal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: ring_02_l + humanName: Left Ring Intermediate + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: ring_03_l + humanName: Left Ring Distal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: pinky_01_l + humanName: Left Little Proximal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: pinky_02_l + humanName: Left Little Intermediate + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: pinky_03_l + humanName: Left Little Distal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: thumb_01_r + humanName: Right Thumb Proximal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: thumb_02_r + humanName: Right Thumb Intermediate + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: thumb_03_r + humanName: Right Thumb Distal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: index_01_r + humanName: Right Index Proximal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: index_02_r + humanName: Right Index Intermediate + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: index_03_r + humanName: Right Index Distal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: middle_01_r + humanName: Right Middle Proximal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: middle_02_r + humanName: Right Middle Intermediate + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: middle_03_r + humanName: Right Middle Distal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: ring_01_r + humanName: Right Ring Proximal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: ring_02_r + humanName: Right Ring Intermediate + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: ring_03_r + humanName: Right Ring Distal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: pinky_01_r + humanName: Right Little Proximal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: pinky_02_r + humanName: Right Little Intermediate + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: pinky_03_r + humanName: Right Little Distal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: spine_03 + humanName: UpperChest + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + skeleton: + - name: Man_Mesh(Clone) + parentName: + position: {x: 0, y: 0, z: 0} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: Man_Shoes_Mesh + parentName: Man_Mesh(Clone) + position: {x: -0, y: 0, z: 0} + rotation: {x: -0.7071068, y: 0, z: -0, w: 0.7071068} + scale: {x: 1, y: 1, z: 1} + - name: Man_Pullover_Mesh + parentName: Man_Mesh(Clone) + position: {x: -0, y: 0, z: 0} + rotation: {x: -0.7071068, y: 0, z: -0, w: 0.7071068} + scale: {x: 1, y: 1, z: 1} + - name: Man_Jacket_Mesh + parentName: Man_Mesh(Clone) + position: {x: -0, y: 0, z: 0} + rotation: {x: -0.7071068, y: 0, z: -0, w: 0.7071068} + scale: {x: 1, y: 1, z: 1} + - name: Man_Cloth_Face_Mesh + parentName: Man_Mesh(Clone) + position: {x: -0, y: 0, z: 0} + rotation: {x: -0.7071068, y: 0, z: -0, w: 0.7071068} + scale: {x: 1, y: 1, z: 1} + - name: Man_Eyes_Mesh + parentName: Man_Mesh(Clone) + position: {x: -0, y: 0, z: 0} + rotation: {x: -0.7071068, y: 0, z: -0, w: 0.7071068} + scale: {x: 1, y: 1, z: 1} + - name: Man_Jaw_Mesh + parentName: Man_Mesh(Clone) + position: {x: -0, y: 0, z: 0} + rotation: {x: -0.7071068, y: 0, z: -0, w: 0.7071068} + scale: {x: 1, y: 1, z: 1} + - name: Man_Pants_Mesh + parentName: Man_Mesh(Clone) + position: {x: -0, y: 0, z: 0} + rotation: {x: -0.7071068, y: 0, z: -0, w: 0.7071068} + scale: {x: 1, y: 1, z: 1} + - name: Man_Bag_Mesh + parentName: Man_Mesh(Clone) + position: {x: -0, y: 0, z: 0} + rotation: {x: -0.7071068, y: 0, z: -0, w: 0.7071068} + scale: {x: 1, y: 1, z: 1} + - name: Man_Half_ Body_Mesh + parentName: Man_Mesh(Clone) + position: {x: -0, y: 0, z: 0} + rotation: {x: -0.7071068, y: 0, z: -0, w: 0.7071068} + scale: {x: 1, y: 1, z: 1} + - name: Man_Balaclava_Mesh + parentName: Man_Mesh(Clone) + position: {x: -0, y: 0, z: 0} + rotation: {x: -0.7071068, y: 0, z: -0, w: 0.7071068} + scale: {x: 1, y: 1, z: 1} + - name: Man_Body_Mesh + parentName: Man_Mesh(Clone) + position: {x: -0, y: 0, z: 0} + rotation: {x: -0.7071068, y: 0, z: -0, w: 0.7071068} + scale: {x: 1, y: 1, z: 1} + - name: Man_Legs_Mesh + parentName: Man_Mesh(Clone) + position: {x: -0, y: 0, z: 0} + rotation: {x: -0.7071068, y: 0, z: -0, w: 0.7071068} + scale: {x: 1, y: 1, z: 1} + - name: Man_Head_Mesh + parentName: Man_Mesh(Clone) + position: {x: -0, y: 0, z: 0} + rotation: {x: -0.7071068, y: 0, z: -0, w: 0.7071068} + scale: {x: 1, y: 1, z: 1} + - name: Man_Arms_Mesh + parentName: Man_Mesh(Clone) + position: {x: -0, y: 0, z: 0} + rotation: {x: -0.7071068, y: 0, z: -0, w: 0.7071068} + scale: {x: 1, y: 1, z: 1} + - name: Man_Feet_Mesh + parentName: Man_Mesh(Clone) + position: {x: -0, y: 0, z: 0} + rotation: {x: -0.7071068, y: 0, z: -0, w: 0.7071068} + scale: {x: 1, y: 1, z: 1} + - name: root + parentName: Man_Mesh(Clone) + position: {x: -0, y: 0, z: 0} + rotation: {x: -0.7071068, y: 0, z: -0, w: 0.7071068} + scale: {x: 1, y: 1, z: 1} + - name: pelvis + parentName: root + position: {x: -1.3536842e-30, y: 0.010561532, z: 0.967506} + rotation: {x: 0.001285252, y: 0.7071056, z: 0.001285252, w: 0.70710564} + scale: {x: 1, y: 1, z: 1} + - name: spine_01 + parentName: pelvis + position: {x: -0.10808876, y: -0.00851415, z: 6.366463e-14} + rotation: {x: -1.9530694e-12, y: 1.2352853e-13, z: 0.062388644, w: 0.99805194} + scale: {x: 1, y: 1, z: 1} + - name: spine_02 + parentName: spine_01 + position: {x: -0.1887535, y: 0.038011625, z: 5.96483e-10} + rotation: {x: -3.9594643e-12, y: 8.031096e-14, z: -0.12241963, w: 0.99247843} + scale: {x: 1, y: 1, z: 1} + - name: spine_03 + parentName: spine_02 + position: {x: -0.13407294, y: 0.004204769, z: -1.8189894e-14} + rotation: {x: 9.740796e-16, y: 3.5301275e-15, z: -0.024252605, w: 0.9997059} + scale: {x: 1, y: 1, z: 1} + - name: neck_01 + parentName: spine_03 + position: {x: -0.16558762, y: -0.0035532187, z: -5.966012e-10} + rotation: {x: 7.2372565e-16, y: -3.4782173e-15, z: 0.20371066, w: 0.97903115} + scale: {x: 1, y: 1, z: 1} + - name: head + parentName: neck_01 + position: {x: -0.12162018, y: -0.0065364074, z: 0.0000000037700554} + rotation: {x: 2.6143405e-16, y: -7.204873e-15, z: -0.13354197, w: 0.99104315} + scale: {x: 1, y: 1, z: 1} + - name: clavicle_l + parentName: spine_03 + position: {x: -0.118836515, y: -0.0273209, z: -0.03781983} + rotation: {x: 0.15407091, y: -0.72627765, z: -0.066705, w: 0.6665834} + scale: {x: 1, y: 1, z: 1} + - name: upperarm_l + parentName: clavicle_l + position: {x: -0.15784869, y: -0.000000007152557, z: 0.00000030517577} + rotation: {x: 0.020797713, y: 0.021657813, z: 0.17508805, w: 0.98409486} + scale: {x: 1, y: 1, z: 1} + - name: lowerarm_l + parentName: upperarm_l + position: {x: -0.30339926, y: 0.000000019073486, z: -0.00000015258789} + rotation: {x: -0.0713235, y: 0.052186925, z: 0.011155781, w: 0.99602467} + scale: {x: 1, y: 1, z: 1} + - name: hand_l + parentName: lowerarm_l + position: {x: -0.26975143, y: 0.000000038146972, z: 0} + rotation: {x: -0.61789525, y: -0.019371951, z: -0.010653311, w: 0.7859495} + scale: {x: 1, y: 1, z: 1} + - name: thumb_01_l + parentName: hand_l + position: {x: -0.04762039, y: 0.023749847, z: -0.025378188} + rotation: {x: 0.6082695, y: -0.32367244, z: 0.15832925, w: 0.70723146} + scale: {x: 1, y: 1, z: 1} + - name: thumb_02_l + parentName: thumb_01_l + position: {x: -0.03869667, y: 0, z: 0.00000015258789} + rotation: {x: 0.002635299, y: -0.01981308, z: -0.02970621, w: 0.9993588} + scale: {x: 1, y: 1, z: 1} + - name: thumb_03_l + parentName: thumb_02_l + position: {x: -0.04062172, y: 0, z: -0.00000015258789} + rotation: {x: 0.021399073, y: -0.0018833294, z: 0.10793758, w: 0.9939256} + scale: {x: 1, y: 1, z: 1} + - name: index_01_l + parentName: hand_l + position: {x: -0.12068107, y: 0.017634735, z: -0.021093959} + rotation: {x: 0.13733767, y: 0.009897616, z: -0.13345258, w: 0.9814433} + scale: {x: 1, y: 1, z: 1} + - name: index_02_l + parentName: index_01_l + position: {x: -0.042874984, y: -0.00000015258789, z: 0} + rotation: {x: 0.012101031, y: 0.0010654434, z: -0.038360797, w: 0.9991901} + scale: {x: 1, y: 1, z: 1} + - name: index_03_l + parentName: index_02_l + position: {x: -0.033938065, y: 0, z: 0} + rotation: {x: 0.010611149, y: -0.00785089, z: 0.08285505, w: 0.9964742} + scale: {x: 1, y: 1, z: 1} + - name: middle_01_l + parentName: hand_l + position: {x: -0.122442774, y: 0.012936401, z: 0.005711632} + rotation: {x: 0.0294859, y: 0.040344976, z: -0.13033111, w: 0.9902105} + scale: {x: 1, y: 1, z: 1} + - name: middle_02_l + parentName: middle_01_l + position: {x: -0.046403617, y: 0, z: 0} + rotation: {x: -0.018723588, y: -0.0028381175, z: -0.038127586, w: 0.9990935} + scale: {x: 1, y: 1, z: 1} + - name: middle_03_l + parentName: middle_02_l + position: {x: -0.036488496, y: -0.00000015258789, z: 0} + rotation: {x: 0.0016214601, y: 0.03886701, z: 0.13362356, w: 0.9902684} + scale: {x: 1, y: 1, z: 1} + - name: ring_01_l + parentName: hand_l + position: {x: -0.11497879, y: 0.017535094, z: 0.028469162} + rotation: {x: -0.09728406, y: 0.07056157, z: -0.11622573, w: 0.98592526} + scale: {x: 1, y: 1, z: 1} + - name: ring_02_l + parentName: ring_01_l + position: {x: -0.044301644, y: 0.00000015258789, z: 0.000000009536743} + rotation: {x: 0.004327601, y: 0.0045785657, z: -0.037475202, w: 0.9992778} + scale: {x: 1, y: 1, z: 1} + - name: ring_03_l + parentName: ring_02_l + position: {x: -0.034766387, y: -0.00000015258789, z: -0.000000019073486} + rotation: {x: -0.0001988851, y: -0.026257778, z: 0.112212904, w: 0.9933372} + scale: {x: 1, y: 1, z: 1} + - name: pinky_01_l + parentName: hand_l + position: {x: -0.10140663, y: 0.02263153, z: 0.0464315} + rotation: {x: -0.13504851, y: 0.09653573, z: -0.08907584, w: 0.9820939} + scale: {x: 1, y: 1, z: 1} + - name: pinky_02_l + parentName: pinky_01_l + position: {x: -0.03570976, y: 0.00000015258789, z: 0} + rotation: {x: 0.010402412, y: 0.0041402555, z: -0.03847455, w: 0.9991969} + scale: {x: 1, y: 1, z: 1} + - name: pinky_03_l + parentName: pinky_02_l + position: {x: -0.029856108, y: 0, z: 0.000000019073486} + rotation: {x: 0.003580966, y: -0.0337964, z: -0.008930347, w: 0.99938244} + scale: {x: 1, y: 1, z: 1} + - name: lowerarm_twist_01_l + parentName: lowerarm_l + position: {x: -0.14, y: 0.000000038146972, z: 0} + rotation: {x: 0.000000022351747, y: -0.000000029802326, z: -0.000000020721929, + w: 1} + scale: {x: 1, y: 1, z: 1} + - name: clavicle_r + parentName: spine_03 + position: {x: -0.11883758, y: -0.027321033, z: 0.037820026} + rotation: {x: 0.7262779, y: 0.15407045, z: 0.6665832, w: 0.06670453} + scale: {x: 1, y: 1, z: 1} + - name: upperarm_r + parentName: clavicle_r + position: {x: 0.15784794, y: -0.00000005483627, z: -0.00000045776366} + rotation: {x: 0.02079771, y: 0.021657573, z: 0.17508808, w: 0.9840948} + scale: {x: 1, y: 1, z: 1} + - name: lowerarm_r + parentName: upperarm_r + position: {x: 0.30340043, y: -0.000000042915342, z: 0} + rotation: {x: -0.07132364, y: 0.05218662, z: 0.011155156, w: 0.9960246} + scale: {x: 1, y: 1, z: 1} + - name: hand_r + parentName: lowerarm_r + position: {x: 0.26975238, y: 0.0000002479553, z: -0.00000015258789} + rotation: {x: -0.61789525, y: -0.019371996, z: -0.010653302, w: 0.7859495} + scale: {x: 1, y: 1, z: 1} + - name: thumb_01_r + parentName: hand_r + position: {x: 0.04762123, y: -0.023751372, z: 0.025378017} + rotation: {x: 0.60827017, y: -0.32366666, z: 0.15832435, w: 0.7072346} + scale: {x: 1, y: 1, z: 1} + - name: thumb_02_r + parentName: thumb_01_r + position: {x: 0.038695678, y: 0.0000011062622, z: 0.00000045776366} + rotation: {x: 0.0026338988, y: -0.019817838, z: -0.029695101, w: 0.9993591} + scale: {x: 1, y: 1, z: 1} + - name: thumb_03_r + parentName: thumb_02_r + position: {x: 0.040621758, y: 0, z: 0} + rotation: {x: 0.021399073, y: -0.0018833755, z: 0.10793752, w: 0.9939256} + scale: {x: 1, y: 1, z: 1} + - name: index_01_r + parentName: hand_r + position: {x: 0.12067947, y: -0.01763733, z: 0.021094283} + rotation: {x: 0.1373373, y: 0.009892748, z: -0.13346487, w: 0.9814417} + scale: {x: 1, y: 1, z: 1} + - name: index_02_r + parentName: index_01_r + position: {x: 0.04287689, y: 0.0000007629394, z: -0.0000006866455} + rotation: {x: 0.012101663, y: 0.0010700038, z: -0.038371615, w: 0.99918973} + scale: {x: 1, y: 1, z: 1} + - name: index_03_r + parentName: index_02_r + position: {x: 0.033938065, y: 0.000001373291, z: -0.00000022888183} + rotation: {x: 0.0106111765, y: -0.007850867, z: 0.08285501, w: 0.9964742} + scale: {x: 1, y: 1, z: 1} + - name: middle_01_r + parentName: hand_r + position: {x: 0.122441255, y: -0.012937317, z: -0.0057113264} + rotation: {x: 0.029485673, y: 0.040343367, z: -0.13031983, w: 0.990212} + scale: {x: 1, y: 1, z: 1} + - name: middle_02_r + parentName: middle_01_r + position: {x: 0.04640564, y: -0.0000015258788, z: 0.000000076293944} + rotation: {x: -0.018723482, y: -0.0028402118, z: -0.038147546, w: 0.9990927} + scale: {x: 1, y: 1, z: 1} + - name: middle_03_r + parentName: middle_02_r + position: {x: 0.03648918, y: 0.00000045776366, z: -0.000000038146972} + rotation: {x: 0.0016214341, y: 0.038867, z: 0.13362366, w: 0.9902684} + scale: {x: 1, y: 1, z: 1} + - name: ring_01_r + parentName: hand_r + position: {x: 0.11497978, y: -0.017537842, z: -0.028469162} + rotation: {x: -0.09728353, y: 0.070561744, z: -0.116239704, w: 0.98592365} + scale: {x: 1, y: 1, z: 1} + - name: ring_02_r + parentName: ring_01_r + position: {x: 0.04429859, y: 0.0000009155273, z: -0.00000018119812} + rotation: {x: 0.004328138, y: 0.004579774, z: -0.03746609, w: 0.999278} + scale: {x: 1, y: 1, z: 1} + - name: ring_03_r + parentName: ring_02_r + position: {x: 0.034766614, y: 0.00000061035155, z: -0.000000038146972} + rotation: {x: -0.00019886924, y: -0.026257772, z: 0.11221286, w: 0.9933372} + scale: {x: 1, y: 1, z: 1} + - name: pinky_01_r + parentName: hand_r + position: {x: 0.101406015, y: -0.022633666, z: -0.046431005} + rotation: {x: -0.13504958, y: 0.09653456, z: -0.08907182, w: 0.9820941} + scale: {x: 1, y: 1, z: 1} + - name: pinky_02_r + parentName: pinky_01_r + position: {x: 0.035710562, y: -0.0000007629394, z: -0.000000076293944} + rotation: {x: 0.010402913, y: 0.004140542, z: -0.03854271, w: 0.9991942} + scale: {x: 1, y: 1, z: 1} + - name: pinky_03_r + parentName: pinky_02_r + position: {x: 0.029854277, y: 0.0000032043456, z: -0.00000034332274} + rotation: {x: 0.003580956, y: -0.0337964, z: -0.008930317, w: 0.99938244} + scale: {x: 1, y: 1, z: 1} + - name: lowerarm_twist_01_r + parentName: lowerarm_r + position: {x: 0.13999988, y: 0.0000002670288, z: -0.00000030517577} + rotation: {x: -0.11762719, y: -0.000000018524526, z: -0.0000000019597624, w: 0.99305785} + scale: {x: 1, y: 1, z: 1} + - name: thigh_r + parentName: pelvis + position: {x: 0.014486617, y: -0.0053142747, z: 0.09005803} + rotation: {x: -0.062138926, y: 0.073704876, z: 0.9953053, w: -0.008584256} + scale: {x: 1, y: 1, z: 1} + - name: calf_r + parentName: thigh_r + position: {x: -0.42572257, y: -0.000000019669532, z: 0.000000019073486} + rotation: {x: -0.048884206, y: -0.018863901, z: 0.06552232, w: 0.99647444} + scale: {x: 1, y: 1, z: 1} + - name: foot_r + parentName: calf_r + position: {x: -0.40196812, y: 0.000000028610229, z: -0.000000095367426} + rotation: {x: -0.0058857515, y: -0.03199129, z: -0.07035477, w: 0.9969916} + scale: {x: 1, y: 1, z: 1} + - name: ball_r + parentName: foot_r + position: {x: -0.104798675, y: 0.1454401, z: 0.00012495041} + rotation: {x: 0.000080073405, y: -0.000029591032, z: 0.7186339, w: 0.6953886} + scale: {x: 1, y: 1, z: 1} + - name: thigh_l + parentName: pelvis + position: {x: 0.014488297, y: -0.005314235, z: -0.090058096} + rotation: {x: 0.07370486, y: 0.062138937, z: 0.008584418, w: 0.9953053} + scale: {x: 1, y: 1, z: 1} + - name: calf_l + parentName: thigh_l + position: {x: 0.42572036, y: -5.9604643e-10, z: 0} + rotation: {x: -0.048884194, y: -0.018863898, z: 0.06552232, w: 0.99647444} + scale: {x: 1, y: 1, z: 1} + - name: foot_l + parentName: calf_l + position: {x: 0.40196696, y: 0, z: 0} + rotation: {x: -0.0058857496, y: -0.031991277, z: -0.070354745, w: 0.9969916} + scale: {x: 1, y: 1, z: 1} + - name: ball_l + parentName: foot_l + position: {x: 0.104798876, y: -0.14544067, z: -0.00012496948} + rotation: {x: 0.00008008022, y: -0.000029595034, z: 0.7186339, w: 0.6953886} + scale: {x: 1, y: 1, z: 1} + - name: Man_Body_For_Jacket_Mesh + parentName: Man_Mesh(Clone) + position: {x: -0, y: 0, z: 0} + rotation: {x: -0.7071068, y: 0, z: -0, w: 0.7071068} + scale: {x: 1, y: 1, z: 1} + - name: Man_Pullover_For_Jacket_Mesh + parentName: Man_Mesh(Clone) + position: {x: -0, y: 0, z: 0} + rotation: {x: -0.7071068, y: 0, z: -0, w: 0.7071068} + scale: {x: 1, y: 1, z: 1} + 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: 1 + skeletonHasParents: 1 + lastHumanDescriptionAvatarSource: {fileID: 9000000, guid: b8a7488d12adc39498433d60811eab1a, + type: 3} + autoGenerateAvatarMappingIfUnspecified: 1 + animationType: 3 + humanoidOversampling: 1 + avatarSetup: 2 + addHumanoidExtraRootOnlyWhenUsingAvatar: 1 + importBlendShapeDeformPercent: 1 + remapMaterialsIfMaterialImportModeIsNone: 0 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/3D Models/VillainGuy/VillainGuyController.controller b/Assets/3D Models/VillainGuy/VillainGuyController.controller index 03f8f27..ca0cef0 100644 --- a/Assets/3D Models/VillainGuy/VillainGuyController.controller +++ b/Assets/3D Models/VillainGuy/VillainGuyController.controller @@ -12,6 +12,7 @@ m_CycleOffset: 0 m_Transitions: - {fileID: -1661100348595344887} + - {fileID: -2944632061687461772} m_StateMachineBehaviours: [] m_Position: {x: 50, y: 50, z: 0} m_IKOnFeet: 0 @@ -51,6 +52,28 @@ m_ExitPosition: {x: 800, y: 120, z: 0} m_ParentStateMachinePosition: {x: 800, y: 20, z: 0} m_DefaultState: {fileID: 8550625464060502635} +--- !u!1107 &-5978197764101068625 +AnimatorStateMachine: + serializedVersion: 6 + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: CoverLocomotion + m_ChildStates: + - serializedVersion: 1 + m_State: {fileID: 5515026192348781825} + m_Position: {x: 310, y: 110, z: 0} + m_ChildStateMachines: [] + m_AnyStateTransitions: [] + m_EntryTransitions: [] + m_StateMachineTransitions: {} + m_StateMachineBehaviours: [] + m_AnyStatePosition: {x: 50, y: 20, 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} + m_DefaultState: {fileID: 5515026192348781825} --- !u!1102 &-5975792626735484472 AnimatorState: serializedVersion: 6 @@ -63,6 +86,7 @@ m_CycleOffset: 0 m_Transitions: - {fileID: -2070494933896505967} + - {fileID: 7662523849653715784} m_StateMachineBehaviours: [] m_Position: {x: 50, y: 50, z: 0} m_IKOnFeet: 0 @@ -100,6 +124,31 @@ m_InterruptionSource: 0 m_OrderedInterruption: 1 m_CanTransitionToSelf: 1 +--- !u!1101 &-2944632061687461772 +AnimatorStateTransition: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: + m_Conditions: + - m_ConditionMode: 1 + m_ConditionEvent: InCombat + m_EventTreshold: 0 + m_DstStateMachine: {fileID: 0} + m_DstState: {fileID: -5975792626735484472} + m_Solo: 0 + m_Mute: 0 + m_IsExit: 0 + serializedVersion: 3 + m_TransitionDuration: 0.25 + m_TransitionOffset: 0 + m_ExitTime: 0.7580645 + m_HasExitTime: 1 + m_HasFixedDuration: 1 + m_InterruptionSource: 0 + m_OrderedInterruption: 1 + m_CanTransitionToSelf: 1 --- !u!1101 &-2070494933896505967 AnimatorStateTransition: m_ObjectHideFlags: 1 @@ -150,6 +199,31 @@ m_InterruptionSource: 0 m_OrderedInterruption: 1 m_CanTransitionToSelf: 1 +--- !u!1101 &-466238257885619520 +AnimatorStateTransition: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: + m_Conditions: + - m_ConditionMode: 1 + m_ConditionEvent: InCombat + m_EventTreshold: 0 + m_DstStateMachine: {fileID: 0} + m_DstState: {fileID: -5975792626735484472} + m_Solo: 0 + m_Mute: 0 + m_IsExit: 0 + serializedVersion: 3 + m_TransitionDuration: 0.25 + m_TransitionOffset: 0 + m_ExitTime: 0.96703297 + m_HasExitTime: 1 + m_HasFixedDuration: 1 + m_InterruptionSource: 0 + m_OrderedInterruption: 1 + m_CanTransitionToSelf: 1 --- !u!91 &9100000 AnimatorController: m_ObjectHideFlags: 0 @@ -201,6 +275,12 @@ m_DefaultInt: 0 m_DefaultBool: 0 m_Controller: {fileID: 9100000} + - m_Name: CoverState + m_Type: 4 + m_DefaultFloat: 0 + m_DefaultInt: 0 + m_DefaultBool: 0 + m_Controller: {fileID: 9100000} m_AnimatorLayers: - serializedVersion: 5 m_Name: Base Layer @@ -364,9 +444,8 @@ m_ChildStateMachines: - serializedVersion: 1 m_StateMachine: {fileID: 8943376391575461076} - m_Position: {x: 40, y: -80, z: 0} - m_AnyStateTransitions: - - {fileID: 6999494309983996774} + m_Position: {x: 550, y: 60, z: 0} + m_AnyStateTransitions: [] m_EntryTransitions: [] m_StateMachineTransitions: {} m_StateMachineBehaviours: [] @@ -375,6 +454,33 @@ m_ExitPosition: {x: 800, y: 120, z: 0} m_ParentStateMachinePosition: {x: 800, y: 20, z: 0} m_DefaultState: {fileID: 7627635763754707773} +--- !u!1102 &5515026192348781825 +AnimatorState: + serializedVersion: 6 + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: GetCover + m_Speed: 1 + m_CycleOffset: 0 + m_Transitions: [] + m_StateMachineBehaviours: [] + m_Position: {x: 50, y: 50, z: 0} + m_IKOnFeet: 0 + m_WriteDefaultValues: 1 + m_Mirror: 0 + m_SpeedParameterActive: 0 + m_MirrorParameterActive: 0 + m_CycleOffsetParameterActive: 0 + m_TimeParameterActive: 0 + m_Motion: {fileID: -203655887218126122, guid: 1e7d35cfd092cd343a0169f0c7f81612, + type: 3} + m_Tag: + m_SpeedParameter: + m_MirrorParameter: + m_CycleOffsetParameter: + m_TimeParameter: --- !u!1101 &6142924190726731929 AnimatorStateTransition: m_ObjectHideFlags: 1 @@ -400,31 +506,6 @@ m_InterruptionSource: 0 m_OrderedInterruption: 1 m_CanTransitionToSelf: 1 ---- !u!1101 &6999494309983996774 -AnimatorStateTransition: - m_ObjectHideFlags: 1 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: - m_Conditions: - - m_ConditionMode: 1 - m_ConditionEvent: InCombat - m_EventTreshold: 0 - m_DstStateMachine: {fileID: 0} - m_DstState: {fileID: -5975792626735484472} - m_Solo: 0 - m_Mute: 0 - m_IsExit: 0 - serializedVersion: 3 - m_TransitionDuration: 0.25 - m_TransitionOffset: 0 - m_ExitTime: 0.75 - m_HasExitTime: 0 - m_HasFixedDuration: 1 - m_InterruptionSource: 0 - m_OrderedInterruption: 1 - m_CanTransitionToSelf: 0 --- !u!1102 &7627635763754707773 AnimatorState: serializedVersion: 6 @@ -437,6 +518,7 @@ m_CycleOffset: 0 m_Transitions: - {fileID: 7988729536957371252} + - {fileID: -466238257885619520} m_StateMachineBehaviours: [] m_Position: {x: 50, y: 50, z: 0} m_IKOnFeet: 0 @@ -452,6 +534,31 @@ m_MirrorParameter: m_CycleOffsetParameter: m_TimeParameter: +--- !u!1101 &7662523849653715784 +AnimatorStateTransition: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: + m_Conditions: + - m_ConditionMode: 1 + m_ConditionEvent: CoverState + m_EventTreshold: 0 + m_DstStateMachine: {fileID: 0} + m_DstState: {fileID: 5515026192348781825} + m_Solo: 0 + m_Mute: 0 + m_IsExit: 0 + serializedVersion: 3 + m_TransitionDuration: 0.25 + m_TransitionOffset: 0 + m_ExitTime: 0.79452056 + m_HasExitTime: 0 + m_HasFixedDuration: 1 + m_InterruptionSource: 0 + m_OrderedInterruption: 1 + m_CanTransitionToSelf: 1 --- !u!1101 &7988729536957371252 AnimatorStateTransition: m_ObjectHideFlags: 1 @@ -516,14 +623,19 @@ m_ChildStates: - serializedVersion: 1 m_State: {fileID: -5975792626735484472} - m_Position: {x: 380, y: 60, z: 0} - m_ChildStateMachines: [] + m_Position: {x: 380, y: 70, z: 0} + m_ChildStateMachines: + - serializedVersion: 1 + m_StateMachine: {fileID: -5978197764101068625} + m_Position: {x: 380, y: -30, z: 0} m_AnyStateTransitions: [] m_EntryTransitions: [] - m_StateMachineTransitions: {} + m_StateMachineTransitions: + - first: {fileID: -5978197764101068625} + second: [] m_StateMachineBehaviours: [] m_AnyStatePosition: {x: 50, y: 20, z: 0} - m_EntryPosition: {x: 50, y: 120, z: 0} + m_EntryPosition: {x: 50, y: 80, z: 0} m_ExitPosition: {x: 800, y: 120, z: 0} m_ParentStateMachinePosition: {x: 800, y: 20, z: 0} m_DefaultState: {fileID: -5975792626735484472} diff --git a/Assets/Editor/AwarenessEditor.cs b/Assets/Editor/AwarenessEditor.cs index 9dbef7f..6adaf77 100644 --- a/Assets/Editor/AwarenessEditor.cs +++ b/Assets/Editor/AwarenessEditor.cs @@ -1,5 +1,3 @@ -using System.Collections; -using System.Collections.Generic; using UnityEditor; using UnityEngine; @@ -11,6 +9,12 @@ Awareness aware = (Awareness)target; Handles.color = Color.green; - Handles.DrawWireArc(aware.transform.position, Vector3.up, Vector3.forward, 360, aware.Radius); + // Draw the main horizontal circle (XY plane) + Handles.DrawWireDisc(aware.transform.position, Vector3.up, aware.Radius); + + // Draw vertical arcs to simulate the 3D sphere + Handles.DrawWireArc(aware.transform.position, Vector3.right, Vector3.forward, 360, aware.Radius); } } + + diff --git a/Assets/OutdoorsScene.unity b/Assets/OutdoorsScene.unity index 1006bff..1fc6a50 100644 --- a/Assets/OutdoorsScene.unity +++ b/Assets/OutdoorsScene.unity @@ -137,7 +137,7 @@ - component: {fileID: 36614150} - component: {fileID: 36614149} - component: {fileID: 36614148} - m_Layer: 0 + m_Layer: 7 m_Name: miniWall m_TagString: SmallWall m_Icon: {fileID: 0} @@ -1275,7 +1275,7 @@ targets: [] targetLayerMask: serializedVersion: 2 - m_Bits: 0 + m_Bits: 128 enable: 0 targetTag: --- !u!1 &545392024 @@ -1649,9 +1649,10 @@ movementSmoothing: 0.1 smoothing: 0.1 isArmed: 0 + isAiming: 1 isReloding: 0 noAmmo: 0 - playerState: 0 + playerState: 1 --- !u!54 &999803915 Rigidbody: m_ObjectHideFlags: 0 @@ -1805,7 +1806,7 @@ - target: {fileID: 7841293106933389942, guid: 5358fd1db56fd5f4ebd3a9185f223155, type: 3} propertyPath: m_LocalPosition.x - value: 11.3652725 + value: 10.28 objectReference: {fileID: 0} - target: {fileID: 7841293106933389942, guid: 5358fd1db56fd5f4ebd3a9185f223155, type: 3} @@ -1815,12 +1816,12 @@ - target: {fileID: 7841293106933389942, guid: 5358fd1db56fd5f4ebd3a9185f223155, type: 3} propertyPath: m_LocalPosition.z - value: -13.61 + value: 2.05 objectReference: {fileID: 0} - target: {fileID: 7841293106933389942, guid: 5358fd1db56fd5f4ebd3a9185f223155, type: 3} propertyPath: m_LocalRotation.w - value: 1 + value: 0.7071068 objectReference: {fileID: 0} - target: {fileID: 7841293106933389942, guid: 5358fd1db56fd5f4ebd3a9185f223155, type: 3} @@ -1830,7 +1831,7 @@ - target: {fileID: 7841293106933389942, guid: 5358fd1db56fd5f4ebd3a9185f223155, type: 3} propertyPath: m_LocalRotation.y - value: 0 + value: -0.7071068 objectReference: {fileID: 0} - target: {fileID: 7841293106933389942, guid: 5358fd1db56fd5f4ebd3a9185f223155, type: 3} @@ -1845,7 +1846,7 @@ - target: {fileID: 7841293106933389942, guid: 5358fd1db56fd5f4ebd3a9185f223155, type: 3} propertyPath: m_LocalEulerAnglesHint.y - value: 0 + value: -90 objectReference: {fileID: 0} - target: {fileID: 7841293106933389942, guid: 5358fd1db56fd5f4ebd3a9185f223155, type: 3} diff --git a/Assets/Scripts/NPC/FSM/Actions/Combat/Ranged/Cover.meta b/Assets/Scripts/NPC/FSM/Actions/Combat/Ranged/Cover.meta new file mode 100644 index 0000000..6fc9185 --- /dev/null +++ b/Assets/Scripts/NPC/FSM/Actions/Combat/Ranged/Cover.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 45c7c03728a07dd4094e136f7906868a +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/NPC/FSM/Actions/Combat/Ranged/Cover/EnableCoverAction.cs b/Assets/Scripts/NPC/FSM/Actions/Combat/Ranged/Cover/EnableCoverAction.cs new file mode 100644 index 0000000..a2f4aab --- /dev/null +++ b/Assets/Scripts/NPC/FSM/Actions/Combat/Ranged/Cover/EnableCoverAction.cs @@ -0,0 +1,52 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.AI; + +[CreateAssetMenu(menuName = "Finite State Machine/Action/Combat/Ranged/Cover/GetCover")] +public class EnableCoverAction : Action +{ + [SerializeField] private float maxDistanceRay = 0.2f; + + public override void Execute(FSM fsm) + { + Animator animator = fsm.Controller.Animator; + RangedCombatState parentState = (RangedCombatState)fsm.CurrentState().GetParentState(); + GameObject coverSpot = null; + + if (parentState is RangedCombatState) + { + coverSpot = parentState.coverObject; + } + + else + { + coverSpot = null; + Debug.LogError($"The Parent State is not the type: {nameof(RangedCombatState)}!"); + } + + //Enables the cover action animation + //If the target is close enough of the cover location + if(!animator.GetBool("CoverState") && coverSpot != null) + { + RaycastHit hit; + Vector3 direction = (coverSpot.transform.position - fsm.transform.position).normalized; + Vector3 agentPos = new Vector3(fsm.transform.position.x, fsm.transform.position.y + 1f, fsm.transform.position.z); + Ray ray = new Ray(agentPos, direction); + Debug.DrawRay(agentPos, direction * 10f, Color.green); + //Performs a raycast to know the distance to the cover spot + if (Physics.Raycast(ray, out hit, maxDistanceRay)) + { + if (hit.transform != null) + { + fsm.Controller.Animator.SetBool("CoverState", true); + } + } + + else + { + Debug.LogWarning("Raycast didn't hit nothing!"); + } + } + } +} diff --git a/Assets/Scripts/NPC/FSM/Actions/Combat/Ranged/Cover/EnableCoverAction.cs.meta b/Assets/Scripts/NPC/FSM/Actions/Combat/Ranged/Cover/EnableCoverAction.cs.meta new file mode 100644 index 0000000..5453aaf --- /dev/null +++ b/Assets/Scripts/NPC/FSM/Actions/Combat/Ranged/Cover/EnableCoverAction.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b4cec53a930e02a418b5a18827c9a349 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/NPC/FSM/Actions/Combat/Ranged/Cover/GetCover.asset b/Assets/Scripts/NPC/FSM/Actions/Combat/Ranged/Cover/GetCover.asset new file mode 100644 index 0000000..d56c89d --- /dev/null +++ b/Assets/Scripts/NPC/FSM/Actions/Combat/Ranged/Cover/GetCover.asset @@ -0,0 +1,14 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b4cec53a930e02a418b5a18827c9a349, type: 3} + m_Name: GetCover + m_EditorClassIdentifier: diff --git a/Assets/Scripts/NPC/FSM/Actions/Combat/Ranged/Cover/GetCover.asset.meta b/Assets/Scripts/NPC/FSM/Actions/Combat/Ranged/Cover/GetCover.asset.meta new file mode 100644 index 0000000..95f4c0e --- /dev/null +++ b/Assets/Scripts/NPC/FSM/Actions/Combat/Ranged/Cover/GetCover.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 03fc4f24dd676b646a6b603290654418 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/NPC/FSM/Actions/Combat/Ranged/GoToCoverLocation.asset b/Assets/Scripts/NPC/FSM/Actions/Combat/Ranged/GoToCoverLocation.asset index df2531e..06b92d3 100644 --- a/Assets/Scripts/NPC/FSM/Actions/Combat/Ranged/GoToCoverLocation.asset +++ b/Assets/Scripts/NPC/FSM/Actions/Combat/Ranged/GoToCoverLocation.asset @@ -12,3 +12,4 @@ m_Script: {fileID: 11500000, guid: 8f017c8d0c9712f448b04539911d0497, type: 3} m_Name: GoToCoverLocation m_EditorClassIdentifier: + lootAtAction: {fileID: 11400000, guid: 3a23ebad3bebabe46af891670f1b15d1, type: 2} diff --git a/Assets/Scripts/NPC/FSM/Actions/Combat/Ranged/GoToLocationCoverAction.cs b/Assets/Scripts/NPC/FSM/Actions/Combat/Ranged/GoToLocationCoverAction.cs index 0374d96..67960c0 100644 --- a/Assets/Scripts/NPC/FSM/Actions/Combat/Ranged/GoToLocationCoverAction.cs +++ b/Assets/Scripts/NPC/FSM/Actions/Combat/Ranged/GoToLocationCoverAction.cs @@ -5,15 +5,18 @@ [CreateAssetMenu(menuName = "Finite State Machine/Action/Combat/Ranged/GoToCoverLocation")] public class GoToLocationCoverAction : Action { + [SerializeField] private LookAt lootAtAction; public override void Execute(FSM fsm) { GameObject target = fsm.Controller.AgentFOV.GetTarget(); Debug.Log($"Execute action: {nameof(GoToLocationCoverAction)}"); + Debug.Log($"Parent State: {fsm.CurrentState().GetParentState()}"); - if (fsm.CurrentState() is RangedCombatState) + if (fsm.CurrentState().GetParentState() is RangedCombatState) { - RangedCombatState state = (RangedCombatState)fsm.CurrentState(); + //Cast to the parent state that contains a reference to the the chosen cover location + RangedCombatState state = (RangedCombatState)fsm.CurrentState().GetParentState(); if (state.coverObject != null) { @@ -23,13 +26,13 @@ Vector3 closestPointOnCover = state.coverObject.GetComponent().ClosestPoint(fsm.transform.position); //Check the direction from the cover to the target - Vector3 coverToPlayerDir = (target.transform.position - closestPointOnCover).normalized; + Vector3 coverToTargetDir = (target.transform.position - closestPointOnCover).normalized; //Check the direction from the cover to the NPC Vector3 coverToNPCDir = (fsm.transform.position - closestPointOnCover).normalized; //Calculate final target position behind cover - float dotProduct = Vector3.Dot(coverToPlayerDir, coverToNPCDir); + float dotProduct = Vector3.Dot(coverToTargetDir, coverToNPCDir); //Calculate the final cover position Vector3 finalCoverPosition = closestPointOnCover; @@ -39,20 +42,43 @@ //Calculate the normal of the cover(using the normal of the closest point on the collider) RaycastHit hit; - if (Physics.Raycast(closestPointOnCover + Vector3.up, -coverToPlayerDir, out hit)) + if (Physics.Raycast(closestPointOnCover + Vector3.up, -coverToTargetDir, out hit)) { finalCoverPosition = hit.point; } } //Set Agent cover destionation + Debug.Log($"Spot cover location: {fsm.Controller.Agent.destination}"); fsm.Controller.Agent.SetDestination(finalCoverPosition); + fsm.Controller.Agent.stoppingDistance = 0.2f; + + //While the agent goes to the cover position it looks to the player + if (lootAtAction != null) + { + if (target != null) + { + lootAtAction.SetTarget(target); + lootAtAction.Execute(fsm); + } + + else + { + Debug.LogWarning("Missing Target!"); + } + } + + else + { + Debug.LogError($"Missing Component: {nameof(lootAtAction)}"); + } } else { Debug.LogError($"There is no Cover Location!"); } + } } diff --git a/Assets/Scripts/NPC/FSM/Conditions/Combat/TryToFindCoverLocation.cs b/Assets/Scripts/NPC/FSM/Conditions/Combat/TryToFindCoverLocation.cs index 14279b9..d1d20f9 100644 --- a/Assets/Scripts/NPC/FSM/Conditions/Combat/TryToFindCoverLocation.cs +++ b/Assets/Scripts/NPC/FSM/Conditions/Combat/TryToFindCoverLocation.cs @@ -16,7 +16,26 @@ //Checks if the target is on specific state if (targetState.CheckCondition(fsm)) { - return FindSpot(fsm) ? true : false; + Debug.Log($"Find Spot: {FindSpot(fsm)}"); + + if (FindSpot(fsm) != null) + { + RangedCombatState state = (RangedCombatState)fsm.CurrentState().GetParentState(); + + if (state != null) + { + if (state is RangedCombatState) + { + state.coverObject = FindSpot(fsm); + return true; + } + + return false; + } + return false; + } + + return false; } else return false; @@ -32,7 +51,7 @@ { //Use the sensor agentAware.SetTargetTag(tag); - agentAware.enabled = true; + agentAware.Enable = true; if (agentAware.TargetsList.Count > 0) { @@ -46,7 +65,7 @@ if (distance < closestTargetDistance || distance <= 0f) { - if (IsSpotProtected(target.transform, coverObj.transform)) + if (IsSpotProtected(target.transform, g.transform)) { coverObj = g; closestTargetDistance = distance; @@ -80,6 +99,7 @@ { return hit.transform != target; } + Debug.LogWarning($"Raycast failed for cover check."); return false; } diff --git a/Assets/Scripts/NPC/FSM/FSM.cs b/Assets/Scripts/NPC/FSM/FSM.cs index ae5fab7..d308d54 100644 --- a/Assets/Scripts/NPC/FSM/FSM.cs +++ b/Assets/Scripts/NPC/FSM/FSM.cs @@ -17,6 +17,7 @@ void Start() { + initialState.InitializeSubStates(); currentState = initialState; //Sets a state } @@ -38,6 +39,7 @@ { ChangeState(triggeredTransition.TargetState()); } + else if (state.SubStates() != null && state.SubStates().Count > 0) { foreach (State substate in state.SubStates()) @@ -46,6 +48,7 @@ // Check for triggered transitions in the substate triggeredTransition = substate.GetTriggeredTransition(this); + if (triggeredTransition != null) { // If a transition is triggered in the substate, change to the target state diff --git a/Assets/Scripts/NPC/FSM/State.cs b/Assets/Scripts/NPC/FSM/State.cs index 26a4f2c..f6320c0 100644 --- a/Assets/Scripts/NPC/FSM/State.cs +++ b/Assets/Scripts/NPC/FSM/State.cs @@ -12,6 +12,8 @@ [SerializeField] private Transition[] transitions; [SerializeField] private State initialSubState; [SerializeField] private List subStates; + [SerializeField] private State parentState; + public State GetParentState() => parentState; // Getter for parent state //Methods public Action GetEntryAction() => entryAction; @@ -54,4 +56,26 @@ return null; } + + public void SetParentState(State parent) + { + parentState = parent; + + // Assign this state as the parent to its substates + foreach (State subState in subStates) + { + subState.SetParentState(this); + } + } + + + // This method should be called to initialize parent-child relationships + public void InitializeSubStates() + { + foreach (State subState in subStates) + { + subState.SetParentState(this); + subState.InitializeSubStates(); // Recursively initialize all substates + } + } } diff --git a/Assets/Scripts/NPC/FSM/States/Alive/Combat/RangedCombat/CoveredState.asset b/Assets/Scripts/NPC/FSM/States/Alive/Combat/RangedCombat/CoveredState.asset index 76abfc2..3ef7cfc 100644 --- a/Assets/Scripts/NPC/FSM/States/Alive/Combat/RangedCombat/CoveredState.asset +++ b/Assets/Scripts/NPC/FSM/States/Alive/Combat/RangedCombat/CoveredState.asset @@ -13,8 +13,10 @@ m_Name: CoveredState m_EditorClassIdentifier: entryAction: {fileID: 11400000, guid: ec862de62fb0bb340aa50877b8093ccc, type: 2} - actions: [] + actions: + - {fileID: 11400000, guid: 03fc4f24dd676b646a6b603290654418, type: 2} exitAction: {fileID: 0} transitions: [] initialSubState: {fileID: 0} subStates: [] + parentState: {fileID: 11400000, guid: 50ceb3e8ee758154eba7597e047a8fc5, type: 2} diff --git a/Assets/Scripts/NPC/FSM/States/Alive/Combat/RangedCombat/EngagePlayerState.asset b/Assets/Scripts/NPC/FSM/States/Alive/Combat/RangedCombat/EngagePlayerState.asset index 8cbc6f7..cc2dcc5 100644 --- a/Assets/Scripts/NPC/FSM/States/Alive/Combat/RangedCombat/EngagePlayerState.asset +++ b/Assets/Scripts/NPC/FSM/States/Alive/Combat/RangedCombat/EngagePlayerState.asset @@ -16,6 +16,8 @@ actions: - {fileID: 11400000, guid: 303bb23a22c10fc42af07fcdac010d58, type: 2} exitAction: {fileID: 0} - transitions: [] + transitions: + - {fileID: 11400000, guid: 920cbee093fd5e34b8fb1a2cda792fa8, type: 2} initialSubState: {fileID: 0} subStates: [] + parentState: {fileID: 11400000, guid: 50ceb3e8ee758154eba7597e047a8fc5, type: 2} diff --git a/Assets/Scripts/NPC/FSM/States/Alive/Combat/RangedCombat/RangeCombatState.asset b/Assets/Scripts/NPC/FSM/States/Alive/Combat/RangedCombat/RangeCombatState.asset index 53bb5be..596508f 100644 --- a/Assets/Scripts/NPC/FSM/States/Alive/Combat/RangedCombat/RangeCombatState.asset +++ b/Assets/Scripts/NPC/FSM/States/Alive/Combat/RangedCombat/RangeCombatState.asset @@ -21,4 +21,5 @@ subStates: - {fileID: 11400000, guid: 63273e20759d3cc4da713ccd0a9bafdc, type: 2} - {fileID: 11400000, guid: 1b3bae95f7aec1a478f358b25487cd61, type: 2} + parentState: {fileID: 11400000, guid: 7248b9c0f406d71419ee6b3dee045891, type: 2} coverObject: {fileID: 0} diff --git a/Assets/Scripts/NPC/NPCController.cs b/Assets/Scripts/NPC/NPCController.cs index bce5ed5..29f5548 100644 --- a/Assets/Scripts/NPC/NPCController.cs +++ b/Assets/Scripts/NPC/NPCController.cs @@ -7,23 +7,28 @@ public class NPCController : MonoBehaviour { [SerializeField] private Waypoints waypoints; + private Collider agentCollider; private NavMeshAgent agent; private Animator animator; private Vector2 Velocity; private Vector2 SmoothDeltaPosition; private FieldOfView agentFOV; private Awareness agentAwareness; + private Dictionary agentBeliefs; public Animator Animator => animator; public NavMeshAgent Agent => agent; + public Collider AgentCollider => agentCollider; public Waypoints Waypoints => waypoints; public FieldOfView AgentFOV => agentFOV; public Awareness AgentAwareness => agentAwareness; + public Dictionary AgentBeliefs => agentBeliefs; void Awake() { agent = GetComponent(); animator = GetComponent(); + agentCollider = GetComponent(); agentFOV = GetComponentInChildren(); agentAwareness = GetComponentInChildren(); @@ -90,4 +95,37 @@ transform.position = Vector3.Lerp(animator.rootPosition, agent.nextPosition, smooth); } } + + public void AddAgentBelief(string key, object value) + { + //Checks for the key in dictionary + if (!agentBeliefs.ContainsKey(key)) + { + //Adds the key and value if it doesn't exists + agentBeliefs.Add(key, value); + } + + else + { + //Updates the value if key exists + agentBeliefs[key] = value; + } + } + + public object GetAgentBelief(string key) + { + //Checks for the key in dictionary + if (agentBeliefs.ContainsKey(key)) + { + //Returns the value if the key exists + return agentBeliefs[key]; + } + + else + { + //Returns null if the key doesn't exists + Debug.LogWarning($"The {key} doesn't exist in {nameof(agentBeliefs)}"); + return null; + } + } } diff --git a/Assets/Scripts/NPC/Sensors/Awareness.cs b/Assets/Scripts/NPC/Sensors/Awareness.cs index bfcffd8..a1d309d 100644 --- a/Assets/Scripts/NPC/Sensors/Awareness.cs +++ b/Assets/Scripts/NPC/Sensors/Awareness.cs @@ -7,7 +7,7 @@ [Header("Aware Sensor Settings: ")] [SerializeField] private float radius; [SerializeField] private float delay; // Delay between sensor runs - [SerializeField] private List targets; + [SerializeField] private List targets = new List(); [SerializeField] private LayerMask targetLayerMask; [SerializeField] private bool enable = true; [SerializeField] private string targetTag; @@ -16,16 +16,19 @@ public bool Enable { - get{ return enable; } + get { return enable; } - set - { - if (enable == false) + set + { + if (enable != value) // Check if the value is actually changing { - targets.Clear(); - } + enable = value; - enable = value; + if (!enable) + { + targets.Clear(); // Clear the list only when transitioning to disabled + } + } } } @@ -50,29 +53,22 @@ } } - private List GetTargets() + private void GetTargets() { - Vector2 vec = new Vector2(transform.position.x, transform.position.z); - Collider2D[] collider = Physics2D.OverlapCircleAll(vec, radius, targetLayerMask); - List targets = new List(); + targets.Clear(); + Collider[] colliders = Physics.OverlapSphere(transform.position, radius, targetLayerMask); - if (collider.Length != 0) + foreach (Collider c in colliders) { - foreach (Collider2D c in collider) + if (c.gameObject.CompareTag(targetTag)) { - if (c.gameObject.tag == targetTag) - { - targets.Add(c.gameObject); - } + targets.Add(c.gameObject); } - - return targets; } - else + if (targets.Count == 0) { - Debug.LogWarning($"There were no cover objects found in the current area!"); - return null; + Debug.LogWarning("There were no targets found in the current area!"); } }