From 559e8e82fc8553a25c4bcab35c6cb90b3bbc8aa4 Mon Sep 17 00:00:00 2001 From: Jens Pitkanen Date: Sat, 3 Aug 2019 19:14:47 +0300 Subject: [PATCH] Add blood stuff --- Assets/Graphics/Blood.png | Bin 0 -> 156 bytes Assets/Graphics/Blood.png.meta | 115 ++++++ Assets/Graphics/Placeholder.png.meta | 4 +- Assets/Prefabs.meta | 6 +- Assets/Prefabs/BloodParticle.prefab | 128 +++++++ Assets/Prefabs/BloodParticle.prefab.meta | 7 + Assets/Scenes/MainScene.unity | 384 ++++++++++++++++++++- Assets/Scripts/AI/AIBehaviour.cs | 2 +- Assets/Scripts/AI/Triggers/EnemySighted.cs | 15 +- Assets/Scripts/BloodLauncher.cs | 32 ++ Assets/Scripts/BloodLauncher.cs.meta | 11 + Assets/Scripts/BloodParticle.cs | 49 +++ Assets/Scripts/BloodParticle.cs.meta | 11 + Assets/Scripts/Util.cs | 20 ++ Assets/Scripts/Util.cs.meta | 11 + ProjectSettings/TagManager.asset | 3 + 16 files changed, 771 insertions(+), 27 deletions(-) create mode 100644 Assets/Graphics/Blood.png create mode 100644 Assets/Graphics/Blood.png.meta create mode 100644 Assets/Prefabs/BloodParticle.prefab create mode 100644 Assets/Prefabs/BloodParticle.prefab.meta create mode 100644 Assets/Scripts/BloodLauncher.cs create mode 100644 Assets/Scripts/BloodLauncher.cs.meta create mode 100644 Assets/Scripts/BloodParticle.cs create mode 100644 Assets/Scripts/BloodParticle.cs.meta create mode 100644 Assets/Scripts/Util.cs create mode 100644 Assets/Scripts/Util.cs.meta diff --git a/Assets/Graphics/Blood.png b/Assets/Graphics/Blood.png new file mode 100644 index 0000000000000000000000000000000000000000..7e1edb55792e40dc08381820c4bb5f7047f08677 GIT binary patch literal 156 zcmeAS@N?(olHy`uVBq!ia0vp^Od!kwBL7~QRScv!3p^r$w4O2uGgd6MF9Qm)mw5WR zvOnfv7T^%pYw%|U3Q3l@MwB?`=jNv7l`uFLr6!i7rYMwWmSiZnd-?{1H}Z)C6^VJe tIEHXsPoA@2iOPrP{HLwi*x1Cx7!)Tl--tSUGXtoC!PC{xWt~$(6971FCnEp= literal 0 HcmV?d00001 diff --git a/Assets/Graphics/Blood.png.meta b/Assets/Graphics/Blood.png.meta new file mode 100644 index 0000000..2ccb835 --- /dev/null +++ b/Assets/Graphics/Blood.png.meta @@ -0,0 +1,115 @@ +fileFormatVersion: 2 +guid: ff1fce077e0aafb45be2c369b110d6e0 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 10 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 0 + aniso: -1 + mipBias: -100 + wrapU: 1 + wrapV: 1 + wrapW: -1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 2 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: WebGL + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Graphics/Placeholder.png.meta b/Assets/Graphics/Placeholder.png.meta index 0bb7735..b9b534a 100644 --- a/Assets/Graphics/Placeholder.png.meta +++ b/Assets/Graphics/Placeholder.png.meta @@ -45,7 +45,7 @@ TextureImporter: spriteMeshType: 1 alignment: 0 spritePivot: {x: 0.5, y: 0.5} - spritePixelsToUnits: 16 + spritePixelsToUnits: 32 spriteBorder: {x: 0, y: 0, z: 0, w: 0} spriteGenerateFallbackPhysicsShape: 1 alphaUsage: 1 @@ -87,7 +87,7 @@ TextureImporter: maxTextureSize: 2048 resizeAlgorithm: 0 textureFormat: -1 - textureCompression: 1 + textureCompression: 0 compressionQuality: 50 crunchedCompression: 0 allowsAlphaSplitting: 0 diff --git a/Assets/Prefabs.meta b/Assets/Prefabs.meta index 891f4aa..8b38fdd 100644 --- a/Assets/Prefabs.meta +++ b/Assets/Prefabs.meta @@ -3,6 +3,6 @@ guid: 4de46bea79d7de647bef2ae33152e3bb folderAsset: yes DefaultImporter: externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Prefabs/BloodParticle.prefab b/Assets/Prefabs/BloodParticle.prefab new file mode 100644 index 0000000..52b230e --- /dev/null +++ b/Assets/Prefabs/BloodParticle.prefab @@ -0,0 +1,128 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &5625006176639346184 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5625006176639346185} + - component: {fileID: 5625006176639346186} + m_Layer: 0 + m_Name: Blood + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &5625006176639346185 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5625006176639346184} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 5625006176899801349} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!212 &5625006176639346186 +SpriteRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5625006176639346184} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: -1695068835 + m_SortingLayer: 1 + m_SortingOrder: 0 + m_Sprite: {fileID: 21300000, guid: ff1fce077e0aafb45be2c369b110d6e0, type: 3} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_FlipX: 0 + m_FlipY: 0 + m_DrawMode: 0 + m_Size: {x: 0.0625, y: 0.0625} + m_AdaptiveModeThreshold: 0.5 + m_SpriteTileMode: 0 + m_WasSpriteAssigned: 1 + m_MaskInteraction: 0 + m_SpriteSortPoint: 0 +--- !u!1 &5625006176899801348 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5625006176899801349} + - component: {fileID: 5625006176899801350} + m_Layer: 0 + m_Name: BloodParticle + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &5625006176899801349 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5625006176899801348} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 5625006176639346185} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &5625006176899801350 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5625006176899801348} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 80990fbdf3a57074b86edf353dcec609, type: 3} + m_Name: + m_EditorClassIdentifier: + LaunchForce: {x: 0, y: 0} + Settled: 0 diff --git a/Assets/Prefabs/BloodParticle.prefab.meta b/Assets/Prefabs/BloodParticle.prefab.meta new file mode 100644 index 0000000..bbcdc9d --- /dev/null +++ b/Assets/Prefabs/BloodParticle.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 3eace925ee10ebb4da4f6d8f8ce22f5a +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scenes/MainScene.unity b/Assets/Scenes/MainScene.unity index cb6cd22..704d35a 100644 --- a/Assets/Scenes/MainScene.unity +++ b/Assets/Scenes/MainScene.unity @@ -120,6 +120,86 @@ NavMeshSettings: debug: m_Flags: 0 m_NavMeshData: {fileID: 0} +--- !u!1 &133033345 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 133033346} + - component: {fileID: 133033347} + m_Layer: 0 + m_Name: Sprite + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &133033346 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 133033345} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1084322079} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!212 &133033347 +SpriteRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 133033345} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_Sprite: {fileID: 21300000, guid: 472874229c563e241bddc073ec2dbb90, type: 3} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_FlipX: 0 + m_FlipY: 0 + m_DrawMode: 0 + m_Size: {x: 1, y: 1} + m_AdaptiveModeThreshold: 0.5 + m_SpriteTileMode: 0 + m_WasSpriteAssigned: 1 + m_MaskInteraction: 0 + m_SpriteSortPoint: 0 --- !u!1 &162528936 GameObject: m_ObjectHideFlags: 0 @@ -253,7 +333,7 @@ BoxCollider2D: adaptiveTiling: 0 m_AutoTiling: 0 serializedVersion: 2 - m_Size: {x: 1, y: 1} + m_Size: {x: 0.5, y: 0.5} m_EdgeRadius: 0 --- !u!50 &162528944 Rigidbody2D: @@ -289,8 +369,136 @@ Transform: m_Children: - {fileID: 1237792229} m_Father: {fileID: 0} - m_RootOrder: 2 + m_RootOrder: 3 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &188743841 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 188743843} + - component: {fileID: 188743842} + m_Layer: 0 + m_Name: BloodLauncher + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &188743842 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 188743841} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 21e2caeaa9214014db9c9a8bebd7e2e3, type: 3} + m_Name: + m_EditorClassIdentifier: + BloodParticlePrefab: {fileID: 5625006176899801348, guid: 3eace925ee10ebb4da4f6d8f8ce22f5a, + type: 3} + ParticleRoot: {fileID: 188743843} + MaxParticles: 10000 + Launch: 0 +--- !u!4 &188743843 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 188743841} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &617699185 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 617699188} + - component: {fileID: 617699187} + - component: {fileID: 617699186} + m_Layer: 0 + m_Name: Wall (1) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!61 &617699186 +BoxCollider2D: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 617699185} + m_Enabled: 1 + m_Density: 1 + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_UsedByEffector: 0 + m_UsedByComposite: 0 + m_Offset: {x: 0, y: 0} + m_SpriteTilingProperty: + border: {x: 0, y: 0, z: 0, w: 0} + pivot: {x: 0, y: 0} + oldSize: {x: 0, y: 0} + newSize: {x: 0, y: 0} + adaptiveTilingThreshold: 0 + drawMode: 0 + adaptiveTiling: 0 + m_AutoTiling: 0 + serializedVersion: 2 + m_Size: {x: 0.5, y: 0.5} + m_EdgeRadius: 0 +--- !u!50 &617699187 +Rigidbody2D: + serializedVersion: 4 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 617699185} + m_BodyType: 2 + m_Simulated: 1 + m_UseFullKinematicContacts: 1 + m_UseAutoMass: 0 + m_Mass: 0.0001 + m_LinearDrag: 0 + m_AngularDrag: 0 + m_GravityScale: 1 + m_Material: {fileID: 0} + m_Interpolate: 1 + m_SleepingMode: 1 + m_CollisionDetection: 0 + m_Constraints: 4 +--- !u!4 &617699188 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 617699185} + m_LocalRotation: {x: -0, y: -0, z: -0.5486572, w: 0.8360474} + m_LocalPosition: {x: -3, y: -0.39, z: 0} + m_LocalScale: {x: 10.137, y: 1, z: 1} + m_Children: + - {fileID: 1776071524} + m_Father: {fileID: 0} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: -66.55} --- !u!1 &867100008 GameObject: m_ObjectHideFlags: 0 @@ -328,7 +536,7 @@ Transform: m_Children: - {fileID: 1000260803} m_Father: {fileID: 0} - m_RootOrder: 1 + m_RootOrder: 2 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!114 &867100010 MonoBehaviour: @@ -405,7 +613,7 @@ BoxCollider2D: adaptiveTiling: 0 m_AutoTiling: 0 serializedVersion: 2 - m_Size: {x: 1, y: 1} + m_Size: {x: 0.5, y: 0.5} m_EdgeRadius: 0 --- !u!114 &867100014 MonoBehaviour: @@ -498,7 +706,7 @@ Camera: m_Enabled: 1 serializedVersion: 2 m_ClearFlags: 1 - m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} + m_BackGroundColor: {r: 0.33962262, g: 0.2612283, b: 0.24830899, a: 0} m_projectionMatrixMode: 1 m_GateFitMode: 2 m_FOVAxisMode: 0 @@ -514,8 +722,8 @@ Camera: near clip plane: 0.3 far clip plane: 1000 field of view: 60 - orthographic: 0 - orthographic size: 5 + orthographic: 1 + orthographic size: 3 m_Depth: -1 m_CullingMask: serializedVersion: 2 @@ -543,7 +751,7 @@ Transform: m_LocalScale: {x: 1, y: 1, z: 1} m_Children: [] m_Father: {fileID: 0} - m_RootOrder: 0 + m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &1000260802 GameObject: @@ -625,6 +833,86 @@ SpriteRenderer: m_WasSpriteAssigned: 1 m_MaskInteraction: 0 m_SpriteSortPoint: 0 +--- !u!1 &1084322076 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1084322079} + - component: {fileID: 1084322078} + - component: {fileID: 1084322077} + m_Layer: 0 + m_Name: Wall + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!61 &1084322077 +BoxCollider2D: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1084322076} + m_Enabled: 1 + m_Density: 1 + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_UsedByEffector: 0 + m_UsedByComposite: 0 + m_Offset: {x: 0, y: 0} + m_SpriteTilingProperty: + border: {x: 0, y: 0, z: 0, w: 0} + pivot: {x: 0, y: 0} + oldSize: {x: 0, y: 0} + newSize: {x: 0, y: 0} + adaptiveTilingThreshold: 0 + drawMode: 0 + adaptiveTiling: 0 + m_AutoTiling: 0 + serializedVersion: 2 + m_Size: {x: 0.5, y: 0.5} + m_EdgeRadius: 0 +--- !u!50 &1084322078 +Rigidbody2D: + serializedVersion: 4 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1084322076} + m_BodyType: 2 + m_Simulated: 1 + m_UseFullKinematicContacts: 1 + m_UseAutoMass: 0 + m_Mass: 0.0001 + m_LinearDrag: 0 + m_AngularDrag: 0 + m_GravityScale: 1 + m_Material: {fileID: 0} + m_Interpolate: 1 + m_SleepingMode: 1 + m_CollisionDetection: 0 + m_Constraints: 4 +--- !u!4 &1084322079 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1084322076} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0.84, y: 1.94, z: 0} + m_LocalScale: {x: 10.137, y: 1, z: 1} + m_Children: + - {fileID: 133033346} + m_Father: {fileID: 0} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &1237792228 GameObject: m_ObjectHideFlags: 0 @@ -705,3 +993,83 @@ SpriteRenderer: m_WasSpriteAssigned: 1 m_MaskInteraction: 0 m_SpriteSortPoint: 0 +--- !u!1 &1776071523 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1776071524} + - component: {fileID: 1776071525} + m_Layer: 0 + m_Name: Sprite + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1776071524 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1776071523} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 617699188} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!212 &1776071525 +SpriteRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1776071523} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_Sprite: {fileID: 21300000, guid: 472874229c563e241bddc073ec2dbb90, type: 3} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_FlipX: 0 + m_FlipY: 0 + m_DrawMode: 0 + m_Size: {x: 1, y: 1} + m_AdaptiveModeThreshold: 0.5 + m_SpriteTileMode: 0 + m_WasSpriteAssigned: 1 + m_MaskInteraction: 0 + m_SpriteSortPoint: 0 diff --git a/Assets/Scripts/AI/AIBehaviour.cs b/Assets/Scripts/AI/AIBehaviour.cs index 3a796f5..c3f9a48 100644 --- a/Assets/Scripts/AI/AIBehaviour.cs +++ b/Assets/Scripts/AI/AIBehaviour.cs @@ -2,7 +2,7 @@ namespace Saltosion.OneWeapon.AI { public abstract class Behaviour : MonoBehaviour { - /* Returns whether or not Exectute() should be called this frame */ + /* Returns whether or not Execute() should be called this frame */ public abstract bool CanBehave(Enemy subject); /* Returns whether or not this was a blocking behaviour, ie. should the behaviour processing be stopped here */ public abstract bool Execute(Enemy subject); diff --git a/Assets/Scripts/AI/Triggers/EnemySighted.cs b/Assets/Scripts/AI/Triggers/EnemySighted.cs index a600f05..d5b18f6 100644 --- a/Assets/Scripts/AI/Triggers/EnemySighted.cs +++ b/Assets/Scripts/AI/Triggers/EnemySighted.cs @@ -6,19 +6,8 @@ namespace Saltosion.OneWeapon.AI.Triggers { public Enemy ClosestEnemy { get; private set; } public override bool IsTriggered(Enemy subject) { - Collider2D[] NearbyEnemies = Physics2D.OverlapCircleAll(subject.transform.position, Radius); - float LowestDistance = float.PositiveInfinity; - bool FoundEnemy = false; - foreach (Collider2D Enemy in NearbyEnemies) { - float Distance = (Enemy.transform.position - subject.transform.position).magnitude; - Enemy EnemyComponent = Enemy.GetComponent(); - if (EnemyComponent != null && Distance < LowestDistance && Enemy.gameObject != gameObject) { - LowestDistance = Distance; - ClosestEnemy = EnemyComponent; - FoundEnemy = true; - } - } - return FoundEnemy; + ClosestEnemy = Util.GetClosestTo(transform, Radius); + return ClosestEnemy != null; } } } diff --git a/Assets/Scripts/BloodLauncher.cs b/Assets/Scripts/BloodLauncher.cs new file mode 100644 index 0000000..b41f306 --- /dev/null +++ b/Assets/Scripts/BloodLauncher.cs @@ -0,0 +1,32 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace Saltosion.OneWeapon { + public class BloodLauncher : MonoBehaviour { + private static BloodLauncher Singleton; + public GameObject BloodParticlePrefab; + public Transform ParticleRoot; + public int MaxParticles; + public bool Launch = false; + + public static void Splatter(Vector2 origin, Vector2 direction, int particleCount, float force, float degrees) { + for (int i = 0; i < particleCount; i++) { + if (Singleton.ParticleRoot.childCount >= Singleton.MaxParticles) { + Destroy(Singleton.ParticleRoot.GetChild((int)(Random.value * Singleton.ParticleRoot.childCount)).gameObject); + } + GameObject Obj = Instantiate(Singleton.BloodParticlePrefab, origin, new Quaternion(), Singleton.ParticleRoot); + BloodParticle Particle = Obj.GetComponent(); + float Intensity = Mathf.Pow(Random.value * force, 1.1f); + float Cone = degrees / 360.0f; + float Offset = Mathf.Atan2(direction.y, direction.x); + float Radians = Offset + Cone * (Random.value - 0.5f) * Mathf.PI * 2.0f; + Particle.LaunchForce = new Vector2(Mathf.Cos(Radians), Mathf.Sin(Radians)) * Intensity; + } + } + + private void Start() { + Singleton = this; + } + } +} diff --git a/Assets/Scripts/BloodLauncher.cs.meta b/Assets/Scripts/BloodLauncher.cs.meta new file mode 100644 index 0000000..616db46 --- /dev/null +++ b/Assets/Scripts/BloodLauncher.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 21e2caeaa9214014db9c9a8bebd7e2e3 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/BloodParticle.cs b/Assets/Scripts/BloodParticle.cs new file mode 100644 index 0000000..35dd822 --- /dev/null +++ b/Assets/Scripts/BloodParticle.cs @@ -0,0 +1,49 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace Saltosion.OneWeapon { + public class BloodParticle : MonoBehaviour { + public Vector2 LaunchForce = new Vector2(); + public bool Settled = false; + + private Rigidbody2D CurrentlyStuckOn = null; + private Vector2 Velocity; + private bool GetsStuck; + + private void Start() { + transform.localScale = new Vector2(0.02f, 0.02f) + Random.value * new Vector2(0.10f, 0.10f); + Velocity = LaunchForce + new Vector2(Random.value - 0.5f, Random.value - 0.5f); + GetsStuck = Random.value > 0.5; + } + + private void FixedUpdate() { + Velocity *= 1.0f - Time.fixedDeltaTime * 20.0f; + if (CurrentlyStuckOn != null) { + bool IsStatic = CurrentlyStuckOn.bodyType == RigidbodyType2D.Static; + Velocity *= 1.0f - Time.fixedDeltaTime * (IsStatic ? 35.0f : 15.0f); + } + if (Velocity.magnitude < 0.1) { + if (CurrentlyStuckOn != null && GetsStuck) { + transform.parent = CurrentlyStuckOn.transform; + } + Destroy(GetComponent()); + Destroy(this); + } + + Vector2 AppliedMovement = Velocity * Time.fixedDeltaTime; + + RaycastHit2D Hit = Physics2D.Raycast(transform.position, AppliedMovement, AppliedMovement.magnitude); + if (Hit.collider != null) { + bool IsStatic = Hit.rigidbody.bodyType == RigidbodyType2D.Static; + Velocity = Velocity.normalized * Mathf.Min(IsStatic ? 15.0f : 60.0f, Velocity.magnitude); + CurrentlyStuckOn = Hit.rigidbody; + AppliedMovement = Velocity * Time.fixedDeltaTime; + } + + Vector2 NewPosition = (Vector2)transform.position + AppliedMovement; + + transform.position = NewPosition; + } + } +} diff --git a/Assets/Scripts/BloodParticle.cs.meta b/Assets/Scripts/BloodParticle.cs.meta new file mode 100644 index 0000000..f331027 --- /dev/null +++ b/Assets/Scripts/BloodParticle.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 80990fbdf3a57074b86edf353dcec609 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Util.cs b/Assets/Scripts/Util.cs new file mode 100644 index 0000000..f03cded --- /dev/null +++ b/Assets/Scripts/Util.cs @@ -0,0 +1,20 @@ +using UnityEngine; + +namespace Saltosion.OneWeapon { + public class Util { + public static T GetClosestTo(Transform target, float radius) where T : MonoBehaviour { + Collider2D[] NearbyColliders = Physics2D.OverlapCircleAll(target.position, radius); + float LowestDistance = float.PositiveInfinity; + T FoundTarget = null; + foreach (Collider2D Collider in NearbyColliders) { + float Distance = (Collider.transform.position - target.position).magnitude; + T TargetComponent = Collider.GetComponent(); + if (TargetComponent != null && Distance < LowestDistance && Collider.gameObject != target.gameObject) { + LowestDistance = Distance; + FoundTarget = TargetComponent; + } + } + return FoundTarget; + } + } +} diff --git a/Assets/Scripts/Util.cs.meta b/Assets/Scripts/Util.cs.meta new file mode 100644 index 0000000..2929160 --- /dev/null +++ b/Assets/Scripts/Util.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: fafe054c33433fc46b620ccfa1a92a3d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/ProjectSettings/TagManager.asset b/ProjectSettings/TagManager.asset index 1c92a78..aec52a6 100644 --- a/ProjectSettings/TagManager.asset +++ b/ProjectSettings/TagManager.asset @@ -41,3 +41,6 @@ TagManager: - name: Default uniqueID: 0 locked: 0 + - name: Blood Particles + uniqueID: 2599898461 + locked: 0