From 66fc71c0e001cff7e2393757213cd3a29841b602 Mon Sep 17 00:00:00 2001 From: Reshmi Ranjith Date: Fri, 29 May 2020 18:25:01 -0500 Subject: [PATCH 1/5] work on tut: add ruby, background tiles, and box --- .../FloorBricksToGrassCorner.png.meta | 244 ++++- .../Sprites/Environmnent/MetalCube.png.meta | 24 +- Game/Assets/Art/Sprites/Ruby.png | Bin 0 -> 10302 bytes Game/Assets/Art/Sprites/Ruby.png.meta | 92 ++ Game/Assets/Art/Sprites/Tile.png | Bin 0 -> 4841 bytes Game/Assets/Art/Sprites/Tile.png.meta | 104 ++ Game/Assets/Art/Tiles.meta | 8 + Game/Assets/Art/Tiles/FirstTile.asset | 36 + Game/Assets/Art/Tiles/FirstTile.asset.meta | 8 + .../Tiles/FloorBricksToGrassCorner_0.asset | 37 + .../FloorBricksToGrassCorner_0.asset.meta | 8 + .../Tiles/FloorBricksToGrassCorner_1.asset | 37 + .../FloorBricksToGrassCorner_1.asset.meta | 8 + .../Tiles/FloorBricksToGrassCorner_2.asset | 37 + .../FloorBricksToGrassCorner_2.asset.meta | 8 + .../Tiles/FloorBricksToGrassCorner_3.asset | 37 + .../FloorBricksToGrassCorner_3.asset.meta | 8 + .../Tiles/FloorBricksToGrassCorner_4.asset | 36 + .../FloorBricksToGrassCorner_4.asset.meta | 8 + .../Tiles/FloorBricksToGrassCorner_5.asset | 37 + .../FloorBricksToGrassCorner_5.asset.meta | 8 + .../Tiles/FloorBricksToGrassCorner_6.asset | 37 + .../FloorBricksToGrassCorner_6.asset.meta | 8 + .../Tiles/FloorBricksToGrassCorner_7.asset | 37 + .../FloorBricksToGrassCorner_7.asset.meta | 8 + .../Tiles/FloorBricksToGrassCorner_8.asset | 37 + .../FloorBricksToGrassCorner_8.asset.meta | 8 + Game/Assets/Art/Tiles/GamePalette.prefab | 321 ++++++ Game/Assets/Art/Tiles/GamePalette.prefab.meta | 7 + Game/Assets/Prefabs.meta | 8 + Game/Assets/Prefabs/MetalCube.prefab | 83 ++ Game/Assets/Prefabs/MetalCube.prefab.meta | 7 + Game/Assets/Prefabs/Ruby.prefab | 118 +++ Game/Assets/Prefabs/Ruby.prefab.meta | 7 + Game/Assets/Scenes/SampleScene.unity | 964 ++++++++++++++++++ Game/Assets/Scripts.meta | 8 + Game/Assets/Scripts/RubyController.cs | 22 + Game/Assets/Scripts/RubyController.cs.meta | 11 + Game/ProjectSettings/GraphicsSettings.asset | 8 +- 39 files changed, 2471 insertions(+), 13 deletions(-) create mode 100644 Game/Assets/Art/Sprites/Ruby.png create mode 100644 Game/Assets/Art/Sprites/Ruby.png.meta create mode 100644 Game/Assets/Art/Sprites/Tile.png create mode 100644 Game/Assets/Art/Sprites/Tile.png.meta create mode 100644 Game/Assets/Art/Tiles.meta create mode 100644 Game/Assets/Art/Tiles/FirstTile.asset create mode 100644 Game/Assets/Art/Tiles/FirstTile.asset.meta create mode 100644 Game/Assets/Art/Tiles/FloorBricksToGrassCorner_0.asset create mode 100644 Game/Assets/Art/Tiles/FloorBricksToGrassCorner_0.asset.meta create mode 100644 Game/Assets/Art/Tiles/FloorBricksToGrassCorner_1.asset create mode 100644 Game/Assets/Art/Tiles/FloorBricksToGrassCorner_1.asset.meta create mode 100644 Game/Assets/Art/Tiles/FloorBricksToGrassCorner_2.asset create mode 100644 Game/Assets/Art/Tiles/FloorBricksToGrassCorner_2.asset.meta create mode 100644 Game/Assets/Art/Tiles/FloorBricksToGrassCorner_3.asset create mode 100644 Game/Assets/Art/Tiles/FloorBricksToGrassCorner_3.asset.meta create mode 100644 Game/Assets/Art/Tiles/FloorBricksToGrassCorner_4.asset create mode 100644 Game/Assets/Art/Tiles/FloorBricksToGrassCorner_4.asset.meta create mode 100644 Game/Assets/Art/Tiles/FloorBricksToGrassCorner_5.asset create mode 100644 Game/Assets/Art/Tiles/FloorBricksToGrassCorner_5.asset.meta create mode 100644 Game/Assets/Art/Tiles/FloorBricksToGrassCorner_6.asset create mode 100644 Game/Assets/Art/Tiles/FloorBricksToGrassCorner_6.asset.meta create mode 100644 Game/Assets/Art/Tiles/FloorBricksToGrassCorner_7.asset create mode 100644 Game/Assets/Art/Tiles/FloorBricksToGrassCorner_7.asset.meta create mode 100644 Game/Assets/Art/Tiles/FloorBricksToGrassCorner_8.asset create mode 100644 Game/Assets/Art/Tiles/FloorBricksToGrassCorner_8.asset.meta create mode 100644 Game/Assets/Art/Tiles/GamePalette.prefab create mode 100644 Game/Assets/Art/Tiles/GamePalette.prefab.meta create mode 100644 Game/Assets/Prefabs.meta create mode 100644 Game/Assets/Prefabs/MetalCube.prefab create mode 100644 Game/Assets/Prefabs/MetalCube.prefab.meta create mode 100644 Game/Assets/Prefabs/Ruby.prefab create mode 100644 Game/Assets/Prefabs/Ruby.prefab.meta create mode 100644 Game/Assets/Scripts.meta create mode 100644 Game/Assets/Scripts/RubyController.cs create mode 100644 Game/Assets/Scripts/RubyController.cs.meta diff --git a/Game/Assets/Art/Sprites/Environmnent/FloorBricksToGrassCorner.png.meta b/Game/Assets/Art/Sprites/Environmnent/FloorBricksToGrassCorner.png.meta index 8442586..5eb054f 100644 --- a/Game/Assets/Art/Sprites/Environmnent/FloorBricksToGrassCorner.png.meta +++ b/Game/Assets/Art/Sprites/Environmnent/FloorBricksToGrassCorner.png.meta @@ -1,9 +1,36 @@ fileFormatVersion: 2 guid: 2ff4c9799e22f1b4c95766cc11f47530 TextureImporter: - fileIDToRecycleName: {} + internalIDToNameTable: + - first: + 213: -8782233188917232318 + second: FloorBricksToGrassCorner_0 + - first: + 213: -1188908986143349998 + second: FloorBricksToGrassCorner_1 + - first: + 213: 4282214546219698364 + second: FloorBricksToGrassCorner_2 + - first: + 213: -8167701438036380033 + second: FloorBricksToGrassCorner_3 + - first: + 213: 26713980818622677 + second: FloorBricksToGrassCorner_4 + - first: + 213: 5000856049214160346 + second: FloorBricksToGrassCorner_5 + - first: + 213: 8432399904259013238 + second: FloorBricksToGrassCorner_6 + - first: + 213: -2181822983326053736 + second: FloorBricksToGrassCorner_7 + - first: + 213: 7434502941098977043 + second: FloorBricksToGrassCorner_8 externalObjects: {} - serializedVersion: 7 + serializedVersion: 11 mipmaps: mipMapMode: 0 enableMipMap: 0 @@ -40,12 +67,12 @@ TextureImporter: nPOTScale: 0 lightmap: 0 compressionQuality: 50 - spriteMode: 1 + spriteMode: 2 spriteExtrude: 1 spriteMeshType: 1 alignment: 0 spritePivot: {x: 0.5, y: 0.5} - spritePixelsToUnits: 100 + spritePixelsToUnits: 64 spriteBorder: {x: 0, y: 0, z: 0, w: 0} spriteGenerateFallbackPhysicsShape: 1 alphaUsage: 1 @@ -57,8 +84,9 @@ TextureImporter: maxTextureSizeSet: 0 compressionQualitySet: 0 textureFormatSet: 0 + applyGammaDecoding: 1 platformSettings: - - serializedVersion: 2 + - serializedVersion: 3 buildTarget: DefaultTexturePlatform maxTextureSize: 2048 resizeAlgorithm: 0 @@ -69,17 +97,221 @@ TextureImporter: 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: 1 spriteSheet: serializedVersion: 2 - sprites: [] + sprites: + - serializedVersion: 2 + name: FloorBricksToGrassCorner_0 + rect: + serializedVersion: 2 + x: 0 + y: 128 + width: 64 + height: 64 + alignment: 0 + pivot: {x: 0, y: 0} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: 0 + bones: [] + spriteID: 24d31f7e17d3f1680800000000000000 + internalID: -8782233188917232318 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: FloorBricksToGrassCorner_1 + rect: + serializedVersion: 2 + x: 64 + y: 128 + width: 64 + height: 64 + alignment: 0 + pivot: {x: 0, y: 0} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: 0 + bones: [] + spriteID: 213e7a28395208fe0800000000000000 + internalID: -1188908986143349998 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: FloorBricksToGrassCorner_2 + rect: + serializedVersion: 2 + x: 128 + y: 128 + width: 64 + height: 64 + alignment: 0 + pivot: {x: 0, y: 0} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: 0 + bones: [] + spriteID: cb88f6f017b7d6b30800000000000000 + internalID: 4282214546219698364 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: FloorBricksToGrassCorner_3 + rect: + serializedVersion: 2 + x: 0 + y: 64 + width: 64 + height: 64 + alignment: 0 + pivot: {x: 0, y: 0} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: 0 + bones: [] + spriteID: f76f46201de76ae80800000000000000 + internalID: -8167701438036380033 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: FloorBricksToGrassCorner_4 + rect: + serializedVersion: 2 + x: 64 + y: 64 + width: 64 + height: 64 + alignment: 0 + pivot: {x: 0, y: 0} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: 0 + bones: [] + spriteID: 5d80b395938ee5000800000000000000 + internalID: 26713980818622677 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: FloorBricksToGrassCorner_5 + rect: + serializedVersion: 2 + x: 128 + y: 64 + width: 64 + height: 64 + alignment: 0 + pivot: {x: 0, y: 0} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: 0 + bones: [] + spriteID: addf542c41c966540800000000000000 + internalID: 5000856049214160346 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: FloorBricksToGrassCorner_6 + rect: + serializedVersion: 2 + x: 0 + y: 0 + width: 64 + height: 64 + alignment: 0 + pivot: {x: 0, y: 0} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: 0 + bones: [] + spriteID: 67a75614907e50570800000000000000 + internalID: 8432399904259013238 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: FloorBricksToGrassCorner_7 + rect: + serializedVersion: 2 + x: 64 + y: 0 + width: 64 + height: 64 + alignment: 0 + pivot: {x: 0, y: 0} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: 0 + bones: [] + spriteID: 89a41147e8b98b1e0800000000000000 + internalID: -2181822983326053736 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: FloorBricksToGrassCorner_8 + rect: + serializedVersion: 2 + x: 128 + y: 0 + width: 64 + height: 64 + alignment: 0 + pivot: {x: 0, y: 0} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: 0 + bones: [] + spriteID: 3172dc50909ac2760800000000000000 + internalID: 7434502941098977043 + vertices: [] + indices: + edges: [] + weights: [] outline: [] physicsShape: [] bones: [] spriteID: 01c942af3f4958941a95786812d17475 + internalID: 0 vertices: [] indices: edges: [] weights: [] + secondaryTextures: [] spritePackingTag: pSDRemoveMatte: 0 pSDShowRemoveMatteOption: 0 diff --git a/Game/Assets/Art/Sprites/Environmnent/MetalCube.png.meta b/Game/Assets/Art/Sprites/Environmnent/MetalCube.png.meta index 8838252..a077d9c 100644 --- a/Game/Assets/Art/Sprites/Environmnent/MetalCube.png.meta +++ b/Game/Assets/Art/Sprites/Environmnent/MetalCube.png.meta @@ -1,9 +1,9 @@ fileFormatVersion: 2 guid: b9244d299d06eea4fa3e8b8b6da46af5 TextureImporter: - fileIDToRecycleName: {} + internalIDToNameTable: [] externalObjects: {} - serializedVersion: 7 + serializedVersion: 11 mipmaps: mipMapMode: 0 enableMipMap: 0 @@ -43,7 +43,7 @@ TextureImporter: spriteMode: 1 spriteExtrude: 1 spriteMeshType: 1 - alignment: 0 + alignment: 7 spritePivot: {x: 0.5, y: 0.5} spritePixelsToUnits: 100 spriteBorder: {x: 0, y: 0, z: 0, w: 0} @@ -57,8 +57,9 @@ TextureImporter: maxTextureSizeSet: 0 compressionQualitySet: 0 textureFormatSet: 0 + applyGammaDecoding: 1 platformSettings: - - serializedVersion: 2 + - serializedVersion: 3 buildTarget: DefaultTexturePlatform maxTextureSize: 2048 resizeAlgorithm: 0 @@ -69,6 +70,19 @@ TextureImporter: 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: 1 spriteSheet: serializedVersion: 2 sprites: [] @@ -76,10 +90,12 @@ TextureImporter: physicsShape: [] bones: [] spriteID: cea16929f090b0d418281de7885b2d18 + internalID: 0 vertices: [] indices: edges: [] weights: [] + secondaryTextures: [] spritePackingTag: pSDRemoveMatte: 0 pSDShowRemoveMatteOption: 0 diff --git a/Game/Assets/Art/Sprites/Ruby.png b/Game/Assets/Art/Sprites/Ruby.png new file mode 100644 index 0000000000000000000000000000000000000000..a88a1732180e6455c1814fc09891fc7f9b7a2ab0 GIT binary patch literal 10302 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 QWB>pF07*qoM6N<$f^)^Q+5i9m literal 0 HcmV?d00001 diff --git a/Game/Assets/Art/Sprites/Ruby.png.meta b/Game/Assets/Art/Sprites/Ruby.png.meta new file mode 100644 index 0000000..bf5f687 --- /dev/null +++ b/Game/Assets/Art/Sprites/Ruby.png.meta @@ -0,0 +1,92 @@ +fileFormatVersion: 2 +guid: d56b6a53bcc4a8445bcc277c7481e8e9 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + 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: -1 + aniso: -1 + mipBias: -100 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 9 + spritePivot: {x: 0.5, y: 0} + spritePixelsToUnits: 100 + 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 + applyGammaDecoding: 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 + 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/Game/Assets/Art/Sprites/Tile.png b/Game/Assets/Art/Sprites/Tile.png new file mode 100644 index 0000000000000000000000000000000000000000..de9080d6570f70cc79e3ee65941813b01f8205d3 GIT binary patch literal 4841 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 Date: Fri, 29 May 2020 19:18:49 -0500 Subject: [PATCH 2/5] add health up obj --- .../Sprites/VFX/CollectibleHealth.png.meta | 24 +++- Game/Assets/Prefabs/CollectibleHealth.prefab | 123 ++++++++++++++++++ .../Prefabs/CollectibleHealth.prefab.meta | 7 + Game/Assets/Prefabs/MetalCube.prefab | 27 ++++ Game/Assets/Prefabs/Ruby.prefab | 29 ++++- Game/Assets/Scripts/HealthCollectible.cs | 19 +++ Game/Assets/Scripts/HealthCollectible.cs.meta | 11 ++ Game/Assets/Scripts/RubyController.cs | 32 ++++- 8 files changed, 261 insertions(+), 11 deletions(-) create mode 100644 Game/Assets/Prefabs/CollectibleHealth.prefab create mode 100644 Game/Assets/Prefabs/CollectibleHealth.prefab.meta create mode 100644 Game/Assets/Scripts/HealthCollectible.cs create mode 100644 Game/Assets/Scripts/HealthCollectible.cs.meta diff --git a/Game/Assets/Art/Sprites/VFX/CollectibleHealth.png.meta b/Game/Assets/Art/Sprites/VFX/CollectibleHealth.png.meta index e12e1e9..e3a8e17 100644 --- a/Game/Assets/Art/Sprites/VFX/CollectibleHealth.png.meta +++ b/Game/Assets/Art/Sprites/VFX/CollectibleHealth.png.meta @@ -1,9 +1,9 @@ fileFormatVersion: 2 guid: 00e89d1057578a342b22583144a5ee03 TextureImporter: - fileIDToRecycleName: {} + internalIDToNameTable: [] externalObjects: {} - serializedVersion: 7 + serializedVersion: 11 mipmaps: mipMapMode: 0 enableMipMap: 0 @@ -45,7 +45,7 @@ TextureImporter: spriteMeshType: 1 alignment: 0 spritePivot: {x: 0.5, y: 0.5} - spritePixelsToUnits: 100 + spritePixelsToUnits: 256 spriteBorder: {x: 0, y: 0, z: 0, w: 0} spriteGenerateFallbackPhysicsShape: 1 alphaUsage: 1 @@ -57,8 +57,9 @@ TextureImporter: maxTextureSizeSet: 0 compressionQualitySet: 0 textureFormatSet: 0 + applyGammaDecoding: 1 platformSettings: - - serializedVersion: 2 + - serializedVersion: 3 buildTarget: DefaultTexturePlatform maxTextureSize: 2048 resizeAlgorithm: 0 @@ -69,6 +70,19 @@ TextureImporter: 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: 1 spriteSheet: serializedVersion: 2 sprites: [] @@ -76,10 +90,12 @@ TextureImporter: physicsShape: [] bones: [] spriteID: 80852af9ea551844f99b7586d53c9da9 + internalID: 0 vertices: [] indices: edges: [] weights: [] + secondaryTextures: [] spritePackingTag: pSDRemoveMatte: 0 pSDShowRemoveMatteOption: 0 diff --git a/Game/Assets/Prefabs/CollectibleHealth.prefab b/Game/Assets/Prefabs/CollectibleHealth.prefab new file mode 100644 index 0000000..5673230 --- /dev/null +++ b/Game/Assets/Prefabs/CollectibleHealth.prefab @@ -0,0 +1,123 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &1231036144908766687 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1231036144908766657} + - component: {fileID: 1231036144908766686} + - component: {fileID: 1231036144908766656} + - component: {fileID: 1231036144908766659} + m_Layer: 0 + m_Name: CollectibleHealth + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1231036144908766657 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1231036144908766687} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -5.94, y: -1.72, 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!212 &1231036144908766686 +SpriteRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1231036144908766687} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 0 + 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: -1 + m_Sprite: {fileID: 21300000, guid: 00e89d1057578a342b22583144a5ee03, type: 3} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_FlipX: 0 + m_FlipY: 0 + m_DrawMode: 0 + m_Size: {x: 2.56, y: 2.56} + m_AdaptiveModeThreshold: 0.5 + m_SpriteTileMode: 0 + m_WasSpriteAssigned: 1 + m_MaskInteraction: 0 + m_SpriteSortPoint: 0 +--- !u!61 &1231036144908766656 +BoxCollider2D: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1231036144908766687} + m_Enabled: 1 + m_Density: 1 + m_Material: {fileID: 0} + m_IsTrigger: 1 + m_UsedByEffector: 0 + m_UsedByComposite: 0 + m_Offset: {x: -0.12731647, y: -0.20195025} + m_SpriteTilingProperty: + border: {x: 0, y: 0, z: 0, w: 0} + pivot: {x: 0.5, y: 0.5} + oldSize: {x: 1, y: 1} + newSize: {x: 2.56, y: 2.56} + adaptiveTilingThreshold: 0.5 + drawMode: 0 + adaptiveTiling: 0 + m_AutoTiling: 0 + serializedVersion: 2 + m_Size: {x: 0.74536705, y: 0.4673196} + m_EdgeRadius: 0 +--- !u!114 &1231036144908766659 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1231036144908766687} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: ed96799092d97924ead6ae3364cf754b, type: 3} + m_Name: + m_EditorClassIdentifier: diff --git a/Game/Assets/Prefabs/CollectibleHealth.prefab.meta b/Game/Assets/Prefabs/CollectibleHealth.prefab.meta new file mode 100644 index 0000000..9e2b081 --- /dev/null +++ b/Game/Assets/Prefabs/CollectibleHealth.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 086bbaf3d0fd1ca41b49301a4c1652f4 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Game/Assets/Prefabs/MetalCube.prefab b/Game/Assets/Prefabs/MetalCube.prefab index d665f59..622c313 100644 --- a/Game/Assets/Prefabs/MetalCube.prefab +++ b/Game/Assets/Prefabs/MetalCube.prefab @@ -10,6 +10,7 @@ GameObject: m_Component: - component: {fileID: 7415447141756540469} - component: {fileID: 7415447141756540468} + - component: {fileID: 6254376338149186130} m_Layer: 0 m_Name: MetalCube m_TagString: Untagged @@ -81,3 +82,29 @@ SpriteRenderer: m_WasSpriteAssigned: 1 m_MaskInteraction: 0 m_SpriteSortPoint: 0 +--- !u!61 &6254376338149186130 +BoxCollider2D: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7415447141756540467} + m_Enabled: 1 + m_Density: 1 + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_UsedByEffector: 0 + m_UsedByComposite: 0 + m_Offset: {x: -0.2029078, y: 0.22657585} + m_SpriteTilingProperty: + border: {x: 0, y: 0, z: 0, w: 0} + pivot: {x: 0.5, y: 0} + oldSize: {x: 1.31, y: 0.98} + newSize: {x: 1.31, y: 0.98} + adaptiveTilingThreshold: 0.5 + drawMode: 0 + adaptiveTiling: 0 + m_AutoTiling: 0 + serializedVersion: 2 + m_Size: {x: 0.868587, y: 0.4531517} + m_EdgeRadius: 0 diff --git a/Game/Assets/Prefabs/Ruby.prefab b/Game/Assets/Prefabs/Ruby.prefab index 48256bb..124cba4 100644 --- a/Game/Assets/Prefabs/Ruby.prefab +++ b/Game/Assets/Prefabs/Ruby.prefab @@ -12,6 +12,7 @@ GameObject: - component: {fileID: 1104436209475952569} - component: {fileID: 1104436209475952575} - component: {fileID: 6734789858314435437} + - component: {fileID: 7126459271891590545} m_Layer: 0 m_Name: Ruby m_TagString: Untagged @@ -115,4 +116,30 @@ Rigidbody2D: m_Interpolate: 0 m_SleepingMode: 1 m_CollisionDetection: 0 - m_Constraints: 0 + m_Constraints: 4 +--- !u!61 &7126459271891590545 +BoxCollider2D: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1104436209475952570} + m_Enabled: 1 + m_Density: 1 + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_UsedByEffector: 0 + m_UsedByComposite: 0 + m_Offset: {x: -0.019667625, y: 0.18371445} + m_SpriteTilingProperty: + border: {x: 0, y: 0, z: 0, w: 0} + pivot: {x: 0.5, y: 0} + oldSize: {x: 1.28, y: 1.28} + newSize: {x: 1.28, y: 1.28} + adaptiveTilingThreshold: 0.5 + drawMode: 0 + adaptiveTiling: 0 + m_AutoTiling: 0 + serializedVersion: 2 + m_Size: {x: 0.3438282, y: 0.3674289} + m_EdgeRadius: 0 diff --git a/Game/Assets/Scripts/HealthCollectible.cs b/Game/Assets/Scripts/HealthCollectible.cs new file mode 100644 index 0000000..bc55ea2 --- /dev/null +++ b/Game/Assets/Scripts/HealthCollectible.cs @@ -0,0 +1,19 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class HealthCollectible : MonoBehaviour +{ + void OnTriggerEnter2D(Collider2D other) + { + RubyController controller = other.GetComponent(); + if (controller != null) + { + if (controller.health < controller.maxHealth) + { + controller.ChangeHealth(1); + Destroy(gameObject); + } + } + } +} diff --git a/Game/Assets/Scripts/HealthCollectible.cs.meta b/Game/Assets/Scripts/HealthCollectible.cs.meta new file mode 100644 index 0000000..f55db36 --- /dev/null +++ b/Game/Assets/Scripts/HealthCollectible.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ed96799092d97924ead6ae3364cf754b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Game/Assets/Scripts/RubyController.cs b/Game/Assets/Scripts/RubyController.cs index c604df0..7ebffcd 100644 --- a/Game/Assets/Scripts/RubyController.cs +++ b/Game/Assets/Scripts/RubyController.cs @@ -4,19 +4,39 @@ public class RubyController : MonoBehaviour { + public int maxHealth = 5; + public int health { get { return currentHealth; } } + int currentHealth; + + Rigidbody2D rigidbody2d; + float horizontal; + float vertical; // Start is called before the first frame update void Start() { + rigidbody2d = GetComponent(); + currentHealth = maxHealth; } // Update is called once per frame void Update() { - float horizontal = Input.GetAxis("Horizontal"); - float vertical = Input.GetAxis("Vertical"); - Vector2 position = transform.position; - position.x = position.x + 3f * horizontal * Time.deltaTime; - position.y = position.y + 3f * vertical * Time.deltaTime; - transform.position = position; + horizontal = Input.GetAxis("Horizontal"); + vertical = Input.GetAxis("Vertical"); + } + + void FixedUpdate() + { + Vector2 position = rigidbody2d.position; + position.x = position.x + 3.0f * horizontal * Time.deltaTime; + position.y = position.y + 3.0f * vertical * Time.deltaTime; + + rigidbody2d.MovePosition(position); + } + + public void ChangeHealth(int amount) + { + currentHealth = Mathf.Clamp(currentHealth + amount, 0, maxHealth); // clamp keeps value between 0-max + Debug.Log(currentHealth + "/" + maxHealth); } } From 84ca853c755fea6c5cafa0c59af62100ece1baf2 Mon Sep 17 00:00:00 2001 From: Reshmi Ranjith Date: Fri, 29 May 2020 19:26:00 -0500 Subject: [PATCH 3/5] add in damgable obj - make ruby not sleep setting --- .../Sprites/Environmnent/Damageable.png.meta | 24 +++++++++++++++---- Game/Assets/Scripts/Damageable.cs | 15 ++++++++++++ Game/Assets/Scripts/Damageable.cs.meta | 11 +++++++++ 3 files changed, 46 insertions(+), 4 deletions(-) create mode 100644 Game/Assets/Scripts/Damageable.cs create mode 100644 Game/Assets/Scripts/Damageable.cs.meta diff --git a/Game/Assets/Art/Sprites/Environmnent/Damageable.png.meta b/Game/Assets/Art/Sprites/Environmnent/Damageable.png.meta index a42733b..553ef1b 100644 --- a/Game/Assets/Art/Sprites/Environmnent/Damageable.png.meta +++ b/Game/Assets/Art/Sprites/Environmnent/Damageable.png.meta @@ -1,9 +1,9 @@ fileFormatVersion: 2 guid: 0e15259342e82ee4f813807e5b28c0f3 TextureImporter: - fileIDToRecycleName: {} + internalIDToNameTable: [] externalObjects: {} - serializedVersion: 7 + serializedVersion: 11 mipmaps: mipMapMode: 0 enableMipMap: 0 @@ -45,7 +45,7 @@ TextureImporter: spriteMeshType: 1 alignment: 0 spritePivot: {x: 0.5, y: 0.5} - spritePixelsToUnits: 100 + spritePixelsToUnits: 256 spriteBorder: {x: 0, y: 0, z: 0, w: 0} spriteGenerateFallbackPhysicsShape: 1 alphaUsage: 1 @@ -57,8 +57,9 @@ TextureImporter: maxTextureSizeSet: 0 compressionQualitySet: 0 textureFormatSet: 0 + applyGammaDecoding: 1 platformSettings: - - serializedVersion: 2 + - serializedVersion: 3 buildTarget: DefaultTexturePlatform maxTextureSize: 2048 resizeAlgorithm: 0 @@ -69,6 +70,19 @@ TextureImporter: 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: 1 spriteSheet: serializedVersion: 2 sprites: [] @@ -76,10 +90,12 @@ TextureImporter: physicsShape: [] bones: [] spriteID: 8b9902c3e8b5df3418c144cae6966c16 + internalID: 0 vertices: [] indices: edges: [] weights: [] + secondaryTextures: [] spritePackingTag: pSDRemoveMatte: 0 pSDShowRemoveMatteOption: 0 diff --git a/Game/Assets/Scripts/Damageable.cs b/Game/Assets/Scripts/Damageable.cs new file mode 100644 index 0000000..cc93749 --- /dev/null +++ b/Game/Assets/Scripts/Damageable.cs @@ -0,0 +1,15 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class Damageable : MonoBehaviour +{ + void OnTriggerStay2D(Collider2D other) + { + RubyController controller = other.GetComponent(); + if (controller != null) + { + controller.ChangeHealth(-1); + } + } +} diff --git a/Game/Assets/Scripts/Damageable.cs.meta b/Game/Assets/Scripts/Damageable.cs.meta new file mode 100644 index 0000000..5d0063e --- /dev/null +++ b/Game/Assets/Scripts/Damageable.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 71f5821f34d274e429fdda73aac60e47 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: From e00eb348216ea3384b91b6b76734709dfa05e35e Mon Sep 17 00:00:00 2001 From: Reshmi Ranjith Date: Fri, 29 May 2020 19:41:00 -0500 Subject: [PATCH 4/5] add enemey --- Game/Assets/Art/Sprites/Bot.png | Bin 0 -> 44984 bytes Game/Assets/Art/Sprites/Bot.png.meta | 104 +++++++++++++++++ Game/Assets/Prefabs/Damageable.prefab | 123 ++++++++++++++++++++ Game/Assets/Prefabs/Damageable.prefab.meta | 7 ++ Game/Assets/Scripts/EnemyController.cs | 48 ++++++++ Game/Assets/Scripts/EnemyController.cs.meta | 11 ++ Game/Assets/Scripts/RubyController.cs | 32 ++++- 7 files changed, 321 insertions(+), 4 deletions(-) create mode 100644 Game/Assets/Art/Sprites/Bot.png create mode 100644 Game/Assets/Art/Sprites/Bot.png.meta create mode 100644 Game/Assets/Prefabs/Damageable.prefab create mode 100644 Game/Assets/Prefabs/Damageable.prefab.meta create mode 100644 Game/Assets/Scripts/EnemyController.cs create mode 100644 Game/Assets/Scripts/EnemyController.cs.meta diff --git a/Game/Assets/Art/Sprites/Bot.png b/Game/Assets/Art/Sprites/Bot.png new file mode 100644 index 0000000000000000000000000000000000000000..8dccae87653adbb34a08bdfddee9e3fd04104506 GIT binary patch literal 44984 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 W1(g$bjpz{IM_yW4s#d}@`2PT)@`@q= literal 0 HcmV?d00001 diff --git a/Game/Assets/Art/Sprites/Bot.png.meta b/Game/Assets/Art/Sprites/Bot.png.meta new file mode 100644 index 0000000..2f856a2 --- /dev/null +++ b/Game/Assets/Art/Sprites/Bot.png.meta @@ -0,0 +1,104 @@ +fileFormatVersion: 2 +guid: 34abbd95a6d1e554cb62720610e25881 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + 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: -1 + 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: 256 + 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 + applyGammaDecoding: 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 + 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/Game/Assets/Prefabs/Damageable.prefab b/Game/Assets/Prefabs/Damageable.prefab new file mode 100644 index 0000000..d93768b --- /dev/null +++ b/Game/Assets/Prefabs/Damageable.prefab @@ -0,0 +1,123 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &3107640377283505101 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3107640377283505097} + - component: {fileID: 3107640377283505096} + - component: {fileID: 3107640377283505099} + - component: {fileID: 3107640377283505098} + m_Layer: 0 + m_Name: Damageable + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &3107640377283505097 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3107640377283505101} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -6.15, 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!212 &3107640377283505096 +SpriteRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3107640377283505101} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 0 + 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: 0e15259342e82ee4f813807e5b28c0f3, type: 3} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_FlipX: 0 + m_FlipY: 0 + m_DrawMode: 0 + m_Size: {x: 2.56, y: 2.56} + m_AdaptiveModeThreshold: 0.5 + m_SpriteTileMode: 0 + m_WasSpriteAssigned: 1 + m_MaskInteraction: 0 + m_SpriteSortPoint: 0 +--- !u!114 &3107640377283505099 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3107640377283505101} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 71f5821f34d274e429fdda73aac60e47, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!61 &3107640377283505098 +BoxCollider2D: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3107640377283505101} + m_Enabled: 1 + m_Density: 1 + m_Material: {fileID: 0} + m_IsTrigger: 1 + 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.5, y: 0.5} + oldSize: {x: 1, y: 1} + newSize: {x: 2.56, y: 2.56} + adaptiveTilingThreshold: 0.5 + drawMode: 0 + adaptiveTiling: 0 + m_AutoTiling: 0 + serializedVersion: 2 + m_Size: {x: 1, y: 1} + m_EdgeRadius: 0 diff --git a/Game/Assets/Prefabs/Damageable.prefab.meta b/Game/Assets/Prefabs/Damageable.prefab.meta new file mode 100644 index 0000000..8c9ff85 --- /dev/null +++ b/Game/Assets/Prefabs/Damageable.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: b8f65777069e47445914c76a383d6df3 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Game/Assets/Scripts/EnemyController.cs b/Game/Assets/Scripts/EnemyController.cs new file mode 100644 index 0000000..e44abfe --- /dev/null +++ b/Game/Assets/Scripts/EnemyController.cs @@ -0,0 +1,48 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class EnemyController : MonoBehaviour +{ + public float speed = 2.0f; + public bool vertical; + public float changeTime = 1.0f; + + Rigidbody2D rigidbody2D; + float timer; + int direction = 1; + + // Start is called before the first frame update + void Start() + { + rigidbody2D = GetComponent(); + timer = changeTime; + } + + void Update() + { + timer -= Time.deltaTime; + + if (timer < 0) + { + direction = -direction; + timer = changeTime; + } + } + + void FixedUpdate() + { + Vector2 position = rigidbody2D.position; + + if (vertical) + { + position.y = position.y + Time.deltaTime * speed * direction; ; + } + else + { + position.x = position.x + Time.deltaTime * speed * direction; ; + } + + rigidbody2D.MovePosition(position); + } +} \ No newline at end of file diff --git a/Game/Assets/Scripts/EnemyController.cs.meta b/Game/Assets/Scripts/EnemyController.cs.meta new file mode 100644 index 0000000..a5591e7 --- /dev/null +++ b/Game/Assets/Scripts/EnemyController.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: bf0e33ca2a637fa418d400954b015433 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Game/Assets/Scripts/RubyController.cs b/Game/Assets/Scripts/RubyController.cs index 7ebffcd..5e03a51 100644 --- a/Game/Assets/Scripts/RubyController.cs +++ b/Game/Assets/Scripts/RubyController.cs @@ -4,13 +4,21 @@ public class RubyController : MonoBehaviour { + public float speed = 3.0f; + public int maxHealth = 5; + public float timeInvincible = 2.0f; + public int health { get { return currentHealth; } } int currentHealth; + bool isInvincible; + float invincibleTimer; + Rigidbody2D rigidbody2d; float horizontal; float vertical; + // Start is called before the first frame update void Start() { @@ -23,20 +31,36 @@ void Update() { horizontal = Input.GetAxis("Horizontal"); vertical = Input.GetAxis("Vertical"); + + if (isInvincible) + { + invincibleTimer -= Time.deltaTime; + if (invincibleTimer < 0) + isInvincible = false; + } } void FixedUpdate() { Vector2 position = rigidbody2d.position; - position.x = position.x + 3.0f * horizontal * Time.deltaTime; - position.y = position.y + 3.0f * vertical * Time.deltaTime; + position.x = position.x + speed * horizontal * Time.deltaTime; + position.y = position.y + speed * vertical * Time.deltaTime; rigidbody2d.MovePosition(position); } public void ChangeHealth(int amount) { - currentHealth = Mathf.Clamp(currentHealth + amount, 0, maxHealth); // clamp keeps value between 0-max + if (amount < 0) + { + if (isInvincible) + return; + + isInvincible = true; + invincibleTimer = timeInvincible; + } + + currentHealth = Mathf.Clamp(currentHealth + amount, 0, maxHealth); Debug.Log(currentHealth + "/" + maxHealth); } -} +} \ No newline at end of file From 1a225210125111a0770449cff02345b0aa24e01b Mon Sep 17 00:00:00 2001 From: Reshmi Ranjith Date: Fri, 29 May 2020 20:25:36 -0500 Subject: [PATCH 5/5] animation start --- Game/Assets/Art/Animations/Right_Run.anim | 53 ++++++ .../Assets/Art/Animations/Right_Run.anim.meta | 8 + Game/Assets/Art/Animations/Robot.controller | 12 ++ .../Art/Animations/Robot.controller.meta | 8 + Game/Assets/Art/Animations/RobotLeft.anim | 53 ++++++ .../Assets/Art/Animations/RobotLeft.anim.meta | 8 + Game/Assets/Prefabs/Bot.prefab | 168 ++++++++++++++++++ Game/Assets/Prefabs/Bot.prefab.meta | 7 + Game/Assets/Scripts/EnemyController.cs | 9 + 9 files changed, 326 insertions(+) create mode 100644 Game/Assets/Art/Animations/Right_Run.anim create mode 100644 Game/Assets/Art/Animations/Right_Run.anim.meta create mode 100644 Game/Assets/Art/Animations/Robot.controller create mode 100644 Game/Assets/Art/Animations/Robot.controller.meta create mode 100644 Game/Assets/Art/Animations/RobotLeft.anim create mode 100644 Game/Assets/Art/Animations/RobotLeft.anim.meta create mode 100644 Game/Assets/Prefabs/Bot.prefab create mode 100644 Game/Assets/Prefabs/Bot.prefab.meta diff --git a/Game/Assets/Art/Animations/Right_Run.anim b/Game/Assets/Art/Animations/Right_Run.anim new file mode 100644 index 0000000..241aa01 --- /dev/null +++ b/Game/Assets/Art/Animations/Right_Run.anim @@ -0,0 +1,53 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!74 &7400000 +AnimationClip: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Right_Run + serializedVersion: 6 + m_Legacy: 0 + m_Compressed: 0 + m_UseHighQualityCurve: 1 + m_RotationCurves: [] + m_CompressedRotationCurves: [] + m_EulerCurves: [] + m_PositionCurves: [] + m_ScaleCurves: [] + m_FloatCurves: [] + m_PPtrCurves: [] + m_SampleRate: 60 + m_WrapMode: 0 + m_Bounds: + m_Center: {x: 0, y: 0, z: 0} + m_Extent: {x: 0, y: 0, z: 0} + m_ClipBindingConstant: + genericBindings: [] + pptrCurveMapping: [] + m_AnimationClipSettings: + serializedVersion: 2 + m_AdditiveReferencePoseClip: {fileID: 0} + m_AdditiveReferencePoseTime: 0 + m_StartTime: 0 + m_StopTime: 1 + m_OrientationOffsetY: 0 + m_Level: 0 + m_CycleOffset: 0 + m_HasAdditiveReferencePose: 0 + m_LoopTime: 1 + m_LoopBlend: 0 + m_LoopBlendOrientation: 0 + m_LoopBlendPositionY: 0 + m_LoopBlendPositionXZ: 0 + m_KeepOriginalOrientation: 0 + m_KeepOriginalPositionY: 1 + m_KeepOriginalPositionXZ: 0 + m_HeightFromFeet: 0 + m_Mirror: 0 + m_EditorCurves: [] + m_EulerEditorCurves: [] + m_HasGenericRootTransform: 0 + m_HasMotionFloatCurves: 0 + m_Events: [] diff --git a/Game/Assets/Art/Animations/Right_Run.anim.meta b/Game/Assets/Art/Animations/Right_Run.anim.meta new file mode 100644 index 0000000..e8bcc80 --- /dev/null +++ b/Game/Assets/Art/Animations/Right_Run.anim.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: be250724a779a3e41a530481ecaf134c +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Game/Assets/Art/Animations/Robot.controller b/Game/Assets/Art/Animations/Robot.controller new file mode 100644 index 0000000..069bf53 --- /dev/null +++ b/Game/Assets/Art/Animations/Robot.controller @@ -0,0 +1,12 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!91 &9100000 +AnimatorController: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Robot + serializedVersion: 5 + m_AnimatorParameters: [] + m_AnimatorLayers: [] diff --git a/Game/Assets/Art/Animations/Robot.controller.meta b/Game/Assets/Art/Animations/Robot.controller.meta new file mode 100644 index 0000000..f560d11 --- /dev/null +++ b/Game/Assets/Art/Animations/Robot.controller.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c800d86f43ed15c4fb7929558fef0abc +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Game/Assets/Art/Animations/RobotLeft.anim b/Game/Assets/Art/Animations/RobotLeft.anim new file mode 100644 index 0000000..ffc5de4 --- /dev/null +++ b/Game/Assets/Art/Animations/RobotLeft.anim @@ -0,0 +1,53 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!74 &7400000 +AnimationClip: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: RobotLeft + serializedVersion: 6 + m_Legacy: 0 + m_Compressed: 0 + m_UseHighQualityCurve: 1 + m_RotationCurves: [] + m_CompressedRotationCurves: [] + m_EulerCurves: [] + m_PositionCurves: [] + m_ScaleCurves: [] + m_FloatCurves: [] + m_PPtrCurves: [] + m_SampleRate: 60 + m_WrapMode: 0 + m_Bounds: + m_Center: {x: 0, y: 0, z: 0} + m_Extent: {x: 0, y: 0, z: 0} + m_ClipBindingConstant: + genericBindings: [] + pptrCurveMapping: [] + m_AnimationClipSettings: + serializedVersion: 2 + m_AdditiveReferencePoseClip: {fileID: 0} + m_AdditiveReferencePoseTime: 0 + m_StartTime: 0 + m_StopTime: 1 + m_OrientationOffsetY: 0 + m_Level: 0 + m_CycleOffset: 0 + m_HasAdditiveReferencePose: 0 + m_LoopTime: 1 + m_LoopBlend: 0 + m_LoopBlendOrientation: 0 + m_LoopBlendPositionY: 0 + m_LoopBlendPositionXZ: 0 + m_KeepOriginalOrientation: 0 + m_KeepOriginalPositionY: 1 + m_KeepOriginalPositionXZ: 0 + m_HeightFromFeet: 0 + m_Mirror: 0 + m_EditorCurves: [] + m_EulerEditorCurves: [] + m_HasGenericRootTransform: 0 + m_HasMotionFloatCurves: 0 + m_Events: [] diff --git a/Game/Assets/Art/Animations/RobotLeft.anim.meta b/Game/Assets/Art/Animations/RobotLeft.anim.meta new file mode 100644 index 0000000..02a8b6b --- /dev/null +++ b/Game/Assets/Art/Animations/RobotLeft.anim.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 44e44b930ae9b43448439f28d5ab0b47 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Game/Assets/Prefabs/Bot.prefab b/Game/Assets/Prefabs/Bot.prefab new file mode 100644 index 0000000..b18816a --- /dev/null +++ b/Game/Assets/Prefabs/Bot.prefab @@ -0,0 +1,168 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &54265110414296458 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 54265110414296462} + - component: {fileID: 54265110414296457} + - component: {fileID: 54265110414296456} + - component: {fileID: 54265110414296459} + - component: {fileID: 54265110414296463} + - component: {fileID: 467278732707867738} + m_Layer: 0 + m_Name: Bot + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &54265110414296462 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 54265110414296458} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -2.602459, y: -2.7459013, 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!212 &54265110414296457 +SpriteRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 54265110414296458} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 0 + 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: 34abbd95a6d1e554cb62720610e25881, type: 3} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_FlipX: 0 + m_FlipY: 0 + m_DrawMode: 0 + m_Size: {x: 2.56, y: 2.56} + m_AdaptiveModeThreshold: 0.5 + m_SpriteTileMode: 0 + m_WasSpriteAssigned: 1 + m_MaskInteraction: 0 + m_SpriteSortPoint: 0 +--- !u!50 &54265110414296456 +Rigidbody2D: + serializedVersion: 4 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 54265110414296458} + m_BodyType: 0 + m_Simulated: 1 + m_UseFullKinematicContacts: 0 + m_UseAutoMass: 0 + m_Mass: 1 + m_LinearDrag: 0 + m_AngularDrag: 0.05 + m_GravityScale: 0 + m_Material: {fileID: 0} + m_Interpolate: 0 + m_SleepingMode: 1 + m_CollisionDetection: 0 + m_Constraints: 4 +--- !u!61 &54265110414296459 +BoxCollider2D: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 54265110414296458} + m_Enabled: 1 + m_Density: 1 + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_UsedByEffector: 0 + m_UsedByComposite: 0 + m_Offset: {x: -0.0058535337, y: -0.308779} + m_SpriteTilingProperty: + border: {x: 0, y: 0, z: 0, w: 0} + pivot: {x: 0.5, y: 0.5} + oldSize: {x: 1, y: 1} + newSize: {x: 2.56, y: 2.56} + adaptiveTilingThreshold: 0.5 + drawMode: 0 + adaptiveTiling: 0 + m_AutoTiling: 0 + serializedVersion: 2 + m_Size: {x: 0.3443935, y: 0.31219864} + m_EdgeRadius: 0 +--- !u!114 &54265110414296463 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 54265110414296458} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: bf0e33ca2a637fa418d400954b015433, type: 3} + m_Name: + m_EditorClassIdentifier: + speed: 2 + vertical: 1 + changeTime: 3 +--- !u!95 &467278732707867738 +Animator: + serializedVersion: 3 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 54265110414296458} + m_Enabled: 1 + m_Avatar: {fileID: 0} + m_Controller: {fileID: 9100000, guid: c800d86f43ed15c4fb7929558fef0abc, type: 2} + m_CullingMode: 0 + m_UpdateMode: 0 + m_ApplyRootMotion: 0 + m_LinearVelocityBlending: 0 + m_WarningMessage: + m_HasTransformHierarchy: 1 + m_AllowConstantClipSamplingOptimization: 1 + m_KeepAnimatorControllerStateOnDisable: 0 diff --git a/Game/Assets/Prefabs/Bot.prefab.meta b/Game/Assets/Prefabs/Bot.prefab.meta new file mode 100644 index 0000000..0d2b521 --- /dev/null +++ b/Game/Assets/Prefabs/Bot.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 9e395f8b72d35474ca47196759f764bb +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Game/Assets/Scripts/EnemyController.cs b/Game/Assets/Scripts/EnemyController.cs index e44abfe..298b453 100644 --- a/Game/Assets/Scripts/EnemyController.cs +++ b/Game/Assets/Scripts/EnemyController.cs @@ -45,4 +45,13 @@ void FixedUpdate() rigidbody2D.MovePosition(position); } + + void OnCollisionEnter2D(Collision2D other) + { + RubyController player = other.gameObject.GetComponent(); + if (player != null) + { + player.ChangeHealth(-1); + } + } } \ No newline at end of file