namespacing and multiplayer lobby
This commit is contained in:
parent
1d4a6319e9
commit
3e1b55b036
268
Assets/Materials/Basic/TwoSidedCold.mat
Normal file
268
Assets/Materials/Basic/TwoSidedCold.mat
Normal file
@ -0,0 +1,268 @@
|
|||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!114 &-6018244971025479954
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 11
|
||||||
|
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: da692e001514ec24dbc4cca1949ff7e8, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
version: 12
|
||||||
|
hdPluginSubTargetMaterialVersions:
|
||||||
|
m_Keys: []
|
||||||
|
m_Values:
|
||||||
|
--- !u!21 &2100000
|
||||||
|
Material:
|
||||||
|
serializedVersion: 8
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_Name: TwoSidedCold
|
||||||
|
m_Shader: {fileID: 4800000, guid: 6e4ae4064600d784cac1e41a9e6f2e59, type: 3}
|
||||||
|
m_ValidKeywords:
|
||||||
|
- _DISABLE_SSR_TRANSPARENT
|
||||||
|
- _DOUBLESIDED_ON
|
||||||
|
- _NORMALMAP
|
||||||
|
- _NORMALMAP_TANGENT_SPACE
|
||||||
|
m_InvalidKeywords: []
|
||||||
|
m_LightmapFlags: 4
|
||||||
|
m_EnableInstancingVariants: 0
|
||||||
|
m_DoubleSidedGI: 1
|
||||||
|
m_CustomRenderQueue: 2225
|
||||||
|
stringTagMap: {}
|
||||||
|
disabledShaderPasses:
|
||||||
|
- TransparentDepthPrepass
|
||||||
|
- TransparentDepthPostpass
|
||||||
|
- TransparentBackface
|
||||||
|
- RayTracingPrepass
|
||||||
|
- MOTIONVECTORS
|
||||||
|
m_SavedProperties:
|
||||||
|
serializedVersion: 3
|
||||||
|
m_TexEnvs:
|
||||||
|
- _AnisotropyMap:
|
||||||
|
m_Texture: {fileID: 0}
|
||||||
|
m_Scale: {x: 1, y: 1}
|
||||||
|
m_Offset: {x: 0, y: 0}
|
||||||
|
- _BaseColorMap:
|
||||||
|
m_Texture: {fileID: 0}
|
||||||
|
m_Scale: {x: 1, y: 1}
|
||||||
|
m_Offset: {x: 0, y: 0}
|
||||||
|
- _BentNormalMap:
|
||||||
|
m_Texture: {fileID: 0}
|
||||||
|
m_Scale: {x: 1, y: 1}
|
||||||
|
m_Offset: {x: 0, y: 0}
|
||||||
|
- _BentNormalMapOS:
|
||||||
|
m_Texture: {fileID: 0}
|
||||||
|
m_Scale: {x: 1, y: 1}
|
||||||
|
m_Offset: {x: 0, y: 0}
|
||||||
|
- _CoatMaskMap:
|
||||||
|
m_Texture: {fileID: 0}
|
||||||
|
m_Scale: {x: 1, y: 1}
|
||||||
|
m_Offset: {x: 0, y: 0}
|
||||||
|
- _DetailMap:
|
||||||
|
m_Texture: {fileID: 0}
|
||||||
|
m_Scale: {x: 1, y: 1}
|
||||||
|
m_Offset: {x: 0, y: 0}
|
||||||
|
- _EmissiveColorMap:
|
||||||
|
m_Texture: {fileID: 0}
|
||||||
|
m_Scale: {x: 1, y: 1}
|
||||||
|
m_Offset: {x: 0, y: 0}
|
||||||
|
- _HeightMap:
|
||||||
|
m_Texture: {fileID: 0}
|
||||||
|
m_Scale: {x: 1, y: 1}
|
||||||
|
m_Offset: {x: 0, y: 0}
|
||||||
|
- _IridescenceMaskMap:
|
||||||
|
m_Texture: {fileID: 0}
|
||||||
|
m_Scale: {x: 1, y: 1}
|
||||||
|
m_Offset: {x: 0, y: 0}
|
||||||
|
- _IridescenceThicknessMap:
|
||||||
|
m_Texture: {fileID: 0}
|
||||||
|
m_Scale: {x: 1, y: 1}
|
||||||
|
m_Offset: {x: 0, y: 0}
|
||||||
|
- _MainTex:
|
||||||
|
m_Texture: {fileID: 0}
|
||||||
|
m_Scale: {x: 1, y: 1}
|
||||||
|
m_Offset: {x: 0, y: 0}
|
||||||
|
- _MaskMap:
|
||||||
|
m_Texture: {fileID: 0}
|
||||||
|
m_Scale: {x: 1, y: 1}
|
||||||
|
m_Offset: {x: 0, y: 0}
|
||||||
|
- _NormalMap:
|
||||||
|
m_Texture: {fileID: 2800000, guid: e5d7857b4e6de39418d36ee49f68c66c, type: 3}
|
||||||
|
m_Scale: {x: 1, y: 1}
|
||||||
|
m_Offset: {x: 0, y: 0}
|
||||||
|
- _NormalMapOS:
|
||||||
|
m_Texture: {fileID: 0}
|
||||||
|
m_Scale: {x: 1, y: 1}
|
||||||
|
m_Offset: {x: 0, y: 0}
|
||||||
|
- _SpecularColorMap:
|
||||||
|
m_Texture: {fileID: 0}
|
||||||
|
m_Scale: {x: 1, y: 1}
|
||||||
|
m_Offset: {x: 0, y: 0}
|
||||||
|
- _SubsurfaceMaskMap:
|
||||||
|
m_Texture: {fileID: 0}
|
||||||
|
m_Scale: {x: 1, y: 1}
|
||||||
|
m_Offset: {x: 0, y: 0}
|
||||||
|
- _TangentMap:
|
||||||
|
m_Texture: {fileID: 0}
|
||||||
|
m_Scale: {x: 1, y: 1}
|
||||||
|
m_Offset: {x: 0, y: 0}
|
||||||
|
- _TangentMapOS:
|
||||||
|
m_Texture: {fileID: 0}
|
||||||
|
m_Scale: {x: 1, y: 1}
|
||||||
|
m_Offset: {x: 0, y: 0}
|
||||||
|
- _ThicknessMap:
|
||||||
|
m_Texture: {fileID: 0}
|
||||||
|
m_Scale: {x: 1, y: 1}
|
||||||
|
m_Offset: {x: 0, y: 0}
|
||||||
|
- _TransmittanceColorMap:
|
||||||
|
m_Texture: {fileID: 0}
|
||||||
|
m_Scale: {x: 1, y: 1}
|
||||||
|
m_Offset: {x: 0, y: 0}
|
||||||
|
- unity_Lightmaps:
|
||||||
|
m_Texture: {fileID: 0}
|
||||||
|
m_Scale: {x: 1, y: 1}
|
||||||
|
m_Offset: {x: 0, y: 0}
|
||||||
|
- unity_LightmapsInd:
|
||||||
|
m_Texture: {fileID: 0}
|
||||||
|
m_Scale: {x: 1, y: 1}
|
||||||
|
m_Offset: {x: 0, y: 0}
|
||||||
|
- unity_ShadowMasks:
|
||||||
|
m_Texture: {fileID: 0}
|
||||||
|
m_Scale: {x: 1, y: 1}
|
||||||
|
m_Offset: {x: 0, y: 0}
|
||||||
|
m_Ints: []
|
||||||
|
m_Floats:
|
||||||
|
- _AORemapMax: 1
|
||||||
|
- _AORemapMin: 0
|
||||||
|
- _ATDistance: 1
|
||||||
|
- _AddPrecomputedVelocity: 0
|
||||||
|
- _AlbedoAffectEmissive: 0
|
||||||
|
- _AlphaCutoff: 0.5
|
||||||
|
- _AlphaCutoffEnable: 0
|
||||||
|
- _AlphaCutoffPostpass: 0.5
|
||||||
|
- _AlphaCutoffPrepass: 0.5
|
||||||
|
- _AlphaCutoffShadow: 0.5
|
||||||
|
- _AlphaDstBlend: 0
|
||||||
|
- _AlphaSrcBlend: 1
|
||||||
|
- _AlphaToMask: 0
|
||||||
|
- _AlphaToMaskInspectorValue: 0
|
||||||
|
- _Anisotropy: 0
|
||||||
|
- _BlendMode: 0
|
||||||
|
- _CoatMask: 0
|
||||||
|
- _CullMode: 0
|
||||||
|
- _CullModeForward: 0
|
||||||
|
- _Cutoff: 0.5
|
||||||
|
- _DepthOffsetEnable: 0
|
||||||
|
- _DetailAlbedoScale: 1
|
||||||
|
- _DetailNormalScale: 1
|
||||||
|
- _DetailSmoothnessScale: 1
|
||||||
|
- _DiffusionProfile: 0
|
||||||
|
- _DiffusionProfileHash: 0
|
||||||
|
- _DisplacementLockObjectScale: 1
|
||||||
|
- _DisplacementLockTilingScale: 1
|
||||||
|
- _DisplacementMode: 0
|
||||||
|
- _DoubleSidedEnable: 1
|
||||||
|
- _DoubleSidedGIMode: 0
|
||||||
|
- _DoubleSidedNormalMode: 1
|
||||||
|
- _DstBlend: 0
|
||||||
|
- _EmissiveColorMode: 1
|
||||||
|
- _EmissiveExposureWeight: 1
|
||||||
|
- _EmissiveIntensity: 1
|
||||||
|
- _EmissiveIntensityUnit: 0
|
||||||
|
- _EnableBlendModePreserveSpecularLighting: 1
|
||||||
|
- _EnableFogOnTransparent: 1
|
||||||
|
- _EnableGeometricSpecularAA: 0
|
||||||
|
- _EnergyConservingSpecularColor: 1
|
||||||
|
- _HeightAmplitude: 0.02
|
||||||
|
- _HeightCenter: 0.5
|
||||||
|
- _HeightMapParametrization: 0
|
||||||
|
- _HeightMax: 1
|
||||||
|
- _HeightMin: -1
|
||||||
|
- _HeightOffset: 0
|
||||||
|
- _HeightPoMAmplitude: 2
|
||||||
|
- _HeightTessAmplitude: 2
|
||||||
|
- _HeightTessCenter: 0.5
|
||||||
|
- _InvTilingScale: 1
|
||||||
|
- _Ior: 1.5
|
||||||
|
- _IridescenceMask: 1
|
||||||
|
- _IridescenceThickness: 1
|
||||||
|
- _LinkDetailsWithBase: 1
|
||||||
|
- _MaterialID: 1
|
||||||
|
- _Metallic: 0.634
|
||||||
|
- _MetallicRemapMax: 1
|
||||||
|
- _MetallicRemapMin: 0
|
||||||
|
- _NormalMapSpace: 0
|
||||||
|
- _NormalScale: 0.69
|
||||||
|
- _OpaqueCullMode: 2
|
||||||
|
- _PPDLodThreshold: 5
|
||||||
|
- _PPDMaxSamples: 15
|
||||||
|
- _PPDMinSamples: 5
|
||||||
|
- _PPDPrimitiveLength: 1
|
||||||
|
- _PPDPrimitiveWidth: 1
|
||||||
|
- _RayTracing: 0
|
||||||
|
- _ReceivesSSR: 1
|
||||||
|
- _ReceivesSSRTransparent: 0
|
||||||
|
- _RefractionModel: 0
|
||||||
|
- _Smoothness: 0.707
|
||||||
|
- _SmoothnessRemapMax: 1
|
||||||
|
- _SmoothnessRemapMin: 0
|
||||||
|
- _SpecularAAScreenSpaceVariance: 0.1
|
||||||
|
- _SpecularAAThreshold: 0.2
|
||||||
|
- _SpecularOcclusionMode: 1
|
||||||
|
- _SrcBlend: 1
|
||||||
|
- _StencilRef: 0
|
||||||
|
- _StencilRefDepth: 8
|
||||||
|
- _StencilRefGBuffer: 10
|
||||||
|
- _StencilRefMV: 40
|
||||||
|
- _StencilWriteMask: 6
|
||||||
|
- _StencilWriteMaskDepth: 8
|
||||||
|
- _StencilWriteMaskGBuffer: 14
|
||||||
|
- _StencilWriteMaskMV: 40
|
||||||
|
- _SubsurfaceMask: 1
|
||||||
|
- _SupportDecals: 1
|
||||||
|
- _SurfaceType: 0
|
||||||
|
- _TexWorldScale: 1
|
||||||
|
- _TexWorldScaleEmissive: 1
|
||||||
|
- _Thickness: 1
|
||||||
|
- _TransmissionEnable: 1
|
||||||
|
- _TransparentBackfaceEnable: 0
|
||||||
|
- _TransparentCullMode: 2
|
||||||
|
- _TransparentDepthPostpassEnable: 0
|
||||||
|
- _TransparentDepthPrepassEnable: 0
|
||||||
|
- _TransparentSortPriority: 0
|
||||||
|
- _TransparentWritingMotionVec: 0
|
||||||
|
- _TransparentZWrite: 0
|
||||||
|
- _UVBase: 0
|
||||||
|
- _UVDetail: 0
|
||||||
|
- _UVEmissive: 0
|
||||||
|
- _UseEmissiveIntensity: 0
|
||||||
|
- _UseShadowThreshold: 0
|
||||||
|
- _ZTestDepthEqualForOpaque: 3
|
||||||
|
- _ZTestGBuffer: 4
|
||||||
|
- _ZTestTransparent: 4
|
||||||
|
- _ZWrite: 1
|
||||||
|
m_Colors:
|
||||||
|
- _BaseColor: {r: 0.71132076, g: 0.8888575, b: 1, a: 1}
|
||||||
|
- _BaseColorMap_MipInfo: {r: 0, g: 0, b: 0, a: 0}
|
||||||
|
- _Color: {r: 0.71132076, g: 0.8888575, b: 1, a: 1}
|
||||||
|
- _DiffusionProfileAsset: {r: 0, g: 0, b: 0, a: 0}
|
||||||
|
- _DoubleSidedConstants: {r: 1, g: 1, b: -1, a: 0}
|
||||||
|
- _EmissionColor: {r: 1, g: 1, b: 1, a: 1}
|
||||||
|
- _EmissiveColor: {r: 0, g: 0, b: 0, a: 1}
|
||||||
|
- _EmissiveColorLDR: {r: 0, g: 0, b: 0, a: 1}
|
||||||
|
- _InvPrimScale: {r: 1, g: 1, b: 0, a: 0}
|
||||||
|
- _IridescenceThicknessRemap: {r: 0, g: 1, b: 0, a: 0}
|
||||||
|
- _SpecularColor: {r: 1, g: 1, b: 1, a: 1}
|
||||||
|
- _ThicknessRemap: {r: 0, g: 1, b: 0, a: 0}
|
||||||
|
- _TransmittanceColor: {r: 1, g: 1, b: 1, a: 1}
|
||||||
|
- _UVDetailsMappingMask: {r: 1, g: 0, b: 0, a: 0}
|
||||||
|
- _UVMappingMask: {r: 1, g: 0, b: 0, a: 0}
|
||||||
|
- _UVMappingMaskEmissive: {r: 1, g: 0, b: 0, a: 0}
|
||||||
|
m_BuildTextureStacks: []
|
8
Assets/Materials/Basic/TwoSidedCold.mat.meta
Normal file
8
Assets/Materials/Basic/TwoSidedCold.mat.meta
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 6510f454e38068c4392825f2f7689ef1
|
||||||
|
NativeFormatImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
mainObjectFileID: 2100000
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
@ -69,9 +69,9 @@ ModelImporter:
|
|||||||
useFileScale: 1
|
useFileScale: 1
|
||||||
tangentSpace:
|
tangentSpace:
|
||||||
normalSmoothAngle: 60
|
normalSmoothAngle: 60
|
||||||
normalImportMode: 0
|
normalImportMode: 1
|
||||||
tangentImportMode: 3
|
tangentImportMode: 3
|
||||||
normalCalculationMode: 4
|
normalCalculationMode: 3
|
||||||
legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0
|
legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0
|
||||||
blendShapeNormalImportMode: 1
|
blendShapeNormalImportMode: 1
|
||||||
normalSmoothingSource: 0
|
normalSmoothingSource: 0
|
||||||
|
BIN
Assets/Models/WorldEnviornment/TwoWindowWalls.fbx
(Stored with Git LFS)
Normal file
BIN
Assets/Models/WorldEnviornment/TwoWindowWalls.fbx
(Stored with Git LFS)
Normal file
Binary file not shown.
106
Assets/Models/WorldEnviornment/TwoWindowWalls.fbx.meta
Normal file
106
Assets/Models/WorldEnviornment/TwoWindowWalls.fbx.meta
Normal file
@ -0,0 +1,106 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 5554e2a3b56d46d46a640a8d60d3897b
|
||||||
|
ModelImporter:
|
||||||
|
serializedVersion: 21300
|
||||||
|
internalIDToNameTable: []
|
||||||
|
externalObjects: {}
|
||||||
|
materials:
|
||||||
|
materialImportMode: 2
|
||||||
|
materialName: 0
|
||||||
|
materialSearch: 1
|
||||||
|
materialLocation: 1
|
||||||
|
animations:
|
||||||
|
legacyGenerateAnimations: 4
|
||||||
|
bakeSimulation: 0
|
||||||
|
resampleCurves: 1
|
||||||
|
optimizeGameObjects: 0
|
||||||
|
removeConstantScaleCurves: 1
|
||||||
|
motionNodeName:
|
||||||
|
rigImportErrors:
|
||||||
|
rigImportWarnings:
|
||||||
|
animationImportErrors:
|
||||||
|
animationImportWarnings:
|
||||||
|
animationRetargetingWarnings:
|
||||||
|
animationDoRetargetingWarnings: 0
|
||||||
|
importAnimatedCustomProperties: 0
|
||||||
|
importConstraints: 0
|
||||||
|
animationCompression: 1
|
||||||
|
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
|
||||||
|
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
|
||||||
|
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
|
||||||
|
remapMaterialsIfMaterialImportModeIsNone: 0
|
||||||
|
additionalBone: 0
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
@ -63,7 +63,7 @@ MeshRenderer:
|
|||||||
m_RendererPriority: 0
|
m_RendererPriority: 0
|
||||||
m_Materials:
|
m_Materials:
|
||||||
- {fileID: 2100000, guid: 6106523363fe51244a25535b75eb736d, type: 2}
|
- {fileID: 2100000, guid: 6106523363fe51244a25535b75eb736d, type: 2}
|
||||||
- {fileID: -6922793697723135513, guid: c038a760050b2c644a3947a794190aac, type: 3}
|
- {fileID: 2100000, guid: 6510f454e38068c4392825f2f7689ef1, type: 2}
|
||||||
- {fileID: 2100000, guid: 6106523363fe51244a25535b75eb736d, type: 2}
|
- {fileID: 2100000, guid: 6106523363fe51244a25535b75eb736d, type: 2}
|
||||||
- {fileID: 2100000, guid: 4f7af3243dccb2443a3b363fb4b73602, type: 2}
|
- {fileID: 2100000, guid: 4f7af3243dccb2443a3b363fb4b73602, type: 2}
|
||||||
- {fileID: -6629797300637803691, guid: c038a760050b2c644a3947a794190aac, type: 3}
|
- {fileID: -6629797300637803691, guid: c038a760050b2c644a3947a794190aac, type: 3}
|
||||||
|
@ -12,7 +12,7 @@ MonoBehaviour:
|
|||||||
m_Script: {fileID: 11500000, guid: d877ec3e844f2ca46830012e8e79319b, type: 3}
|
m_Script: {fileID: 11500000, guid: d877ec3e844f2ca46830012e8e79319b, type: 3}
|
||||||
m_Name: PhysicallyBasedSky
|
m_Name: PhysicallyBasedSky
|
||||||
m_EditorClassIdentifier:
|
m_EditorClassIdentifier:
|
||||||
active: 0
|
active: 1
|
||||||
rotation:
|
rotation:
|
||||||
m_OverrideState: 0
|
m_OverrideState: 0
|
||||||
m_Value: 0
|
m_Value: 0
|
||||||
@ -207,7 +207,7 @@ MonoBehaviour:
|
|||||||
active: 1
|
active: 1
|
||||||
skyType:
|
skyType:
|
||||||
m_OverrideState: 1
|
m_OverrideState: 1
|
||||||
m_Value: 1
|
m_Value: 4
|
||||||
cloudType:
|
cloudType:
|
||||||
m_OverrideState: 1
|
m_OverrideState: 1
|
||||||
m_Value: 0
|
m_Value: 0
|
||||||
@ -342,7 +342,7 @@ MonoBehaviour:
|
|||||||
m_Script: {fileID: 11500000, guid: 59b6606ef2548734bb6d11b9d160bc7e, type: 3}
|
m_Script: {fileID: 11500000, guid: 59b6606ef2548734bb6d11b9d160bc7e, type: 3}
|
||||||
m_Name: HDRISky
|
m_Name: HDRISky
|
||||||
m_EditorClassIdentifier:
|
m_EditorClassIdentifier:
|
||||||
active: 1
|
active: 0
|
||||||
rotation:
|
rotation:
|
||||||
m_OverrideState: 0
|
m_OverrideState: 0
|
||||||
m_Value: 0
|
m_Value: 0
|
||||||
|
@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 4d8206c39423b0f4888ba27b45e50c5d
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,7 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: e0543d9968729644ba772e12b0f7f922
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
@ -0,0 +1,226 @@
|
|||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!114 &-5499605880065426175
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 3
|
||||||
|
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: 953beb541740ddc499d005ee80c9ff29, type: 3}
|
||||||
|
m_Name: Fog
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
active: 1
|
||||||
|
quality:
|
||||||
|
m_OverrideState: 0
|
||||||
|
m_Value: 1
|
||||||
|
enabled:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 1
|
||||||
|
colorMode:
|
||||||
|
m_OverrideState: 0
|
||||||
|
m_Value: 1
|
||||||
|
color:
|
||||||
|
m_OverrideState: 0
|
||||||
|
m_Value: {r: 0.5, g: 0.5, b: 0.5, a: 1}
|
||||||
|
tint:
|
||||||
|
m_OverrideState: 0
|
||||||
|
m_Value: {r: 1, g: 1, b: 1, a: 1}
|
||||||
|
maxFogDistance:
|
||||||
|
m_OverrideState: 0
|
||||||
|
m_Value: 5000
|
||||||
|
mipFogMaxMip:
|
||||||
|
m_OverrideState: 0
|
||||||
|
m_Value: 0.5
|
||||||
|
mipFogNear:
|
||||||
|
m_OverrideState: 0
|
||||||
|
m_Value: 0
|
||||||
|
mipFogFar:
|
||||||
|
m_OverrideState: 0
|
||||||
|
m_Value: 1000
|
||||||
|
baseHeight:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: -35.7
|
||||||
|
maximumHeight:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 168.9
|
||||||
|
meanFreePath:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 21.8
|
||||||
|
enableVolumetricFog:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 1
|
||||||
|
albedo:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: {r: 0.8011926, g: 0.9716981, b: 0.9681743, a: 1}
|
||||||
|
globalLightProbeDimmer:
|
||||||
|
m_OverrideState: 0
|
||||||
|
m_Value: 1
|
||||||
|
depthExtent:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 21.3
|
||||||
|
denoisingMode:
|
||||||
|
m_OverrideState: 0
|
||||||
|
m_Value: 2
|
||||||
|
anisotropy:
|
||||||
|
m_OverrideState: 0
|
||||||
|
m_Value: 0
|
||||||
|
sliceDistributionUniformity:
|
||||||
|
m_OverrideState: 0
|
||||||
|
m_Value: 0.75
|
||||||
|
m_FogControlMode:
|
||||||
|
m_OverrideState: 0
|
||||||
|
m_Value: 0
|
||||||
|
screenResolutionPercentage:
|
||||||
|
m_OverrideState: 0
|
||||||
|
m_Value: 12.5
|
||||||
|
volumeSliceCount:
|
||||||
|
m_OverrideState: 0
|
||||||
|
m_Value: 64
|
||||||
|
m_VolumetricFogBudget:
|
||||||
|
m_OverrideState: 0
|
||||||
|
m_Value: 0.33
|
||||||
|
m_ResolutionDepthRatio:
|
||||||
|
m_OverrideState: 0
|
||||||
|
m_Value: 0.666
|
||||||
|
directionalLightsOnly:
|
||||||
|
m_OverrideState: 0
|
||||||
|
m_Value: 0
|
||||||
|
--- !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: d7fd9488000d3734a9e00ee676215985, type: 3}
|
||||||
|
m_Name: VolumeOne Profile
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
components:
|
||||||
|
- {fileID: 3832449337003281083}
|
||||||
|
- {fileID: -5499605880065426175}
|
||||||
|
--- !u!114 &3832449337003281083
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 3
|
||||||
|
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: 59b6606ef2548734bb6d11b9d160bc7e, type: 3}
|
||||||
|
m_Name: HDRISky
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
active: 1
|
||||||
|
rotation:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 0
|
||||||
|
skyIntensityMode:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 0
|
||||||
|
exposure:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 0.36
|
||||||
|
multiplier:
|
||||||
|
m_OverrideState: 0
|
||||||
|
m_Value: 1
|
||||||
|
upperHemisphereLuxValue:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 0.0191773
|
||||||
|
upperHemisphereLuxColor:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: {x: 0.5, y: 0.43328354, z: 0.44211176}
|
||||||
|
desiredLuxValue:
|
||||||
|
m_OverrideState: 0
|
||||||
|
m_Value: 20000
|
||||||
|
updateMode:
|
||||||
|
m_OverrideState: 0
|
||||||
|
m_Value: 0
|
||||||
|
updatePeriod:
|
||||||
|
m_OverrideState: 0
|
||||||
|
m_Value: 0
|
||||||
|
includeSunInBaking:
|
||||||
|
m_OverrideState: 0
|
||||||
|
m_Value: 0
|
||||||
|
hdriSky:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: {fileID: 8900000, guid: 1ec218402610c07499cad676b00bd8d7, type: 3}
|
||||||
|
distortionMode:
|
||||||
|
m_OverrideState: 0
|
||||||
|
m_Value: 0
|
||||||
|
flowmap:
|
||||||
|
m_OverrideState: 0
|
||||||
|
m_Value: {fileID: 0}
|
||||||
|
upperHemisphereOnly:
|
||||||
|
m_OverrideState: 0
|
||||||
|
m_Value: 1
|
||||||
|
scrollOrientation:
|
||||||
|
m_OverrideState: 0
|
||||||
|
m_Value:
|
||||||
|
mode: 1
|
||||||
|
customValue: 0
|
||||||
|
additiveValue: 0
|
||||||
|
multiplyValue: 1
|
||||||
|
scrollSpeed:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value:
|
||||||
|
mode: 1
|
||||||
|
customValue: 100
|
||||||
|
additiveValue: 0
|
||||||
|
multiplyValue: 1
|
||||||
|
enableBackplate:
|
||||||
|
m_OverrideState: 0
|
||||||
|
m_Value: 0
|
||||||
|
backplateType:
|
||||||
|
m_OverrideState: 0
|
||||||
|
m_Value: 0
|
||||||
|
groundLevel:
|
||||||
|
m_OverrideState: 0
|
||||||
|
m_Value: 0
|
||||||
|
scale:
|
||||||
|
m_OverrideState: 0
|
||||||
|
m_Value: {x: 32, y: 32}
|
||||||
|
projectionDistance:
|
||||||
|
m_OverrideState: 0
|
||||||
|
m_Value: 16
|
||||||
|
plateRotation:
|
||||||
|
m_OverrideState: 0
|
||||||
|
m_Value: 0
|
||||||
|
plateTexRotation:
|
||||||
|
m_OverrideState: 0
|
||||||
|
m_Value: 0
|
||||||
|
plateTexOffset:
|
||||||
|
m_OverrideState: 0
|
||||||
|
m_Value: {x: 0, y: 0}
|
||||||
|
blendAmount:
|
||||||
|
m_OverrideState: 0
|
||||||
|
m_Value: 0
|
||||||
|
shadowTint:
|
||||||
|
m_OverrideState: 0
|
||||||
|
m_Value: {r: 0.5, g: 0.5, b: 0.5, a: 1}
|
||||||
|
pointLightShadow:
|
||||||
|
m_OverrideState: 0
|
||||||
|
m_Value: 0
|
||||||
|
dirLightShadow:
|
||||||
|
m_OverrideState: 0
|
||||||
|
m_Value: 0
|
||||||
|
rectLightShadow:
|
||||||
|
m_OverrideState: 0
|
||||||
|
m_Value: 0
|
||||||
|
m_SkyVersion: 1
|
||||||
|
enableDistortion:
|
||||||
|
m_OverrideState: 0
|
||||||
|
m_Value: 0
|
||||||
|
procedural:
|
||||||
|
m_OverrideState: 0
|
||||||
|
m_Value: 1
|
||||||
|
scrollDirection:
|
||||||
|
m_OverrideState: 0
|
||||||
|
m_Value: 0
|
||||||
|
m_ObsoleteScrollSpeed:
|
||||||
|
m_OverrideState: 0
|
||||||
|
m_Value: 1
|
@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: d85510b2e610444489e9f26418e66f55
|
||||||
|
NativeFormatImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
mainObjectFileID: 11400000
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
@ -19,7 +19,7 @@ public class DGemItem : MonoBehaviour
|
|||||||
{
|
{
|
||||||
if (collision.gameObject.CompareTag("Player"))
|
if (collision.gameObject.CompareTag("Player"))
|
||||||
{
|
{
|
||||||
collision.gameObject.GetComponent<PlayerMovementController>().SetSpeed(decSpeed);
|
collision.gameObject.GetComponent<Player.PlayerMovementController>().SetSpeed(decSpeed);
|
||||||
Destroy(gameObject);
|
Destroy(gameObject);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
using System;
|
using System;
|
||||||
using EnemyAI;
|
|
||||||
/*
|
/*
|
||||||
# Enemy System
|
# Enemy System
|
||||||
## States
|
## States
|
||||||
@ -32,7 +32,7 @@ using EnemyAI;
|
|||||||
*/
|
*/
|
||||||
class AIStateMachine : MonoBehaviour{
|
class AIStateMachine : MonoBehaviour{
|
||||||
[SerializeField]
|
[SerializeField]
|
||||||
private EnemyState state;
|
private EnemyAI.EnemyState state;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -2,130 +2,133 @@ using System.Collections;
|
|||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
|
|
||||||
public class SkinlessMonsterAnimator : MonoBehaviour
|
namespace Enemy {
|
||||||
{
|
public class SkinlessMonsterAnimator : MonoBehaviour
|
||||||
[SerializeField] private Animator animator;
|
|
||||||
|
|
||||||
[SerializeField] [Tooltip("This is the object with the skin dissolve material")]
|
|
||||||
private GameObject modelObject;
|
|
||||||
|
|
||||||
[SerializeField] private List<GameObject> objectsThatFallOnDeath = new();
|
|
||||||
|
|
||||||
[SerializeField] private float deathSpeed = 5f;
|
|
||||||
|
|
||||||
[SerializeField] private float fastDeathduration = 1f;
|
|
||||||
|
|
||||||
[SerializeField] private float deathDuration = 5f;
|
|
||||||
|
|
||||||
private float curDeathSpeed = 5f;
|
|
||||||
|
|
||||||
private Material dissolveMaterial;
|
|
||||||
private bool isAlive = true;
|
|
||||||
|
|
||||||
private float speed;
|
|
||||||
public bool IsRunning { get; private set; }
|
|
||||||
|
|
||||||
|
|
||||||
// Start is called before the first frame update
|
|
||||||
private void Start()
|
|
||||||
{
|
{
|
||||||
dissolveMaterial = modelObject.GetComponent<SkinnedMeshRenderer>().materials[0];
|
[SerializeField] private Animator animator;
|
||||||
curDeathSpeed = deathSpeed;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Update is called once per frame
|
[SerializeField]
|
||||||
private void Update()
|
[Tooltip("This is the object with the skin dissolve material")]
|
||||||
{
|
private GameObject modelObject;
|
||||||
if (isAlive)
|
|
||||||
|
[SerializeField] private List<GameObject> objectsThatFallOnDeath = new();
|
||||||
|
|
||||||
|
[SerializeField] private float deathSpeed = 5f;
|
||||||
|
|
||||||
|
[SerializeField] private float fastDeathduration = 1f;
|
||||||
|
|
||||||
|
[SerializeField] private float deathDuration = 5f;
|
||||||
|
|
||||||
|
private float curDeathSpeed = 5f;
|
||||||
|
|
||||||
|
private Material dissolveMaterial;
|
||||||
|
private bool isAlive = true;
|
||||||
|
|
||||||
|
private float speed;
|
||||||
|
public bool IsRunning { get; private set; }
|
||||||
|
|
||||||
|
|
||||||
|
// Start is called before the first frame update
|
||||||
|
private void Start()
|
||||||
{
|
{
|
||||||
animator.SetFloat("Speed", speed);
|
dissolveMaterial = modelObject.GetComponent<SkinnedMeshRenderer>().materials[0];
|
||||||
}
|
curDeathSpeed = deathSpeed;
|
||||||
else
|
|
||||||
{
|
|
||||||
var quantity = dissolveMaterial.GetFloat("_DissolveQuantity");
|
|
||||||
quantity = Mathf.Lerp(quantity, -2, Time.deltaTime * curDeathSpeed);
|
|
||||||
dissolveMaterial.SetFloat("_DissolveQuantity", quantity);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public void StartMoving()
|
|
||||||
{
|
|
||||||
if (isAlive)
|
|
||||||
{
|
|
||||||
IsRunning = true;
|
|
||||||
speed = 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public void StopMoving()
|
|
||||||
{
|
|
||||||
if (isAlive)
|
|
||||||
{
|
|
||||||
speed = 0;
|
|
||||||
IsRunning = false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public void Attack()
|
|
||||||
{
|
|
||||||
if (isAlive) animator.SetTrigger("Attack");
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 0,1,2,3
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="attackType"></param>
|
|
||||||
public void SetAttackType(int attackType)
|
|
||||||
{
|
|
||||||
animator.SetInteger("AttackIndex", attackType);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void InLight()
|
|
||||||
{
|
|
||||||
if (isAlive)
|
|
||||||
animator.SetBool("InLight", true);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void NotInLight()
|
|
||||||
{
|
|
||||||
if (isAlive)
|
|
||||||
animator.SetBool("InLight", false);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void AttackScream()
|
|
||||||
{
|
|
||||||
if (isAlive)
|
|
||||||
animator.SetTrigger("AttackScream");
|
|
||||||
}
|
|
||||||
|
|
||||||
public void Kill(bool fast = false)
|
|
||||||
{
|
|
||||||
//animator.speed = 0;
|
|
||||||
InLight();
|
|
||||||
|
|
||||||
|
|
||||||
isAlive = false;
|
|
||||||
foreach (var obj in objectsThatFallOnDeath)
|
|
||||||
{
|
|
||||||
obj.AddComponent<Rigidbody>();
|
|
||||||
if (obj.GetComponent<Collider>() != null) obj.GetComponent<Collider>().enabled = false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
var dur = deathDuration;
|
// Update is called once per frame
|
||||||
if (fast)
|
private void Update()
|
||||||
{
|
{
|
||||||
dur = fastDeathduration;
|
if (isAlive)
|
||||||
curDeathSpeed = deathSpeed * (deathDuration / fastDeathduration);
|
{
|
||||||
|
animator.SetFloat("Speed", speed);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
var quantity = dissolveMaterial.GetFloat("_DissolveQuantity");
|
||||||
|
quantity = Mathf.Lerp(quantity, -2, Time.deltaTime * curDeathSpeed);
|
||||||
|
dissolveMaterial.SetFloat("_DissolveQuantity", quantity);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
StartCoroutine(destroyAfterSeconds(dur));
|
public void StartMoving()
|
||||||
}
|
{
|
||||||
|
if (isAlive)
|
||||||
|
{
|
||||||
|
IsRunning = true;
|
||||||
|
speed = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void StopMoving()
|
||||||
|
{
|
||||||
|
if (isAlive)
|
||||||
|
{
|
||||||
|
speed = 0;
|
||||||
|
IsRunning = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Attack()
|
||||||
|
{
|
||||||
|
if (isAlive) animator.SetTrigger("Attack");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
private IEnumerator destroyAfterSeconds(float duration)
|
/// <summary>
|
||||||
{
|
/// 0,1,2,3
|
||||||
yield return new WaitForSeconds(duration);
|
/// </summary>
|
||||||
Destroy(gameObject);
|
/// <param name="attackType"></param>
|
||||||
|
public void SetAttackType(int attackType)
|
||||||
|
{
|
||||||
|
animator.SetInteger("AttackIndex", attackType);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void InLight()
|
||||||
|
{
|
||||||
|
if (isAlive)
|
||||||
|
animator.SetBool("InLight", true);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void NotInLight()
|
||||||
|
{
|
||||||
|
if (isAlive)
|
||||||
|
animator.SetBool("InLight", false);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void AttackScream()
|
||||||
|
{
|
||||||
|
if (isAlive)
|
||||||
|
animator.SetTrigger("AttackScream");
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Kill(bool fast = false)
|
||||||
|
{
|
||||||
|
//animator.speed = 0;
|
||||||
|
InLight();
|
||||||
|
|
||||||
|
|
||||||
|
isAlive = false;
|
||||||
|
foreach (var obj in objectsThatFallOnDeath)
|
||||||
|
{
|
||||||
|
obj.AddComponent<Rigidbody>();
|
||||||
|
if (obj.GetComponent<Collider>() != null) obj.GetComponent<Collider>().enabled = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
var dur = deathDuration;
|
||||||
|
if (fast)
|
||||||
|
{
|
||||||
|
dur = fastDeathduration;
|
||||||
|
curDeathSpeed = deathSpeed * (deathDuration / fastDeathduration);
|
||||||
|
}
|
||||||
|
|
||||||
|
StartCoroutine(destroyAfterSeconds(dur));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private IEnumerator destroyAfterSeconds(float duration)
|
||||||
|
{
|
||||||
|
yield return new WaitForSeconds(duration);
|
||||||
|
Destroy(gameObject);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -5,7 +5,7 @@ public class SkinlessMonsterComponent : MonoBehaviour
|
|||||||
{
|
{
|
||||||
[SerializeField] private NavMeshAgent agent;
|
[SerializeField] private NavMeshAgent agent;
|
||||||
|
|
||||||
[SerializeField] private SkinlessMonsterAnimator animator;
|
[SerializeField] private Enemy.SkinlessMonsterAnimator animator;
|
||||||
|
|
||||||
[SerializeField] private float atTargetDistance = 2;
|
[SerializeField] private float atTargetDistance = 2;
|
||||||
|
|
||||||
@ -32,12 +32,12 @@ public class SkinlessMonsterComponent : MonoBehaviour
|
|||||||
|
|
||||||
private bool isAlive = true;
|
private bool isAlive = true;
|
||||||
|
|
||||||
private InGameManager manager;
|
private Game.InGameManager manager;
|
||||||
|
|
||||||
|
|
||||||
private Vector3 oppositeVector;
|
private Vector3 oppositeVector;
|
||||||
|
|
||||||
private PlayerComponent player;
|
private Player.PlayerComponent player;
|
||||||
private TargetInformation target;
|
private TargetInformation target;
|
||||||
|
|
||||||
private GameObject targetObject;
|
private GameObject targetObject;
|
||||||
@ -46,12 +46,12 @@ public class SkinlessMonsterComponent : MonoBehaviour
|
|||||||
private void Awake()
|
private void Awake()
|
||||||
{
|
{
|
||||||
//Find active player rn.
|
//Find active player rn.
|
||||||
var players = FindObjectsOfType<PlayerComponent>();
|
var players = FindObjectsOfType<Player.PlayerComponent>();
|
||||||
foreach (var p in players)
|
foreach (var p in players)
|
||||||
if (p.isActiveAndEnabled)
|
if (p.isActiveAndEnabled)
|
||||||
player = p;
|
player = p;
|
||||||
|
|
||||||
manager = FindObjectOfType<InGameManager>();
|
manager = FindObjectOfType<Game.InGameManager>();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void Start()
|
private void Start()
|
||||||
@ -61,7 +61,7 @@ public class SkinlessMonsterComponent : MonoBehaviour
|
|||||||
targetObject = new GameObject();
|
targetObject = new GameObject();
|
||||||
targetObject.name = "Enemy Target";
|
targetObject.name = "Enemy Target";
|
||||||
|
|
||||||
if (player == null) player = FindObjectOfType<PlayerComponent>();
|
if (player == null) player = FindObjectOfType<Player.PlayerComponent>();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void Update()
|
private void Update()
|
||||||
@ -236,10 +236,10 @@ public class SkinlessMonsterComponent : MonoBehaviour
|
|||||||
{
|
{
|
||||||
var hitObject = hit.transform.gameObject;
|
var hitObject = hit.transform.gameObject;
|
||||||
|
|
||||||
if (hitObject.GetComponent<PlayerComponent>() != null)
|
if (hitObject.GetComponent<Player.PlayerComponent>() != null)
|
||||||
//hit player
|
//hit player
|
||||||
return angleToPosition <= visibilityConeLimit || !withAngle;
|
return angleToPosition <= visibilityConeLimit || !withAngle;
|
||||||
if (hitObject.GetComponentInParent<PlayerComponent>() != null)
|
if (hitObject.GetComponentInParent<Player.PlayerComponent>() != null)
|
||||||
//also hit player
|
//also hit player
|
||||||
return angleToPosition <= visibilityConeLimit || !withAngle;
|
return angleToPosition <= visibilityConeLimit || !withAngle;
|
||||||
}
|
}
|
||||||
|
@ -1,22 +1,25 @@
|
|||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
|
|
||||||
public class DummyComponent : MonoBehaviour
|
namespace Enemy
|
||||||
{
|
{
|
||||||
private Animator anim;
|
public class DummyComponent : MonoBehaviour
|
||||||
|
|
||||||
// Start is called before the first frame update
|
|
||||||
private void Start()
|
|
||||||
{
|
{
|
||||||
anim = GetComponentInParent<Animator>();
|
private Animator anim;
|
||||||
}
|
|
||||||
|
|
||||||
// Update is called once per frame
|
// Start is called before the first frame update
|
||||||
private void Update()
|
private void Start()
|
||||||
{
|
{
|
||||||
}
|
anim = GetComponentInParent<Animator>();
|
||||||
|
}
|
||||||
|
|
||||||
private void OnCollisionEnter(Collision collision)
|
// Update is called once per frame
|
||||||
{
|
private void Update()
|
||||||
if (collision.gameObject.GetComponent<BulletComponent>() != null) anim.Play("DummyFall");
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnCollisionEnter(Collision collision)
|
||||||
|
{
|
||||||
|
if (collision.gameObject.GetComponent<BulletComponent>() != null) anim.Play("DummyFall");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -1,22 +1,24 @@
|
|||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
|
|
||||||
public class MonsterComponent : MonoBehaviour
|
namespace Enemy {
|
||||||
{
|
public class MonsterComponent : MonoBehaviour
|
||||||
[SerializeField] private float attackDamage = 1f;
|
|
||||||
|
|
||||||
[SerializeField] private bool shakeCameraOnHit = true;
|
|
||||||
|
|
||||||
public float AttackDamage => attackDamage;
|
|
||||||
|
|
||||||
public bool ShakeCameraOnHit => shakeCameraOnHit;
|
|
||||||
|
|
||||||
// Start is called before the first frame update
|
|
||||||
private void Start()
|
|
||||||
{
|
{
|
||||||
}
|
[SerializeField] private float attackDamage = 1f;
|
||||||
|
|
||||||
// Update is called once per frame
|
[SerializeField] private bool shakeCameraOnHit = true;
|
||||||
private void Update()
|
|
||||||
{
|
public float AttackDamage => attackDamage;
|
||||||
|
|
||||||
|
public bool ShakeCameraOnHit => shakeCameraOnHit;
|
||||||
|
|
||||||
|
// Start is called before the first frame update
|
||||||
|
private void Start()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
// Update is called once per frame
|
||||||
|
private void Update()
|
||||||
|
{
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -1,62 +1,65 @@
|
|||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
using UnityEngine.VFX;
|
using UnityEngine.VFX;
|
||||||
|
|
||||||
[ExecuteAlways]
|
namespace Enemy
|
||||||
public class SwarmAnimator : MonoBehaviour
|
|
||||||
{
|
{
|
||||||
[SerializeField] private VisualEffect vfx;
|
[ExecuteAlways]
|
||||||
|
public class SwarmAnimator : MonoBehaviour
|
||||||
[SerializeField] private Rigidbody rb;
|
|
||||||
//[SerializeField]
|
|
||||||
//private string parameterName = "DeltaVector";
|
|
||||||
|
|
||||||
[SerializeField] private Vector3 avoidancePosDefault;
|
|
||||||
|
|
||||||
[SerializeField] private float explodeDuration = 1.0f;
|
|
||||||
|
|
||||||
private Vector3 currentPosition;
|
|
||||||
private float dur;
|
|
||||||
private bool isExploding;
|
|
||||||
private Vector3 previousPosition;
|
|
||||||
|
|
||||||
// Start is called before the first frame update
|
|
||||||
private void Start()
|
|
||||||
{
|
{
|
||||||
}
|
[SerializeField] private VisualEffect vfx;
|
||||||
|
|
||||||
// Update is called once per frame
|
[SerializeField] private Rigidbody rb;
|
||||||
private void Update()
|
//[SerializeField]
|
||||||
{
|
//private string parameterName = "DeltaVector";
|
||||||
previousPosition = currentPosition;
|
|
||||||
currentPosition = transform.position;
|
|
||||||
var velocity = currentPosition - previousPosition;
|
|
||||||
vfx.SetVector3("DeltaVector", velocity);
|
|
||||||
|
|
||||||
if (Input.GetKeyDown(KeyCode.Space)) Explode();
|
[SerializeField] private Vector3 avoidancePosDefault;
|
||||||
if (isExploding)
|
|
||||||
|
[SerializeField] private float explodeDuration = 1.0f;
|
||||||
|
|
||||||
|
private Vector3 currentPosition;
|
||||||
|
private float dur;
|
||||||
|
private bool isExploding;
|
||||||
|
private Vector3 previousPosition;
|
||||||
|
|
||||||
|
// Start is called before the first frame update
|
||||||
|
private void Start()
|
||||||
{
|
{
|
||||||
if (dur > explodeDuration) StopExplode();
|
}
|
||||||
dur += Time.deltaTime;
|
|
||||||
|
// Update is called once per frame
|
||||||
|
private void Update()
|
||||||
|
{
|
||||||
|
previousPosition = currentPosition;
|
||||||
|
currentPosition = transform.position;
|
||||||
|
var velocity = currentPosition - previousPosition;
|
||||||
|
vfx.SetVector3("DeltaVector", velocity);
|
||||||
|
|
||||||
|
if (Input.GetKeyDown(KeyCode.Space)) Explode();
|
||||||
|
if (isExploding)
|
||||||
|
{
|
||||||
|
if (dur > explodeDuration) StopExplode();
|
||||||
|
dur += Time.deltaTime;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void FixedUpdate()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
private void Explode()
|
||||||
|
{
|
||||||
|
vfx.SetVector3("Avoid", transform.position);
|
||||||
|
isExploding = true;
|
||||||
|
dur = 0;
|
||||||
|
|
||||||
|
//Wait a sec then stop.
|
||||||
|
}
|
||||||
|
|
||||||
|
private void StopExplode()
|
||||||
|
{
|
||||||
|
vfx.SetVector3("Avoid", avoidancePosDefault);
|
||||||
|
isExploding = false;
|
||||||
|
vfx.Stop();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void FixedUpdate()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
private void Explode()
|
|
||||||
{
|
|
||||||
vfx.SetVector3("Avoid", transform.position);
|
|
||||||
isExploding = true;
|
|
||||||
dur = 0;
|
|
||||||
|
|
||||||
//Wait a sec then stop.
|
|
||||||
}
|
|
||||||
|
|
||||||
private void StopExplode()
|
|
||||||
{
|
|
||||||
vfx.SetVector3("Avoid", avoidancePosDefault);
|
|
||||||
isExploding = false;
|
|
||||||
vfx.Stop();
|
|
||||||
}
|
|
||||||
}
|
}
|
@ -4,6 +4,8 @@ using UnityEngine;
|
|||||||
using UnityEngine.Rendering;
|
using UnityEngine.Rendering;
|
||||||
using UnityEngine.SceneManagement;
|
using UnityEngine.SceneManagement;
|
||||||
|
|
||||||
|
namespace Game
|
||||||
|
{
|
||||||
public class InGameManager : MonoBehaviour
|
public class InGameManager : MonoBehaviour
|
||||||
{
|
{
|
||||||
[SerializeField] private Volume gameVolume;
|
[SerializeField] private Volume gameVolume;
|
||||||
@ -129,3 +131,4 @@ public class InGameManager : MonoBehaviour
|
|||||||
SceneManager.LoadScene(0);
|
SceneManager.LoadScene(0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
@ -1,52 +1,55 @@
|
|||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
using UnityEngine.UI;
|
using UnityEngine.UI;
|
||||||
|
|
||||||
public class InGameMenuManager : MonoBehaviour
|
namespace Game
|
||||||
{
|
{
|
||||||
[SerializeField] private Button settingsButton;
|
public class InGameMenuManager : MonoBehaviour
|
||||||
|
|
||||||
[SerializeField] private Button returnToMenuButton;
|
|
||||||
|
|
||||||
[SerializeField] private Scrollbar sensitivitySlider;
|
|
||||||
|
|
||||||
[SerializeField] private Scrollbar volumeSlider;
|
|
||||||
|
|
||||||
private InGameManager gameManager;
|
|
||||||
private Animator menuAnimator;
|
|
||||||
private PlayerComponent player;
|
|
||||||
|
|
||||||
// Start is called before the first frame update
|
|
||||||
private void Start()
|
|
||||||
{
|
{
|
||||||
menuAnimator = GetComponent<Animator>();
|
[SerializeField] private Button settingsButton;
|
||||||
settingsButton.onClick.AddListener(SettingsClicked);
|
|
||||||
returnToMenuButton.onClick.AddListener(SettingsUnClicked);
|
|
||||||
player = FindObjectOfType(typeof(PlayerComponent)) as PlayerComponent;
|
|
||||||
gameManager = FindObjectOfType<InGameManager>();
|
|
||||||
}
|
|
||||||
|
|
||||||
// Update is called once per frame
|
[SerializeField] private Button returnToMenuButton;
|
||||||
private void Update()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
private void SettingsClicked()
|
[SerializeField] private Scrollbar sensitivitySlider;
|
||||||
{
|
|
||||||
menuAnimator.SetBool("SettingsOpen", true);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void SettingsUnClicked()
|
[SerializeField] private Scrollbar volumeSlider;
|
||||||
{
|
|
||||||
menuAnimator.SetBool("SettingsOpen", false);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void UpdateSensitivity()
|
private InGameManager gameManager;
|
||||||
{
|
private Animator menuAnimator;
|
||||||
player.SetSensitivity(sensitivitySlider.value * 4f);
|
private Player.PlayerComponent player;
|
||||||
}
|
|
||||||
|
|
||||||
public void UpdateVolume()
|
// Start is called before the first frame update
|
||||||
{
|
private void Start()
|
||||||
gameManager.SetVolume(volumeSlider.value * 2);
|
{
|
||||||
|
menuAnimator = GetComponent<Animator>();
|
||||||
|
settingsButton.onClick.AddListener(SettingsClicked);
|
||||||
|
returnToMenuButton.onClick.AddListener(SettingsUnClicked);
|
||||||
|
player = FindObjectOfType(typeof(Player.PlayerComponent)) as Player.PlayerComponent;
|
||||||
|
gameManager = FindObjectOfType<InGameManager>();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Update is called once per frame
|
||||||
|
private void Update()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
private void SettingsClicked()
|
||||||
|
{
|
||||||
|
menuAnimator.SetBool("SettingsOpen", true);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void SettingsUnClicked()
|
||||||
|
{
|
||||||
|
menuAnimator.SetBool("SettingsOpen", false);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void UpdateSensitivity()
|
||||||
|
{
|
||||||
|
player.SetSensitivity(sensitivitySlider.value * 4f);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void UpdateVolume()
|
||||||
|
{
|
||||||
|
gameManager.SetVolume(volumeSlider.value * 2);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -1,5 +1,6 @@
|
|||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
|
|
||||||
|
namespace Game {
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Attach this behavior to a master room collider. Enables everything in this room OnTriggerEnter of [tag]
|
/// Attach this behavior to a master room collider. Enables everything in this room OnTriggerEnter of [tag]
|
||||||
/// disables everything in this room OnTriggerExit of [tag]
|
/// disables everything in this room OnTriggerExit of [tag]
|
||||||
@ -37,3 +38,4 @@ public class Optimizer : MonoBehaviour
|
|||||||
foreach (var go in references) go.SetActive(false);
|
foreach (var go in references) go.SetActive(false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
@ -19,7 +19,7 @@ public class GemItem : MonoBehaviour
|
|||||||
{
|
{
|
||||||
if (collision.gameObject.CompareTag("Player"))
|
if (collision.gameObject.CompareTag("Player"))
|
||||||
{
|
{
|
||||||
collision.gameObject.GetComponent<PlayerMovementController>().SetSpeed(instantSpeed);
|
collision.gameObject.GetComponent<Player.PlayerMovementController>().SetSpeed(instantSpeed);
|
||||||
Destroy(gameObject);
|
Destroy(gameObject);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -44,7 +44,7 @@ public class DoorInteractable : HeavyItemReceiver
|
|||||||
//print("DIST:" + dist);
|
//print("DIST:" + dist);
|
||||||
if (dist <= minAttractDist)
|
if (dist <= minAttractDist)
|
||||||
{
|
{
|
||||||
var _i = PlayerInteractionHandler.instance.Inventory;
|
var _i = Player.PlayerInteractionHandler.instance.Inventory;
|
||||||
Interact(ref _i, ref item);
|
Interact(ref _i, ref item);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -62,7 +62,7 @@ public class PistolComponent : MonoBehaviour
|
|||||||
{
|
{
|
||||||
if (shootLight.gameObject.activeSelf && timeSinceLightDuration > shootLightDuration)
|
if (shootLight.gameObject.activeSelf && timeSinceLightDuration > shootLightDuration)
|
||||||
shootLight.gameObject.SetActive(false);
|
shootLight.gameObject.SetActive(false);
|
||||||
if (aimMode == AimMode.CAMERA) targetObject.gameObject.transform.position = PlayerAim.active.targetPosition;
|
if (aimMode == AimMode.CAMERA) targetObject.gameObject.transform.position = Player.PlayerAim.active.targetPosition;
|
||||||
if (IsEnabled && aimMode != AimMode.CAMERA)
|
if (IsEnabled && aimMode != AimMode.CAMERA)
|
||||||
{
|
{
|
||||||
var ray = new Ray(transform.position, transform.up);
|
var ray = new Ray(transform.position, transform.up);
|
||||||
@ -144,7 +144,7 @@ public class PistolComponent : MonoBehaviour
|
|||||||
if (offsetWithTargetBall || aimMode == AimMode.MODIFIED)
|
if (offsetWithTargetBall || aimMode == AimMode.MODIFIED)
|
||||||
{
|
{
|
||||||
var ballCamVector = targetObject.transform.position -
|
var ballCamVector = targetObject.transform.position -
|
||||||
GetComponentInParent<PlayerMovementController>().cam.transform.position;
|
GetComponentInParent<Player.PlayerMovementController>().cam.transform.position;
|
||||||
var r = new Ray();
|
var r = new Ray();
|
||||||
r.origin = targetObject.transform.position;
|
r.origin = targetObject.transform.position;
|
||||||
r.direction = ballCamVector.normalized;
|
r.direction = ballCamVector.normalized;
|
||||||
@ -157,7 +157,7 @@ public class PistolComponent : MonoBehaviour
|
|||||||
}
|
}
|
||||||
else if (aimMode == AimMode.CAMERA)
|
else if (aimMode == AimMode.CAMERA)
|
||||||
{
|
{
|
||||||
var target = PlayerAim.active.targetPosition;
|
var target = Player.PlayerAim.active.targetPosition;
|
||||||
|
|
||||||
var lv = target - pRigid.transform.position;
|
var lv = target - pRigid.transform.position;
|
||||||
launchVector = lv.normalized;
|
launchVector = lv.normalized;
|
||||||
|
@ -18,7 +18,7 @@ public class SpecialItemCycler : MonoBehaviour
|
|||||||
|
|
||||||
[SerializeField] private List<ItemImageRef> shootableItems = new();
|
[SerializeField] private List<ItemImageRef> shootableItems = new();
|
||||||
|
|
||||||
[SerializeField] private PlayerInteractionHandler interactionHandler;
|
[SerializeField] private Player.PlayerInteractionHandler interactionHandler;
|
||||||
|
|
||||||
[SerializeField] private PistolComponent pistol;
|
[SerializeField] private PistolComponent pistol;
|
||||||
|
|
||||||
|
@ -25,7 +25,7 @@ public class BasicLevelProgressionSystem : MonoBehaviour
|
|||||||
|
|
||||||
[SerializeField] private WaypointMarker marker;
|
[SerializeField] private WaypointMarker marker;
|
||||||
|
|
||||||
[SerializeField] private PlayerComponent player;
|
[SerializeField] private Player.PlayerComponent player;
|
||||||
//[SerializeField]
|
//[SerializeField]
|
||||||
//private float minDist = 3;
|
//private float minDist = 3;
|
||||||
|
|
||||||
@ -82,7 +82,7 @@ public class BasicLevelProgressionSystem : MonoBehaviour
|
|||||||
|
|
||||||
private void OnTriggerEnter(Collider other)
|
private void OnTriggerEnter(Collider other)
|
||||||
{
|
{
|
||||||
if (other.gameObject.GetComponentInParent<PlayerComponent>() != null) ProgressCurrentIfCollide();
|
if (other.gameObject.GetComponentInParent<Player.PlayerComponent>() != null) ProgressCurrentIfCollide();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void ProgressCurrentIfCollide()
|
private void ProgressCurrentIfCollide()
|
||||||
|
@ -25,13 +25,13 @@ public class LevelZeroSpecial : MonoBehaviour
|
|||||||
|
|
||||||
[SerializeField] private GameObject exitCollider;
|
[SerializeField] private GameObject exitCollider;
|
||||||
|
|
||||||
[SerializeField] private PlayerComponent player;
|
[SerializeField] private Player.PlayerComponent player;
|
||||||
|
|
||||||
[SerializeField] private WaypointMarker marker2Ref;
|
[SerializeField] private WaypointMarker marker2Ref;
|
||||||
|
|
||||||
[SerializeField] private WaypointMarker marker3Ref;
|
[SerializeField] private WaypointMarker marker3Ref;
|
||||||
|
|
||||||
[SerializeField] private Optimizer finalRoomOptimizer;
|
[SerializeField] private Game.Optimizer finalRoomOptimizer;
|
||||||
|
|
||||||
private int countPowered;
|
private int countPowered;
|
||||||
private bool isEnabled;
|
private bool isEnabled;
|
||||||
|
@ -1,49 +1,51 @@
|
|||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
|
namespace Player
|
||||||
public class CameraController : MonoBehaviour
|
|
||||||
{
|
{
|
||||||
//private float mouseX = 0;
|
public class CameraController : MonoBehaviour
|
||||||
//private float mouseY;
|
|
||||||
[SerializeField] private Camera cam;
|
|
||||||
|
|
||||||
|
|
||||||
[SerializeField] private Transform target;
|
|
||||||
|
|
||||||
private Vector3 offset;
|
|
||||||
public Vector3 Forward { get; private set; } = Vector3.zero;
|
|
||||||
|
|
||||||
public Vector3 Right { get; private set; } = Vector3.zero;
|
|
||||||
|
|
||||||
//private float originalDist = 0;
|
|
||||||
//private float newDist = 0;
|
|
||||||
//[SerializeField]
|
|
||||||
// private bool isChild = false;
|
|
||||||
|
|
||||||
|
|
||||||
// Start is called before the first frame update
|
|
||||||
private void Start()
|
|
||||||
{
|
{
|
||||||
}
|
//private float mouseX = 0;
|
||||||
|
//private float mouseY;
|
||||||
|
[SerializeField] private Camera cam;
|
||||||
|
|
||||||
// Update is called once per frame
|
|
||||||
private void Update()
|
|
||||||
{
|
|
||||||
GetMouseLook();
|
|
||||||
//if(target!=null&&!isChild)
|
|
||||||
//transform.position = target.transform.position+offset;
|
|
||||||
Forward = new Vector3(cam.transform.forward.x, target.transform.forward.y, cam.transform.forward.z);
|
|
||||||
Right = new Vector3(cam.transform.right.x, target.transform.right.y, cam.transform.right.z);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void GetMouseLook()
|
[SerializeField] private Transform target;
|
||||||
{
|
|
||||||
//mouseX = Input.GetAxis("Mouse X");
|
|
||||||
//mouseY = Input.GetAxis("Mouse Y");
|
|
||||||
|
|
||||||
//transform.Rotate(0, mouseX * Time.deltaTime * 180f, 0);
|
private Vector3 offset;
|
||||||
//cam.transform.parent.parent.transform.Rotate(mouseY * Time.deltaTime * 180f, 0, 0);
|
public Vector3 Forward { get; private set; } = Vector3.zero;
|
||||||
|
|
||||||
//Cursor.visible = false;
|
public Vector3 Right { get; private set; } = Vector3.zero;
|
||||||
//Cursor.lockState = CursorLockMode.Locked;
|
|
||||||
|
//private float originalDist = 0;
|
||||||
|
//private float newDist = 0;
|
||||||
|
//[SerializeField]
|
||||||
|
// private bool isChild = false;
|
||||||
|
|
||||||
|
|
||||||
|
// Start is called before the first frame update
|
||||||
|
private void Start()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
// Update is called once per frame
|
||||||
|
private void Update()
|
||||||
|
{
|
||||||
|
GetMouseLook();
|
||||||
|
//if(target!=null&&!isChild)
|
||||||
|
//transform.position = target.transform.position+offset;
|
||||||
|
Forward = new Vector3(cam.transform.forward.x, target.transform.forward.y, cam.transform.forward.z);
|
||||||
|
Right = new Vector3(cam.transform.right.x, target.transform.right.y, cam.transform.right.z);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void GetMouseLook()
|
||||||
|
{
|
||||||
|
//mouseX = Input.GetAxis("Mouse X");
|
||||||
|
//mouseY = Input.GetAxis("Mouse Y");
|
||||||
|
|
||||||
|
//transform.Rotate(0, mouseX * Time.deltaTime * 180f, 0);
|
||||||
|
//cam.transform.parent.parent.transform.Rotate(mouseY * Time.deltaTime * 180f, 0, 0);
|
||||||
|
|
||||||
|
//Cursor.visible = false;
|
||||||
|
//Cursor.lockState = CursorLockMode.Locked;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -1,62 +1,65 @@
|
|||||||
using Cinemachine;
|
using Cinemachine;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
|
|
||||||
public class CameraShift : MonoBehaviour
|
namespace Player
|
||||||
{
|
{
|
||||||
public static CameraShift active;
|
public class CameraShift : MonoBehaviour
|
||||||
|
|
||||||
[SerializeField] private Camera childCam;
|
|
||||||
|
|
||||||
[SerializeField] private Transform offset;
|
|
||||||
|
|
||||||
[SerializeField] private float cameraSpeed = 5f;
|
|
||||||
|
|
||||||
[SerializeField] private CinemachineFreeLook freelook;
|
|
||||||
|
|
||||||
[SerializeField] private float initRadius = 3f;
|
|
||||||
|
|
||||||
[SerializeField] private float aimingRadius = 2f;
|
|
||||||
|
|
||||||
private bool isCenter = true;
|
|
||||||
private Vector3 targetOffset;
|
|
||||||
|
|
||||||
// Start is called before the first frame update
|
|
||||||
private void Start()
|
|
||||||
{
|
{
|
||||||
targetOffset = Vector3.zero;
|
public static CameraShift active;
|
||||||
}
|
|
||||||
|
|
||||||
// Update is called once per frame
|
[SerializeField] private Camera childCam;
|
||||||
private void Update()
|
|
||||||
{
|
[SerializeField] private Transform offset;
|
||||||
active = this;
|
|
||||||
if (isCenter)
|
[SerializeField] private float cameraSpeed = 5f;
|
||||||
|
|
||||||
|
[SerializeField] private CinemachineFreeLook freelook;
|
||||||
|
|
||||||
|
[SerializeField] private float initRadius = 3f;
|
||||||
|
|
||||||
|
[SerializeField] private float aimingRadius = 2f;
|
||||||
|
|
||||||
|
private bool isCenter = true;
|
||||||
|
private Vector3 targetOffset;
|
||||||
|
|
||||||
|
// Start is called before the first frame update
|
||||||
|
private void Start()
|
||||||
{
|
{
|
||||||
targetOffset = Vector3.zero;
|
targetOffset = Vector3.zero;
|
||||||
freelook.m_Orbits[1].m_Radius =
|
|
||||||
Mathf.Lerp(freelook.m_Orbits[1].m_Radius, initRadius, Time.deltaTime * cameraSpeed);
|
|
||||||
}
|
}
|
||||||
else
|
|
||||||
|
// Update is called once per frame
|
||||||
|
private void Update()
|
||||||
{
|
{
|
||||||
targetOffset = offset.localPosition;
|
active = this;
|
||||||
freelook.m_Orbits[1].m_Radius =
|
if (isCenter)
|
||||||
Mathf.Lerp(freelook.m_Orbits[1].m_Radius, aimingRadius, Time.deltaTime * cameraSpeed);
|
{
|
||||||
|
targetOffset = Vector3.zero;
|
||||||
|
freelook.m_Orbits[1].m_Radius =
|
||||||
|
Mathf.Lerp(freelook.m_Orbits[1].m_Radius, initRadius, Time.deltaTime * cameraSpeed);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
targetOffset = offset.localPosition;
|
||||||
|
freelook.m_Orbits[1].m_Radius =
|
||||||
|
Mathf.Lerp(freelook.m_Orbits[1].m_Radius, aimingRadius, Time.deltaTime * cameraSpeed);
|
||||||
|
}
|
||||||
|
|
||||||
|
childCam.transform.localPosition =
|
||||||
|
Vector3.Lerp(childCam.transform.localPosition, targetOffset, Time.deltaTime * cameraSpeed);
|
||||||
|
}
|
||||||
|
//[SerializeField]
|
||||||
|
//private PlayerMovementController movementController;
|
||||||
|
|
||||||
|
|
||||||
|
public void ToggleCenter()
|
||||||
|
{
|
||||||
|
isCenter = !isCenter;
|
||||||
}
|
}
|
||||||
|
|
||||||
childCam.transform.localPosition =
|
public void SetCenter(bool isCenter)
|
||||||
Vector3.Lerp(childCam.transform.localPosition, targetOffset, Time.deltaTime * cameraSpeed);
|
{
|
||||||
}
|
this.isCenter = isCenter;
|
||||||
//[SerializeField]
|
}
|
||||||
//private PlayerMovementController movementController;
|
|
||||||
|
|
||||||
|
|
||||||
public void ToggleCenter()
|
|
||||||
{
|
|
||||||
isCenter = !isCenter;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void SetCenter(bool isCenter)
|
|
||||||
{
|
|
||||||
this.isCenter = isCenter;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -1,62 +1,65 @@
|
|||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
|
|
||||||
public class NoiseVisibilitySettingsManager : MonoBehaviour
|
namespace Player
|
||||||
{
|
{
|
||||||
[SerializeField] private float sneakNoiseDistance = 5f;
|
public class NoiseVisibilitySettingsManager : MonoBehaviour
|
||||||
|
|
||||||
[SerializeField] private float runNoiseDistance = 10f;
|
|
||||||
|
|
||||||
[SerializeField] private float shootNoiseDistance = 30f;
|
|
||||||
|
|
||||||
[SerializeField] private float standNoiseDistance;
|
|
||||||
|
|
||||||
[SerializeField] private float shootNoiseDuration = 2f;
|
|
||||||
|
|
||||||
private bool isRunning;
|
|
||||||
private bool isSneaking;
|
|
||||||
|
|
||||||
private float timeSinceLastShot;
|
|
||||||
|
|
||||||
public float SneakNoiseDistance => sneakNoiseDistance;
|
|
||||||
public float RunNoiseDistance => runNoiseDistance;
|
|
||||||
public float ShootNoiseDistance => shootNoiseDistance;
|
|
||||||
public float StandNoiseDistance => standNoiseDistance;
|
|
||||||
|
|
||||||
public float NoiseDistance { get; private set; }
|
|
||||||
|
|
||||||
|
|
||||||
// Start is called before the first frame update
|
|
||||||
private void Start()
|
|
||||||
{
|
{
|
||||||
}
|
[SerializeField] private float sneakNoiseDistance = 5f;
|
||||||
|
|
||||||
// Update is called once per frame
|
[SerializeField] private float runNoiseDistance = 10f;
|
||||||
private void Update()
|
|
||||||
{
|
|
||||||
if (timeSinceLastShot > 0)
|
|
||||||
NoiseDistance = shootNoiseDistance;
|
|
||||||
else if (isRunning)
|
|
||||||
NoiseDistance = runNoiseDistance;
|
|
||||||
else if (isSneaking)
|
|
||||||
NoiseDistance = sneakNoiseDistance;
|
|
||||||
else
|
|
||||||
NoiseDistance = standNoiseDistance;
|
|
||||||
|
|
||||||
timeSinceLastShot -= Time.deltaTime;
|
[SerializeField] private float shootNoiseDistance = 30f;
|
||||||
}
|
|
||||||
|
|
||||||
public void ShotFired()
|
[SerializeField] private float standNoiseDistance;
|
||||||
{
|
|
||||||
timeSinceLastShot = shootNoiseDuration;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void SetRunning(bool isRunning)
|
[SerializeField] private float shootNoiseDuration = 2f;
|
||||||
{
|
|
||||||
this.isRunning = isRunning;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void SetSneaking(bool isSneaking)
|
private bool isRunning;
|
||||||
{
|
private bool isSneaking;
|
||||||
this.isSneaking = isSneaking;
|
|
||||||
|
private float timeSinceLastShot;
|
||||||
|
|
||||||
|
public float SneakNoiseDistance => sneakNoiseDistance;
|
||||||
|
public float RunNoiseDistance => runNoiseDistance;
|
||||||
|
public float ShootNoiseDistance => shootNoiseDistance;
|
||||||
|
public float StandNoiseDistance => standNoiseDistance;
|
||||||
|
|
||||||
|
public float NoiseDistance { get; private set; }
|
||||||
|
|
||||||
|
|
||||||
|
// Start is called before the first frame update
|
||||||
|
private void Start()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
// Update is called once per frame
|
||||||
|
private void Update()
|
||||||
|
{
|
||||||
|
if (timeSinceLastShot > 0)
|
||||||
|
NoiseDistance = shootNoiseDistance;
|
||||||
|
else if (isRunning)
|
||||||
|
NoiseDistance = runNoiseDistance;
|
||||||
|
else if (isSneaking)
|
||||||
|
NoiseDistance = sneakNoiseDistance;
|
||||||
|
else
|
||||||
|
NoiseDistance = standNoiseDistance;
|
||||||
|
|
||||||
|
timeSinceLastShot -= Time.deltaTime;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void ShotFired()
|
||||||
|
{
|
||||||
|
timeSinceLastShot = shootNoiseDuration;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void SetRunning(bool isRunning)
|
||||||
|
{
|
||||||
|
this.isRunning = isRunning;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void SetSneaking(bool isSneaking)
|
||||||
|
{
|
||||||
|
this.isSneaking = isSneaking;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -1,24 +1,27 @@
|
|||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
|
|
||||||
public class PlayerAim : MonoBehaviour
|
namespace Player
|
||||||
{
|
{
|
||||||
public static PlayerAim active;
|
public class PlayerAim : MonoBehaviour
|
||||||
public Vector3 targetPosition;
|
|
||||||
|
|
||||||
private Camera cam;
|
|
||||||
|
|
||||||
// Start is called before the first frame update
|
|
||||||
private void Start()
|
|
||||||
{
|
{
|
||||||
active = this;
|
public static PlayerAim active;
|
||||||
cam = GetComponent<Camera>();
|
public Vector3 targetPosition;
|
||||||
}
|
|
||||||
|
|
||||||
// Update is called once per frame
|
private Camera cam;
|
||||||
private void Update()
|
|
||||||
{
|
// Start is called before the first frame update
|
||||||
var r = new Ray(cam.transform.position, cam.transform.forward);
|
private void Start()
|
||||||
RaycastHit hit;
|
{
|
||||||
if (Physics.Raycast(r, out hit)) targetPosition = hit.point;
|
active = this;
|
||||||
|
cam = GetComponent<Camera>();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Update is called once per frame
|
||||||
|
private void Update()
|
||||||
|
{
|
||||||
|
var r = new Ray(cam.transform.position, cam.transform.forward);
|
||||||
|
RaycastHit hit;
|
||||||
|
if (Physics.Raycast(r, out hit)) targetPosition = hit.point;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -1,116 +1,120 @@
|
|||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
|
|
||||||
public class PlayerAnimationController : MonoBehaviour
|
namespace Player
|
||||||
{
|
{
|
||||||
[SerializeField] private Animator animController;
|
|
||||||
|
|
||||||
[SerializeField] private string runningParameter;
|
public class PlayerAnimationController : MonoBehaviour
|
||||||
|
|
||||||
[SerializeField] private string runningSpeedParameter;
|
|
||||||
|
|
||||||
[SerializeField] private string sideStepSpeedParameter;
|
|
||||||
|
|
||||||
//private bool movementInterrupt = false;
|
|
||||||
[SerializeField] private PlayerInteractionHandler interactionHandler;
|
|
||||||
|
|
||||||
[SerializeField] private PlayerMovementController movement;
|
|
||||||
|
|
||||||
//private float verticalAiming = 0;
|
|
||||||
[SerializeField] private Camera hiddenCam;
|
|
||||||
|
|
||||||
private bool isRunning;
|
|
||||||
|
|
||||||
private float runningSpeed;
|
|
||||||
private float sideStepSpeed;
|
|
||||||
|
|
||||||
// Start is called before the first frame update
|
|
||||||
private void Start()
|
|
||||||
{
|
{
|
||||||
}
|
[SerializeField] private Animator animController;
|
||||||
|
|
||||||
// Update is called once per frame
|
[SerializeField] private string runningParameter;
|
||||||
private void Update()
|
|
||||||
{
|
|
||||||
animController.SetBool("IsCarrying", interactionHandler.IsCarrying);
|
|
||||||
animController.SetBool("HasGun", interactionHandler.GunEnabled);
|
|
||||||
|
|
||||||
if (interactionHandler.GunEnabled && !interactionHandler.isDead && movement.AllowRotation)
|
[SerializeField] private string runningSpeedParameter;
|
||||||
|
|
||||||
|
[SerializeField] private string sideStepSpeedParameter;
|
||||||
|
|
||||||
|
//private bool movementInterrupt = false;
|
||||||
|
[SerializeField] private PlayerInteractionHandler interactionHandler;
|
||||||
|
|
||||||
|
[SerializeField] private PlayerMovementController movement;
|
||||||
|
|
||||||
|
//private float verticalAiming = 0;
|
||||||
|
[SerializeField] private Camera hiddenCam;
|
||||||
|
|
||||||
|
private bool isRunning;
|
||||||
|
|
||||||
|
private float runningSpeed;
|
||||||
|
private float sideStepSpeed;
|
||||||
|
|
||||||
|
// Start is called before the first frame update
|
||||||
|
private void Start()
|
||||||
{
|
{
|
||||||
if (hiddenCam.transform.localEulerAngles.x < 90)
|
}
|
||||||
|
|
||||||
|
// Update is called once per frame
|
||||||
|
private void Update()
|
||||||
|
{
|
||||||
|
animController.SetBool("IsCarrying", interactionHandler.IsCarrying);
|
||||||
|
animController.SetBool("HasGun", interactionHandler.GunEnabled);
|
||||||
|
|
||||||
|
if (interactionHandler.GunEnabled && !interactionHandler.isDead && movement.AllowRotation)
|
||||||
{
|
{
|
||||||
//DOWN
|
if (hiddenCam.transform.localEulerAngles.x < 90)
|
||||||
var target = Mathf.Lerp(animController.GetLayerWeight(3), hiddenCam.transform.localEulerAngles.x / 70f,
|
{
|
||||||
Time.deltaTime * 10f);
|
//DOWN
|
||||||
animController.SetLayerWeight(3, target);
|
var target = Mathf.Lerp(animController.GetLayerWeight(3), hiddenCam.transform.localEulerAngles.x / 70f,
|
||||||
animController.SetLayerWeight(2, 0);
|
Time.deltaTime * 10f);
|
||||||
|
animController.SetLayerWeight(3, target);
|
||||||
|
animController.SetLayerWeight(2, 0);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
//UP
|
||||||
|
animController.SetLayerWeight(3, 0);
|
||||||
|
var target = Mathf.Lerp(animController.GetLayerWeight(2),
|
||||||
|
(360f - hiddenCam.transform.localEulerAngles.x) / (360f - 300f), Time.deltaTime * 10);
|
||||||
|
animController.SetLayerWeight(2, target);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
//UP
|
animController.SetLayerWeight(2, Mathf.Lerp(animController.GetLayerWeight(2), 0, Time.deltaTime * 10));
|
||||||
animController.SetLayerWeight(3, 0);
|
animController.SetLayerWeight(3, Mathf.Lerp(animController.GetLayerWeight(3), 0, Time.deltaTime * 10));
|
||||||
var target = Mathf.Lerp(animController.GetLayerWeight(2),
|
}
|
||||||
(360f - hiddenCam.transform.localEulerAngles.x) / (360f - 300f), Time.deltaTime * 10);
|
|
||||||
animController.SetLayerWeight(2, target);
|
//print("carrying:" + interactionHandler.IsCarrying + " running:"+animController.GetBool(runningParameter)+" running speed:" + animController.GetFloat(runningSpeedParameter));
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Animate(Vector2 movement, bool jump, bool isMoving)
|
||||||
|
{
|
||||||
|
animController.SetFloat(runningSpeedParameter, movement.magnitude);
|
||||||
|
animController.SetBool(runningParameter, isMoving);
|
||||||
|
|
||||||
|
if (this.movement.IsAiming)
|
||||||
|
{
|
||||||
|
animController.SetFloat("StrafingSpeed", movement.x);
|
||||||
|
float dir = 0;
|
||||||
|
if (movement.x > 0)
|
||||||
|
dir = 1;
|
||||||
|
else if (movement.x < 0) dir = -1;
|
||||||
|
animController.SetFloat("StrafingDirection", dir);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
animController.SetFloat("StrafingSpeed", 0);
|
||||||
|
animController.SetFloat("StrafingDirection", 1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
|
||||||
|
public void Animate(PlayerQuickAnimationType animation)
|
||||||
{
|
{
|
||||||
animController.SetLayerWeight(2, Mathf.Lerp(animController.GetLayerWeight(2), 0, Time.deltaTime * 10));
|
switch (animation)
|
||||||
animController.SetLayerWeight(3, Mathf.Lerp(animController.GetLayerWeight(3), 0, Time.deltaTime * 10));
|
{
|
||||||
|
case PlayerQuickAnimationType.Grab:
|
||||||
|
print("grabbing...");
|
||||||
|
break;
|
||||||
|
case PlayerQuickAnimationType.Shoot:
|
||||||
|
print("shooting...");
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//print("carrying:" + interactionHandler.IsCarrying + " running:"+animController.GetBool(runningParameter)+" running speed:" + animController.GetFloat(runningSpeedParameter));
|
public void Hit(bool isDead)
|
||||||
}
|
|
||||||
|
|
||||||
public void Animate(Vector2 movement, bool jump, bool isMoving)
|
|
||||||
{
|
|
||||||
animController.SetFloat(runningSpeedParameter, movement.magnitude);
|
|
||||||
animController.SetBool(runningParameter, isMoving);
|
|
||||||
|
|
||||||
if (this.movement.IsAiming)
|
|
||||||
{
|
{
|
||||||
animController.SetFloat("StrafingSpeed", movement.x);
|
animController.SetTrigger("WasHit");
|
||||||
float dir = 0;
|
animController.SetBool("IsDead", isDead);
|
||||||
if (movement.x > 0)
|
|
||||||
dir = 1;
|
|
||||||
else if (movement.x < 0) dir = -1;
|
|
||||||
animController.SetFloat("StrafingDirection", dir);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
animController.SetFloat("StrafingSpeed", 0);
|
|
||||||
animController.SetFloat("StrafingDirection", 1);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Animate(PlayerQuickAnimationType animation)
|
public enum PlayerAnimationType
|
||||||
{
|
{
|
||||||
switch (animation)
|
Movement,
|
||||||
{
|
Action
|
||||||
case PlayerQuickAnimationType.Grab:
|
|
||||||
print("grabbing...");
|
|
||||||
break;
|
|
||||||
case PlayerQuickAnimationType.Shoot:
|
|
||||||
print("shooting...");
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Hit(bool isDead)
|
public enum PlayerQuickAnimationType
|
||||||
{
|
{
|
||||||
animController.SetTrigger("WasHit");
|
Grab,
|
||||||
animController.SetBool("IsDead", isDead);
|
Shoot
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public enum PlayerAnimationType
|
|
||||||
{
|
|
||||||
Movement,
|
|
||||||
Action
|
|
||||||
}
|
|
||||||
|
|
||||||
public enum PlayerQuickAnimationType
|
|
||||||
{
|
|
||||||
Grab,
|
|
||||||
Shoot
|
|
||||||
}
|
|
@ -1,104 +1,107 @@
|
|||||||
using Cinemachine;
|
using Cinemachine;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
|
|
||||||
public class PlayerComponent : MonoBehaviour
|
namespace Player
|
||||||
{
|
{
|
||||||
[SerializeField] private float health = 5f;
|
public class PlayerComponent : MonoBehaviour
|
||||||
|
|
||||||
[SerializeField] private float maxHealth = 5f;
|
|
||||||
|
|
||||||
[SerializeField] private float stamina = 20f;
|
|
||||||
|
|
||||||
[SerializeField] private float maxStamina = 20f;
|
|
||||||
|
|
||||||
[SerializeField] private NoiseVisibilitySettingsManager noiseManager;
|
|
||||||
[SerializeField] private PlayerMovementController movementController;
|
|
||||||
|
|
||||||
[SerializeField] private PlayerAnimationController animationController;
|
|
||||||
|
|
||||||
[HideInInspector] public FlareRegister flareRegister;
|
|
||||||
|
|
||||||
[SerializeField] private CinemachineFreeLook cameraFreeLook;
|
|
||||||
|
|
||||||
[SerializeField] private float knockbackDuration = 1f;
|
|
||||||
|
|
||||||
[SerializeField] private float knockbackDistance = 5f;
|
|
||||||
|
|
||||||
[SerializeField] private StatsOutputScreen statsOutput;
|
|
||||||
|
|
||||||
private CinemachineBasicMultiChannelPerlin perlin;
|
|
||||||
private float shakeTimer;
|
|
||||||
|
|
||||||
public NoiseVisibilitySettingsManager NoiseManager => noiseManager;
|
|
||||||
public PlayerMovementController MovementController => movementController;
|
|
||||||
|
|
||||||
[HideInInspector] public bool IsAlive => health > 0;
|
|
||||||
|
|
||||||
private void Awake()
|
|
||||||
{
|
{
|
||||||
flareRegister = FindObjectOfType<FlareRegister>();
|
[SerializeField] private float health = 5f;
|
||||||
}
|
|
||||||
|
|
||||||
// Start is called before the first frame update
|
[SerializeField] private float maxHealth = 5f;
|
||||||
private void Start()
|
|
||||||
{
|
|
||||||
perlin = cameraFreeLook.GetRig(1).GetCinemachineComponent<CinemachineBasicMultiChannelPerlin>();
|
|
||||||
}
|
|
||||||
|
|
||||||
// Update is called once per frame
|
[SerializeField] private float stamina = 20f;
|
||||||
private void Update()
|
|
||||||
{
|
|
||||||
NoiseManager.SetRunning(MovementController.IsRunning);
|
|
||||||
statsOutput.health = health;
|
|
||||||
statsOutput.stamina = 20f;
|
|
||||||
statsOutput.oxygen = 100f;
|
|
||||||
|
|
||||||
if (shakeTimer > 0)
|
[SerializeField] private float maxStamina = 20f;
|
||||||
|
|
||||||
|
[SerializeField] private NoiseVisibilitySettingsManager noiseManager;
|
||||||
|
[SerializeField] private PlayerMovementController movementController;
|
||||||
|
|
||||||
|
[SerializeField] private PlayerAnimationController animationController;
|
||||||
|
|
||||||
|
[HideInInspector] public FlareRegister flareRegister;
|
||||||
|
|
||||||
|
[SerializeField] private CinemachineFreeLook cameraFreeLook;
|
||||||
|
|
||||||
|
[SerializeField] private float knockbackDuration = 1f;
|
||||||
|
|
||||||
|
[SerializeField] private float knockbackDistance = 5f;
|
||||||
|
|
||||||
|
[SerializeField] private StatsOutputScreen statsOutput;
|
||||||
|
|
||||||
|
private CinemachineBasicMultiChannelPerlin perlin;
|
||||||
|
private float shakeTimer;
|
||||||
|
|
||||||
|
public NoiseVisibilitySettingsManager NoiseManager => noiseManager;
|
||||||
|
public PlayerMovementController MovementController => movementController;
|
||||||
|
|
||||||
|
[HideInInspector] public bool IsAlive => health > 0;
|
||||||
|
|
||||||
|
private void Awake()
|
||||||
{
|
{
|
||||||
shakeTimer -= Time.deltaTime;
|
flareRegister = FindObjectOfType<FlareRegister>();
|
||||||
|
|
||||||
// perlin.m_AmplitudeGain = 0;
|
|
||||||
perlin.m_AmplitudeGain = Mathf.Lerp(perlin.m_AmplitudeGain, 0, .1f);
|
|
||||||
if (shakeTimer <= 0f) perlin.m_AmplitudeGain = 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!IsAlive)
|
// Start is called before the first frame update
|
||||||
|
private void Start()
|
||||||
{
|
{
|
||||||
PlayerInteractionHandler.instance.isDead = true;
|
perlin = cameraFreeLook.GetRig(1).GetCinemachineComponent<CinemachineBasicMultiChannelPerlin>();
|
||||||
movementController.isDead = true;
|
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
private void OnTriggerEnter(Collider other)
|
// Update is called once per frame
|
||||||
{
|
private void Update()
|
||||||
if (other.CompareTag("Damaging"))
|
|
||||||
{
|
{
|
||||||
print("HIT!");
|
NoiseManager.SetRunning(MovementController.IsRunning);
|
||||||
var monster = other.GetComponentInParent<MonsterComponent>();
|
statsOutput.health = health;
|
||||||
|
statsOutput.stamina = 20f;
|
||||||
|
statsOutput.oxygen = 100f;
|
||||||
|
|
||||||
Damage(monster.AttackDamage, monster.ShakeCameraOnHit);
|
if (shakeTimer > 0)
|
||||||
animationController.Hit(health <= 0);
|
{
|
||||||
movementController.PhysicalForceMove((transform.position - monster.transform.position) * knockbackDistance);
|
shakeTimer -= Time.deltaTime;
|
||||||
movementController.LockMovement(knockbackDuration);
|
|
||||||
|
// perlin.m_AmplitudeGain = 0;
|
||||||
|
perlin.m_AmplitudeGain = Mathf.Lerp(perlin.m_AmplitudeGain, 0, .1f);
|
||||||
|
if (shakeTimer <= 0f) perlin.m_AmplitudeGain = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!IsAlive)
|
||||||
|
{
|
||||||
|
PlayerInteractionHandler.instance.isDead = true;
|
||||||
|
movementController.isDead = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnTriggerEnter(Collider other)
|
||||||
|
{
|
||||||
|
if (other.CompareTag("Damaging"))
|
||||||
|
{
|
||||||
|
print("HIT!");
|
||||||
|
var monster = other.GetComponentInParent<Enemy.MonsterComponent>();
|
||||||
|
|
||||||
|
Damage(monster.AttackDamage, monster.ShakeCameraOnHit);
|
||||||
|
animationController.Hit(health <= 0);
|
||||||
|
movementController.PhysicalForceMove((transform.position - monster.transform.position) * knockbackDistance);
|
||||||
|
movementController.LockMovement(knockbackDuration);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
public void ShakeCamera(float intensity, float time)
|
public void ShakeCamera(float intensity, float time)
|
||||||
{
|
{
|
||||||
var perlin = cameraFreeLook.GetRig(1).GetCinemachineComponent<CinemachineBasicMultiChannelPerlin>();
|
var perlin = cameraFreeLook.GetRig(1).GetCinemachineComponent<CinemachineBasicMultiChannelPerlin>();
|
||||||
perlin.m_AmplitudeGain = intensity;
|
perlin.m_AmplitudeGain = intensity;
|
||||||
shakeTimer = time;
|
shakeTimer = time;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void SetSensitivity(float magnitude)
|
public void SetSensitivity(float magnitude)
|
||||||
{
|
{
|
||||||
movementController.SetSensitivity(magnitude);
|
movementController.SetSensitivity(magnitude);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Damage(float damage, bool applyShake = false)
|
public void Damage(float damage, bool applyShake = false)
|
||||||
{
|
{
|
||||||
health -= damage;
|
health -= damage;
|
||||||
if (applyShake) ShakeCamera(15, 5);
|
if (applyShake) ShakeCamera(15, 5);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -1,6 +1,10 @@
|
|||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
|
|
||||||
|
namespace Player
|
||||||
|
{
|
||||||
|
|
||||||
|
|
||||||
[RequireComponent(typeof(Collider))]
|
[RequireComponent(typeof(Collider))]
|
||||||
public class PlayerInteractionHandler : MonoBehaviour
|
public class PlayerInteractionHandler : MonoBehaviour
|
||||||
{
|
{
|
||||||
@ -36,7 +40,7 @@ public class PlayerInteractionHandler : MonoBehaviour
|
|||||||
private ItemSelector itemSelector;
|
private ItemSelector itemSelector;
|
||||||
private readonly List<InteractableItem> itemsInRange = new();
|
private readonly List<InteractableItem> itemsInRange = new();
|
||||||
|
|
||||||
private InGameManager manager;
|
private Game.InGameManager manager;
|
||||||
private Material selMaterial;
|
private Material selMaterial;
|
||||||
private TempInventory tempInvent;
|
private TempInventory tempInvent;
|
||||||
public Inventory Inventory => invent;
|
public Inventory Inventory => invent;
|
||||||
@ -58,7 +62,7 @@ public class PlayerInteractionHandler : MonoBehaviour
|
|||||||
itemSelector = ItemSelector.instance;
|
itemSelector = ItemSelector.instance;
|
||||||
pistol.gameObject.SetActive(GunEnabled);
|
pistol.gameObject.SetActive(GunEnabled);
|
||||||
flashlightEnabled = flashlight.gameObject.activeSelf;
|
flashlightEnabled = flashlight.gameObject.activeSelf;
|
||||||
manager = FindObjectOfType<InGameManager>();
|
manager = FindObjectOfType<Game.InGameManager>();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Update is called once per frame
|
// Update is called once per frame
|
||||||
@ -314,3 +318,5 @@ internal class AxisIsDown
|
|||||||
return down;
|
return down;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
}
|
@ -2,162 +2,166 @@ using System.Collections;
|
|||||||
using Cinemachine;
|
using Cinemachine;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
|
|
||||||
public class PlayerMovementController : MonoBehaviour
|
namespace Player
|
||||||
{
|
{
|
||||||
[SerializeField] private PlayerAnimationController animcontroller;
|
|
||||||
|
|
||||||
[SerializeField] private CharacterController ccontroller;
|
public class PlayerMovementController : MonoBehaviour
|
||||||
|
|
||||||
[SerializeField] private CameraController cameraController;
|
|
||||||
|
|
||||||
[SerializeField] private float speed = 1f;
|
|
||||||
|
|
||||||
[SerializeField] private float sideSpeed = 0.5f;
|
|
||||||
|
|
||||||
[SerializeField] private float animatedRotationSpeed = 5f;
|
|
||||||
|
|
||||||
[SerializeField] public Camera cam;
|
|
||||||
|
|
||||||
[HideInInspector] public bool AllowRotation;
|
|
||||||
|
|
||||||
[HideInInspector] public bool IsAiming;
|
|
||||||
|
|
||||||
[SerializeField] private NoiseVisibilitySettingsManager noiseSettings;
|
|
||||||
|
|
||||||
[SerializeField] private CinemachineFreeLook freelook;
|
|
||||||
|
|
||||||
[SerializeField] private string mouseXAxis = "Mouse X";
|
|
||||||
|
|
||||||
[SerializeField] private string mouseYAxis = "Mouse Y";
|
|
||||||
|
|
||||||
public bool isDead;
|
|
||||||
private CharacterControllerForce ccForceAddon;
|
|
||||||
private float initXSensitivity = 250f;
|
|
||||||
|
|
||||||
private float initYSensitivity = 10f;
|
|
||||||
//private float mouseX = 0;
|
|
||||||
|
|
||||||
private bool isSneaking = false;
|
|
||||||
|
|
||||||
|
|
||||||
private Vector3 lookingDirectionVector;
|
|
||||||
|
|
||||||
private InGameManager manager;
|
|
||||||
|
|
||||||
private bool movementLocked;
|
|
||||||
|
|
||||||
private float x;
|
|
||||||
private float y;
|
|
||||||
public bool IsRunning { get; private set; }
|
|
||||||
|
|
||||||
|
|
||||||
public float NoiseDistance => noiseSettings.NoiseDistance;
|
|
||||||
|
|
||||||
|
|
||||||
// Start is called before the first frame update
|
|
||||||
private void Start()
|
|
||||||
{
|
{
|
||||||
ccForceAddon = ccontroller.gameObject.GetComponent<CharacterControllerForce>();
|
[SerializeField] private PlayerAnimationController animcontroller;
|
||||||
manager = FindObjectOfType<InGameManager>();
|
|
||||||
initXSensitivity = freelook.m_XAxis.m_MaxSpeed;
|
|
||||||
initYSensitivity = freelook.m_YAxis.m_MaxSpeed;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Update is called once per frame
|
[SerializeField] private CharacterController ccontroller;
|
||||||
private void Update()
|
|
||||||
{
|
|
||||||
if (isDead) return;
|
|
||||||
AllowRotation = IsAiming || IsRunning;
|
|
||||||
IsAiming = Input.GetMouseButton(1) || Input.GetAxis("Aim") > 0.5f;
|
|
||||||
GetMovementOld();
|
|
||||||
MovePlayer();
|
|
||||||
|
|
||||||
animcontroller.Animate(new Vector2(x, y), false, IsRunning);
|
[SerializeField] private CameraController cameraController;
|
||||||
|
|
||||||
lookingDirectionVector = (cameraController.Forward * y + cameraController.Right * x).normalized;
|
[SerializeField] private float speed = 1f;
|
||||||
if ((IsRunning && !Input.GetMouseButtonDown(1)) || AllowRotation)
|
|
||||||
|
[SerializeField] private float sideSpeed = 0.5f;
|
||||||
|
|
||||||
|
[SerializeField] private float animatedRotationSpeed = 5f;
|
||||||
|
|
||||||
|
[SerializeField] public Camera cam;
|
||||||
|
|
||||||
|
[HideInInspector] public bool AllowRotation;
|
||||||
|
|
||||||
|
[HideInInspector] public bool IsAiming;
|
||||||
|
|
||||||
|
[SerializeField] private NoiseVisibilitySettingsManager noiseSettings;
|
||||||
|
|
||||||
|
[SerializeField] private CinemachineFreeLook freelook;
|
||||||
|
|
||||||
|
[SerializeField] private string mouseXAxis = "Mouse X";
|
||||||
|
|
||||||
|
[SerializeField] private string mouseYAxis = "Mouse Y";
|
||||||
|
|
||||||
|
public bool isDead;
|
||||||
|
private CharacterControllerForce ccForceAddon;
|
||||||
|
private float initXSensitivity = 250f;
|
||||||
|
|
||||||
|
private float initYSensitivity = 10f;
|
||||||
|
//private float mouseX = 0;
|
||||||
|
|
||||||
|
private bool isSneaking = false;
|
||||||
|
|
||||||
|
|
||||||
|
private Vector3 lookingDirectionVector;
|
||||||
|
|
||||||
|
private Game.InGameManager manager;
|
||||||
|
|
||||||
|
private bool movementLocked;
|
||||||
|
|
||||||
|
private float x;
|
||||||
|
private float y;
|
||||||
|
public bool IsRunning { get; private set; }
|
||||||
|
|
||||||
|
|
||||||
|
public float NoiseDistance => noiseSettings.NoiseDistance;
|
||||||
|
|
||||||
|
|
||||||
|
// Start is called before the first frame update
|
||||||
|
private void Start()
|
||||||
|
{
|
||||||
|
ccForceAddon = ccontroller.gameObject.GetComponent<CharacterControllerForce>();
|
||||||
|
manager = FindObjectOfType<Game.InGameManager>();
|
||||||
|
initXSensitivity = freelook.m_XAxis.m_MaxSpeed;
|
||||||
|
initYSensitivity = freelook.m_YAxis.m_MaxSpeed;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Update is called once per frame
|
||||||
|
private void Update()
|
||||||
|
{
|
||||||
|
if (isDead) return;
|
||||||
|
AllowRotation = IsAiming || IsRunning;
|
||||||
|
IsAiming = Input.GetMouseButton(1) || Input.GetAxis("Aim") > 0.5f;
|
||||||
|
GetMovementOld();
|
||||||
|
MovePlayer();
|
||||||
|
|
||||||
|
animcontroller.Animate(new Vector2(x, y), false, IsRunning);
|
||||||
|
|
||||||
|
lookingDirectionVector = (cameraController.Forward * y + cameraController.Right * x).normalized;
|
||||||
|
if ((IsRunning && !Input.GetMouseButtonDown(1)) || AllowRotation)
|
||||||
|
{
|
||||||
|
if ((AllowRotation && x == 0 && y == 0) || (IsAiming && PlayerInteractionHandler.instance.GunEnabled))
|
||||||
|
lookingDirectionVector = cameraController.Forward.normalized;
|
||||||
|
SlowLookAt(lookingDirectionVector);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
freelook.m_XAxis.m_InputAxisName = !manager.IsPaused ? mouseXAxis : "";
|
||||||
|
freelook.m_YAxis.m_InputAxisName = !manager.IsPaused ? mouseYAxis : "";
|
||||||
|
}
|
||||||
|
|
||||||
|
private void GetMovementOld()
|
||||||
|
{
|
||||||
|
x = Input.GetAxis("Horizontal");
|
||||||
|
y = Input.GetAxis("Vertical");
|
||||||
|
if (movementLocked || manager.IsPaused)
|
||||||
|
{
|
||||||
|
x = 0;
|
||||||
|
y = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
IsRunning = Mathf.Abs(y) > 0.1f || Mathf.Abs(x) > 0.1f;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void SetSensitivity(float sensitivity)
|
||||||
|
{
|
||||||
|
freelook.m_XAxis.m_MaxSpeed = initXSensitivity * sensitivity;
|
||||||
|
freelook.m_YAxis.m_MaxSpeed = initYSensitivity * sensitivity;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void MovePlayer()
|
||||||
|
{
|
||||||
|
var movement = Vector3.zero;
|
||||||
|
//movement += transform.forward * Mathf.Abs(y) * Time.deltaTime * speed;//+(transform.right*x*Time.deltaTime*speed);
|
||||||
|
movement += cam.transform.forward * y * Time.deltaTime * speed;
|
||||||
|
|
||||||
|
//movement += transform.forward * Mathf.Abs(x) * Time.deltaTime * speed;
|
||||||
|
|
||||||
|
if (!IsAiming)
|
||||||
|
movement += cam.transform.right * x * Time.deltaTime * speed;
|
||||||
|
else
|
||||||
|
movement += cam.transform.right * x * Time.deltaTime * sideSpeed;
|
||||||
|
|
||||||
|
|
||||||
|
movement += Vector3.down * Time.deltaTime * 9.8f;
|
||||||
|
ccontroller.Move(movement);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void SetSpeed(float speed)
|
||||||
|
{
|
||||||
|
this.speed = speed;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void GetJumpOld()
|
||||||
{
|
{
|
||||||
if ((AllowRotation && x == 0 && y == 0) || (IsAiming && PlayerInteractionHandler.instance.GunEnabled))
|
|
||||||
lookingDirectionVector = cameraController.Forward.normalized;
|
|
||||||
SlowLookAt(lookingDirectionVector);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
freelook.m_XAxis.m_InputAxisName = !manager.IsPaused ? mouseXAxis : "";
|
private void SlowLookAt(Vector3 targetVector)
|
||||||
freelook.m_YAxis.m_InputAxisName = !manager.IsPaused ? mouseYAxis : "";
|
|
||||||
}
|
|
||||||
|
|
||||||
private void GetMovementOld()
|
|
||||||
{
|
|
||||||
x = Input.GetAxis("Horizontal");
|
|
||||||
y = Input.GetAxis("Vertical");
|
|
||||||
if (movementLocked || manager.IsPaused)
|
|
||||||
{
|
{
|
||||||
x = 0;
|
var relativePos = targetVector;
|
||||||
y = 0;
|
var toRotation = Quaternion.LookRotation(relativePos);
|
||||||
|
|
||||||
|
transform.rotation = Quaternion.Lerp(transform.rotation, toRotation, animatedRotationSpeed * Time.deltaTime);
|
||||||
}
|
}
|
||||||
|
|
||||||
IsRunning = Mathf.Abs(y) > 0.1f || Mathf.Abs(x) > 0.1f;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void SetSensitivity(float sensitivity)
|
public void PhysicalForceMove(Vector3 vector)
|
||||||
{
|
{
|
||||||
freelook.m_XAxis.m_MaxSpeed = initXSensitivity * sensitivity;
|
ccontroller.Move(vector);
|
||||||
freelook.m_YAxis.m_MaxSpeed = initYSensitivity * sensitivity;
|
ccForceAddon.AddImpact(vector, vector.magnitude);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void MovePlayer()
|
public void LockMovement(float duration)
|
||||||
{
|
{
|
||||||
var movement = Vector3.zero;
|
StartCoroutine(lockMovement(duration));
|
||||||
//movement += transform.forward * Mathf.Abs(y) * Time.deltaTime * speed;//+(transform.right*x*Time.deltaTime*speed);
|
}
|
||||||
movement += cam.transform.forward * y * Time.deltaTime * speed;
|
|
||||||
|
|
||||||
//movement += transform.forward * Mathf.Abs(x) * Time.deltaTime * speed;
|
private IEnumerator lockMovement(float duration)
|
||||||
|
{
|
||||||
if (!IsAiming)
|
movementLocked = true;
|
||||||
movement += cam.transform.right * x * Time.deltaTime * speed;
|
yield return new WaitForSeconds(duration);
|
||||||
else
|
movementLocked = false;
|
||||||
movement += cam.transform.right * x * Time.deltaTime * sideSpeed;
|
}
|
||||||
|
|
||||||
|
|
||||||
movement += Vector3.down * Time.deltaTime * 9.8f;
|
|
||||||
ccontroller.Move(movement);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void SetSpeed(float speed)
|
|
||||||
{
|
|
||||||
this.speed = speed;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void GetJumpOld()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
private void SlowLookAt(Vector3 targetVector)
|
|
||||||
{
|
|
||||||
var relativePos = targetVector;
|
|
||||||
var toRotation = Quaternion.LookRotation(relativePos);
|
|
||||||
|
|
||||||
transform.rotation = Quaternion.Lerp(transform.rotation, toRotation, animatedRotationSpeed * Time.deltaTime);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
public void PhysicalForceMove(Vector3 vector)
|
|
||||||
{
|
|
||||||
ccontroller.Move(vector);
|
|
||||||
ccForceAddon.AddImpact(vector, vector.magnitude);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void LockMovement(float duration)
|
|
||||||
{
|
|
||||||
StartCoroutine(lockMovement(duration));
|
|
||||||
}
|
|
||||||
|
|
||||||
private IEnumerator lockMovement(float duration)
|
|
||||||
{
|
|
||||||
movementLocked = true;
|
|
||||||
yield return new WaitForSeconds(duration);
|
|
||||||
movementLocked = false;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -1,49 +1,52 @@
|
|||||||
using TMPro;
|
using TMPro;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
|
|
||||||
public class StatsOutputScreen : MonoBehaviour
|
namespace Player
|
||||||
{
|
{
|
||||||
[SerializeField] private TMP_Text healthText;
|
public class StatsOutputScreen : MonoBehaviour
|
||||||
|
|
||||||
[SerializeField] private TMP_Text staminaText;
|
|
||||||
|
|
||||||
[SerializeField] private TMP_Text oxygenText;
|
|
||||||
|
|
||||||
[HideInInspector] public float health;
|
|
||||||
|
|
||||||
[HideInInspector] public float stamina;
|
|
||||||
|
|
||||||
[HideInInspector] public float oxygen;
|
|
||||||
|
|
||||||
private Color initColor;
|
|
||||||
|
|
||||||
// Start is called before the first frame update
|
|
||||||
private void Start()
|
|
||||||
{
|
{
|
||||||
initColor = healthText.color;
|
[SerializeField] private TMP_Text healthText;
|
||||||
InvokeRepeating("ToggleColor", 0.5f, 0.5f);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Update is called once per frame
|
[SerializeField] private TMP_Text staminaText;
|
||||||
private void Update()
|
|
||||||
{
|
|
||||||
healthText.text = "Health:" + health;
|
|
||||||
|
|
||||||
if (health <= 1)
|
[SerializeField] private TMP_Text oxygenText;
|
||||||
//Dark Red
|
|
||||||
healthText.color = new Color(50, 0, 0);
|
|
||||||
else if (health <= 3)
|
|
||||||
healthText.color = Color.red;
|
|
||||||
else
|
|
||||||
healthText.color = initColor;
|
|
||||||
|
|
||||||
staminaText.text = "Stamina:" + stamina;
|
[HideInInspector] public float health;
|
||||||
oxygenText.text = "Oxygen:" + oxygen;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void ToggleColor()
|
[HideInInspector] public float stamina;
|
||||||
{
|
|
||||||
if (health <= 1)
|
[HideInInspector] public float oxygen;
|
||||||
healthText.gameObject.SetActive(!healthText.gameObject.activeSelf);
|
|
||||||
|
private Color initColor;
|
||||||
|
|
||||||
|
// Start is called before the first frame update
|
||||||
|
private void Start()
|
||||||
|
{
|
||||||
|
initColor = healthText.color;
|
||||||
|
InvokeRepeating("ToggleColor", 0.5f, 0.5f);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Update is called once per frame
|
||||||
|
private void Update()
|
||||||
|
{
|
||||||
|
healthText.text = "Health:" + health;
|
||||||
|
|
||||||
|
if (health <= 1)
|
||||||
|
//Dark Red
|
||||||
|
healthText.color = new Color(50, 0, 0);
|
||||||
|
else if (health <= 3)
|
||||||
|
healthText.color = Color.red;
|
||||||
|
else
|
||||||
|
healthText.color = initColor;
|
||||||
|
|
||||||
|
staminaText.text = "Stamina:" + stamina;
|
||||||
|
oxygenText.text = "Oxygen:" + oxygen;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void ToggleColor()
|
||||||
|
{
|
||||||
|
if (health <= 1)
|
||||||
|
healthText.gameObject.SetActive(!healthText.gameObject.activeSelf);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
Reference in New Issue
Block a user