movement, automated enemies, automated players, basic abilities

This commit is contained in:
Sylvia 2026-06-09 05:27:47 -07:00
parent 23576e137e
commit f4344c4700
31 changed files with 4343 additions and 70 deletions

8
Assets/Materials.meta Normal file
View file

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: ea41ebd75f30b3616a0a5d07d2e30c82
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View file

@ -0,0 +1,14 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!62 &6200000
PhysicsMaterial2D:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: NoWallSlide
serializedVersion: 2
friction: 0
bounciness: 0
m_FrictionCombine: 1
m_BounceCombine: 4

View file

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 9a4840caa2329f0dc847e7d99cba3595
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 6200000
userData:
assetBundleName:
assetBundleVariant:

View file

@ -0,0 +1,50 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!21 &2100000
Material:
serializedVersion: 8
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: Trailmaterial
m_Shader: {fileID: 4800000, guid: e260cfa7296ee7642b167f1eb5be5023, type: 3}
m_Parent: {fileID: 0}
m_ModifiedSerializedProperties: 0
m_ValidKeywords: []
m_InvalidKeywords: []
m_LightmapFlags: 4
m_EnableInstancingVariants: 0
m_DoubleSidedGI: 0
m_CustomRenderQueue: -1
stringTagMap: {}
disabledShaderPasses: []
m_LockedProperties:
m_SavedProperties:
serializedVersion: 3
m_TexEnvs:
- _AlphaTex:
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}
- _MaskTex:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _NormalMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Ints: []
m_Floats:
- _EnableExternalAlpha: 0
- _ZWrite: 0
m_Colors:
- _Color: {r: 1, g: 1, b: 1, a: 1}
- _RendererColor: {r: 1, g: 1, b: 1, a: 1}
m_BuildTextureStacks: []
m_AllowLocking: 1

View file

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 1bccb032d4deafa7ebeb643ec851d685
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 2100000
userData:
assetBundleName:
assetBundleVariant:

View file

@ -0,0 +1,355 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &573907723776367215
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 7532003904038684937}
- component: {fileID: 3501477379343095732}
m_Layer: 9
m_Name: Trail
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &7532003904038684937
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 573907723776367215}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: -1.613, y: 0.029, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 8276182526760960180}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!96 &3501477379343095732
TrailRenderer:
serializedVersion: 3
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 573907723776367215}
m_Enabled: 1
m_CastShadows: 1
m_ReceiveShadows: 1
m_DynamicOccludee: 1
m_StaticShadowCaster: 0
m_MotionVectors: 0
m_LightProbeUsage: 0
m_ReflectionProbeUsage: 0
m_RayTracingMode: 0
m_RayTraceProcedural: 0
m_RayTracingAccelStructBuildFlagsOverride: 0
m_RayTracingAccelStructBuildFlags: 1
m_SmallMeshCulling: 1
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
- {fileID: 2100000, guid: 1bccb032d4deafa7ebeb643ec851d685, type: 2}
m_StaticBatchInfo:
firstSubMesh: 0
subMeshCount: 0
m_StaticBatchRoot: {fileID: 0}
m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_ReceiveGI: 1
m_PreserveUVs: 0
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0
m_StitchLightmapSeams: 1
m_SelectedEditorRenderState: 3
m_MinimumChartSize: 4
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
m_LightmapParameters: {fileID: 0}
m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 0
m_Time: 0.2
m_PreviewTimeScale: 1
m_Parameters:
serializedVersion: 3
widthMultiplier: 1
widthCurve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: 0.033161342
inSlope: 0
outSlope: 0
tangentMode: 0
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
colorGradient:
serializedVersion: 2
key0: {r: 1, g: 1, b: 1, a: 1}
key1: {r: 1, g: 1, b: 1, a: 1}
key2: {r: 0, g: 0, b: 0, a: 0}
key3: {r: 0, g: 0, b: 0, a: 0}
key4: {r: 0, g: 0, b: 0, a: 0}
key5: {r: 0, g: 0, b: 0, a: 0}
key6: {r: 0, g: 0, b: 0, a: 0}
key7: {r: 0, g: 0, b: 0, a: 0}
ctime0: 0
ctime1: 65535
ctime2: 0
ctime3: 0
ctime4: 0
ctime5: 0
ctime6: 0
ctime7: 0
atime0: 0
atime1: 65535
atime2: 0
atime3: 0
atime4: 0
atime5: 0
atime6: 0
atime7: 0
m_Mode: 0
m_ColorSpace: -1
m_NumColorKeys: 2
m_NumAlphaKeys: 2
numCornerVertices: 0
numCapVertices: 0
alignment: 0
textureMode: 0
textureScale: {x: 1, y: 1}
shadowBias: 0.5
generateLightingData: 0
m_MinVertexDistance: 0.1
m_MaskInteraction: 0
m_Autodestruct: 0
m_Emitting: 1
m_ApplyActiveColorSpace: 1
--- !u!1 &1397160589285566020
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 8276182526760960180}
- component: {fileID: 4448864156700554004}
m_Layer: 9
m_Name: Sprite
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &8276182526760960180
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1397160589285566020}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 7532003904038684937}
m_Father: {fileID: 409438162538422265}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!212 &4448864156700554004
SpriteRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1397160589285566020}
m_Enabled: 1
m_CastShadows: 0
m_ReceiveShadows: 0
m_DynamicOccludee: 1
m_StaticShadowCaster: 0
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 0
m_RayTraceProcedural: 0
m_RayTracingAccelStructBuildFlagsOverride: 0
m_RayTracingAccelStructBuildFlags: 1
m_SmallMeshCulling: 1
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
- {fileID: 2100000, guid: a97c105638bdf8b4a8650670310a4cd3, type: 2}
m_StaticBatchInfo:
firstSubMesh: 0
subMeshCount: 0
m_StaticBatchRoot: {fileID: 0}
m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_ReceiveGI: 1
m_PreserveUVs: 0
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0
m_StitchLightmapSeams: 1
m_SelectedEditorRenderState: 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: 9001305561785877478, guid: 432f2db64ad2e7706930421f9855870a, type: 3}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_FlipX: 1
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 &5011741298713620040
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 409438162538422265}
- component: {fileID: 4968744362001082579}
- component: {fileID: 395713896947917936}
- component: {fileID: 3775478344909233634}
m_Layer: 9
m_Name: Projectile
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &409438162538422265
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5011741298713620040}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 0.15, y: 0.15, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 8276182526760960180}
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &4968744362001082579
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5011741298713620040}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 3aed04444af8b4d13b5fe9031150044a, type: 3}
m_Name:
m_EditorClassIdentifier:
owner: {fileID: 0}
damage: 0
lifetime: 0
pierceAmount: 0
speed: 0
rb: {fileID: 395713896947917936}
--- !u!50 &395713896947917936
Rigidbody2D:
serializedVersion: 5
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5011741298713620040}
m_BodyType: 0
m_Simulated: 1
m_UseFullKinematicContacts: 0
m_UseAutoMass: 0
m_Mass: 1
m_LinearDamping: 0
m_AngularDamping: 0.05
m_GravityScale: 1
m_Material: {fileID: 0}
m_IncludeLayers:
serializedVersion: 2
m_Bits: 0
m_ExcludeLayers:
serializedVersion: 2
m_Bits: 0
m_Interpolate: 0
m_SleepingMode: 1
m_CollisionDetection: 0
m_Constraints: 0
--- !u!61 &3775478344909233634
BoxCollider2D:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5011741298713620040}
m_Enabled: 1
serializedVersion: 3
m_Density: 1
m_Material: {fileID: 0}
m_IncludeLayers:
serializedVersion: 2
m_Bits: 0
m_ExcludeLayers:
serializedVersion: 2
m_Bits: 0
m_LayerOverridePriority: 0
m_ForceSendLayers:
serializedVersion: 2
m_Bits: 4294967295
m_ForceReceiveLayers:
serializedVersion: 2
m_Bits: 4294967295
m_ContactCaptureLayers:
serializedVersion: 2
m_Bits: 4294967295
m_CallbackLayers:
serializedVersion: 2
m_Bits: 4294967295
m_IsTrigger: 1
m_UsedByEffector: 0
m_CompositeOperation: 0
m_CompositeOrder: 0
m_Offset: {x: 0.2, 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
m_Size: {x: 2, y: 0.6}
m_EdgeRadius: 0

View file

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 75dc1523a7fccf65c913e8fcd3e81206
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View file

@ -10,7 +10,7 @@ GameObject:
m_Component:
- component: {fileID: 2243782250480228875}
- component: {fileID: 4897167667714073556}
m_Layer: 0
m_Layer: 6
m_Name: Center
m_TagString: Untagged
m_Icon: {fileID: 0}
@ -87,6 +87,84 @@ SpriteRenderer:
m_WasSpriteAssigned: 1
m_MaskInteraction: 0
m_SpriteSortPoint: 0
--- !u!1 &4907226967481368671
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 3459125905580705084}
- component: {fileID: 1740651351067709772}
m_Layer: 6
m_Name: Hitbox
m_TagString: Player
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &3459125905580705084
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4907226967481368671}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 1849759059644475718}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!61 &1740651351067709772
BoxCollider2D:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4907226967481368671}
m_Enabled: 1
serializedVersion: 3
m_Density: 1
m_Material: {fileID: 6200000, guid: 9a4840caa2329f0dc847e7d99cba3595, type: 2}
m_IncludeLayers:
serializedVersion: 2
m_Bits: 0
m_ExcludeLayers:
serializedVersion: 2
m_Bits: 0
m_LayerOverridePriority: 0
m_ForceSendLayers:
serializedVersion: 2
m_Bits: 4294967295
m_ForceReceiveLayers:
serializedVersion: 2
m_Bits: 4294967295
m_ContactCaptureLayers:
serializedVersion: 2
m_Bits: 4294967295
m_CallbackLayers:
serializedVersion: 2
m_Bits: 4294967295
m_IsTrigger: 0
m_UsedByEffector: 0
m_CompositeOperation: 0
m_CompositeOrder: 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
m_Size: {x: 1, y: 1}
m_EdgeRadius: 0
--- !u!1 &6582811960690098071
GameObject:
m_ObjectHideFlags: 0
@ -96,7 +174,7 @@ GameObject:
serializedVersion: 6
m_Component:
- component: {fileID: 6047872402331640471}
m_Layer: 0
m_Layer: 6
m_Name: GroundCheck
m_TagString: Untagged
m_Icon: {fileID: 0}
@ -131,9 +209,9 @@ GameObject:
- component: {fileID: 1522197336905991381}
- component: {fileID: 707193740762801077}
- component: {fileID: 7249280586437786251}
m_Layer: 0
m_Layer: 7
m_Name: Reisen
m_TagString: Untagged
m_TagString: Player
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
@ -153,6 +231,8 @@ Transform:
m_Children:
- {fileID: 2243782250480228875}
- {fileID: 6047872402331640471}
- {fileID: 5727125788773421239}
- {fileID: 3459125905580705084}
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!212 &5359122752217294183
@ -220,7 +300,7 @@ BoxCollider2D:
m_Enabled: 1
serializedVersion: 3
m_Density: 1
m_Material: {fileID: 0}
m_Material: {fileID: 6200000, guid: 9a4840caa2329f0dc847e7d99cba3595, type: 2}
m_IncludeLayers:
serializedVersion: 2
m_Bits: 0
@ -298,9 +378,111 @@ MonoBehaviour:
health: 100
maxHealth: 100
speed: 4
jumpPower: 20
jumpPower: 6
abilities: []
attackOriginPoint: {fileID: 1849759059644475718}
rb: {fileID: 707193740762801077}
entitiesInRange: []
closestEntity: {fileID: 0}
groundCheck: {fileID: 6047872402331640471}
groundLayer:
serializedVersion: 2
m_Bits: 8
--- !u!1 &8370658841612952375
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 5727125788773421239}
m_Layer: 7
m_Name: Abilities
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &5727125788773421239
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8370658841612952375}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 1551848671935990802}
m_Father: {fileID: 1849759059644475718}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1001 &5635527811715805373
PrefabInstance:
m_ObjectHideFlags: 0
serializedVersion: 2
m_Modification:
serializedVersion: 3
m_TransformParent: {fileID: 5727125788773421239}
m_Modifications:
- target: {fileID: 1305679653731509527, guid: 303f1513a3d6002c7a0b7b3fcc807afd, type: 3}
propertyPath: thisEntity
value:
objectReference: {fileID: 7249280586437786251}
- target: {fileID: 2518044865521178739, guid: 303f1513a3d6002c7a0b7b3fcc807afd, type: 3}
propertyPath: m_Name
value: ShootBullet
objectReference: {fileID: 0}
- target: {fileID: 6610207326853905583, guid: 303f1513a3d6002c7a0b7b3fcc807afd, type: 3}
propertyPath: m_LocalPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6610207326853905583, guid: 303f1513a3d6002c7a0b7b3fcc807afd, type: 3}
propertyPath: m_LocalPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6610207326853905583, guid: 303f1513a3d6002c7a0b7b3fcc807afd, type: 3}
propertyPath: m_LocalPosition.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6610207326853905583, guid: 303f1513a3d6002c7a0b7b3fcc807afd, type: 3}
propertyPath: m_LocalRotation.w
value: 1
objectReference: {fileID: 0}
- target: {fileID: 6610207326853905583, guid: 303f1513a3d6002c7a0b7b3fcc807afd, type: 3}
propertyPath: m_LocalRotation.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6610207326853905583, guid: 303f1513a3d6002c7a0b7b3fcc807afd, type: 3}
propertyPath: m_LocalRotation.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6610207326853905583, guid: 303f1513a3d6002c7a0b7b3fcc807afd, type: 3}
propertyPath: m_LocalRotation.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6610207326853905583, guid: 303f1513a3d6002c7a0b7b3fcc807afd, type: 3}
propertyPath: m_LocalEulerAnglesHint.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6610207326853905583, guid: 303f1513a3d6002c7a0b7b3fcc807afd, type: 3}
propertyPath: m_LocalEulerAnglesHint.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6610207326853905583, guid: 303f1513a3d6002c7a0b7b3fcc807afd, type: 3}
propertyPath: m_LocalEulerAnglesHint.z
value: 0
objectReference: {fileID: 0}
m_RemovedComponents: []
m_RemovedGameObjects: []
m_AddedGameObjects: []
m_AddedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 303f1513a3d6002c7a0b7b3fcc807afd, type: 3}
--- !u!4 &1551848671935990802 stripped
Transform:
m_CorrespondingSourceObject: {fileID: 6610207326853905583, guid: 303f1513a3d6002c7a0b7b3fcc807afd, type: 3}
m_PrefabInstance: {fileID: 5635527811715805373}
m_PrefabAsset: {fileID: 0}

View file

@ -0,0 +1,54 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &2518044865521178739
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 6610207326853905583}
- component: {fileID: 1305679653731509527}
m_Layer: 7
m_Name: ShootBullet
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &6610207326853905583
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2518044865521178739}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &1305679653731509527
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2518044865521178739}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: c2e841223273eee80837e20d27430787, type: 3}
m_Name:
m_EditorClassIdentifier:
thisEntity: {fileID: 0}
cooldown: 1
power: 20
targetLocation: {x: 0, y: 0, z: 0}
projectile: {fileID: 4968744362001082579, guid: 75dc1523a7fccf65c913e8fcd3e81206, type: 3}
projectileSpeed: 8
projectileLifetime: 5
pierceAmount: 0

View file

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 303f1513a3d6002c7a0b7b3fcc807afd
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View file

@ -1,5 +1,98 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &366846952221566955
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 8544749687679608375}
m_Layer: 6
m_Name: WallDetectionLeft
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &8544749687679608375
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 366846952221566955}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: -1, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 4893125162624080007}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &1947563154589137002
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 631585465756843219}
m_Layer: 6
m_Name: WallDetectionRight
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &631585465756843219
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1947563154589137002}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 1, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 4893125162624080007}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &7013272570264032182
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 9142662567367472658}
m_Layer: 6
m_Name: GroundCheck
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &9142662567367472658
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7013272570264032182}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: -0.6, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 4893125162624080007}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &7036878528139897633
GameObject:
m_ObjectHideFlags: 0
@ -12,9 +105,10 @@ GameObject:
- component: {fileID: 3940513499368174321}
- component: {fileID: 2276909637052643796}
- component: {fileID: 2047881652295913413}
m_Layer: 0
- component: {fileID: 8821502866947698626}
m_Layer: 7
m_Name: Youmu
m_TagString: Untagged
m_TagString: Player
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
@ -32,7 +126,12 @@ Transform:
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 6446345046278479801}
- {fileID: 4814042705464051469}
- {fileID: 462469376723332893}
- {fileID: 9142662567367472658}
- {fileID: 8544749687679608375}
- {fileID: 631585465756843219}
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!212 &3940513499368174321
@ -100,7 +199,7 @@ BoxCollider2D:
m_Enabled: 1
serializedVersion: 3
m_Density: 1
m_Material: {fileID: 0}
m_Material: {fileID: 6200000, guid: 9a4840caa2329f0dc847e7d99cba3595, type: 2}
m_IncludeLayers:
serializedVersion: 2
m_Bits: 0
@ -163,6 +262,124 @@ Rigidbody2D:
m_SleepingMode: 1
m_CollisionDetection: 0
m_Constraints: 4
--- !u!114 &8821502866947698626
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7036878528139897633}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 88cc3202b26534d78b932ebaf49077f4, type: 3}
m_Name:
m_EditorClassIdentifier:
health: 100
maxHealth: 100
speed: 4
jumpPower: 6
abilities: []
attackOriginPoint: {fileID: 0}
rb: {fileID: 2047881652295913413}
entitiesInRange: []
closestEntity: {fileID: 0}
groundCheck: {fileID: 9142662567367472658}
groundLayer:
serializedVersion: 2
m_Bits: 8
maxTargettingRange: 20
maxHeightDifference: 0.5
minTargetJumpDistance: 0.5
wallDetectors:
- {fileID: 8544749687679608375}
- {fileID: 631585465756843219}
wallLayer:
serializedVersion: 2
m_Bits: 8
player: {fileID: 0}
playerMinDistance: 1.2
--- !u!1 &7227609801905333812
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 6446345046278479801}
- component: {fileID: 6828986159558864913}
- component: {fileID: 7037638565701851046}
m_Layer: 8
m_Name: EntityDetection
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 0
--- !u!4 &6446345046278479801
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7227609801905333812}
serializedVersion: 2
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 4893125162624080007}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!58 &6828986159558864913
CircleCollider2D:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7227609801905333812}
m_Enabled: 1
serializedVersion: 3
m_Density: 1
m_Material: {fileID: 0}
m_IncludeLayers:
serializedVersion: 2
m_Bits: 0
m_ExcludeLayers:
serializedVersion: 2
m_Bits: 0
m_LayerOverridePriority: 0
m_ForceSendLayers:
serializedVersion: 2
m_Bits: 4294967295
m_ForceReceiveLayers:
serializedVersion: 2
m_Bits: 4294967295
m_ContactCaptureLayers:
serializedVersion: 2
m_Bits: 4294967295
m_CallbackLayers:
serializedVersion: 2
m_Bits: 4294967295
m_IsTrigger: 1
m_UsedByEffector: 0
m_CompositeOperation: 0
m_CompositeOrder: 0
m_Offset: {x: 0, y: 0}
m_Radius: 6
--- !u!114 &7037638565701851046
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7227609801905333812}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: c400f563d8deda32ebf80ab7262922f3, type: 3}
m_Name:
m_EditorClassIdentifier:
thisEntity: {fileID: 8821502866947698626}
--- !u!1 &7874067672127552433
GameObject:
m_ObjectHideFlags: 0
@ -173,7 +390,7 @@ GameObject:
m_Component:
- component: {fileID: 462469376723332893}
- component: {fileID: 8680940919702853704}
m_Layer: 0
m_Layer: 6
m_Name: Center
m_TagString: Untagged
m_Icon: {fileID: 0}
@ -250,3 +467,81 @@ SpriteRenderer:
m_WasSpriteAssigned: 1
m_MaskInteraction: 0
m_SpriteSortPoint: 0
--- !u!1 &8897582809349596970
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 4814042705464051469}
- component: {fileID: 2263296886364299958}
m_Layer: 6
m_Name: Hitbox
m_TagString: Player
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &4814042705464051469
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8897582809349596970}
serializedVersion: 2
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 4893125162624080007}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!61 &2263296886364299958
BoxCollider2D:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8897582809349596970}
m_Enabled: 1
serializedVersion: 3
m_Density: 1
m_Material: {fileID: 6200000, guid: 9a4840caa2329f0dc847e7d99cba3595, type: 2}
m_IncludeLayers:
serializedVersion: 2
m_Bits: 0
m_ExcludeLayers:
serializedVersion: 2
m_Bits: 0
m_LayerOverridePriority: 0
m_ForceSendLayers:
serializedVersion: 2
m_Bits: 4294967295
m_ForceReceiveLayers:
serializedVersion: 2
m_Bits: 4294967295
m_ContactCaptureLayers:
serializedVersion: 2
m_Bits: 4294967295
m_CallbackLayers:
serializedVersion: 2
m_Bits: 4294967295
m_IsTrigger: 0
m_UsedByEffector: 0
m_CompositeOperation: 0
m_CompositeOrder: 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
m_Size: {x: 1, y: 1}
m_EdgeRadius: 0

File diff suppressed because it is too large Load diff

39
Assets/Scripts/Ability.cs Normal file
View file

@ -0,0 +1,39 @@
using System;
using UnityEngine;
public class Ability : MonoBehaviour
{
public Entity thisEntity;
protected float currentCooldown;
public float cooldown;
public float power;
public Vector3 targetLocation;
protected virtual void Update()
{
if (currentCooldown > 0f)
{
currentCooldown -= Time.deltaTime;
}
if (Input.GetMouseButtonDown(0))
{
TryAbility(); //testing, please remove
}
}
public bool TryAbility()
{
if (currentCooldown <= 0f)
{
AbilityEffects();
currentCooldown = cooldown;
return true;
}
return false;
}
protected virtual void AbilityEffects()
{
}
}

View file

@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 977830b8cdc83e63a8cb158ab84c0d0d

View file

@ -0,0 +1,23 @@
using UnityEngine;
public class AutoControlledEntity : Entity
{
[Header("Movement AI")]
[SerializeField] protected float maxTargettingRange;
[SerializeField] protected float maxHeightDifference;
[SerializeField] protected float minTargetJumpDistance;
[SerializeField] protected Transform[] wallDetectors;
[SerializeField] protected LayerMask wallLayer;
protected bool DetectWalls()
{
foreach (Transform wallDetector in wallDetectors)
{
if (Physics2D.OverlapCircle(wallDetector.position, 0.05f, wallLayer))
{
return true;
}
}
return false;
}
}

View file

@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: c03e169f911b6605cb6e9e94749f7223

View file

@ -1,16 +1,30 @@
using System;
using UnityEngine;
public class AutomatedPlayer : MonoBehaviour
public class AutomatedPlayer : AutoControlledEntity
{
// Start is called once before the first execution of Update after the MonoBehaviour is created
void Start()
{
}
public Player player;
public float playerMinDistance;
// Update is called once per frame
void Update()
{
}
private void FixedUpdate()
{
Vector2 direction = new Vector2(0, rb.linearVelocityY);
Entity target = player;
if (!closestEntity && Vector3.Distance(player.transform.position, transform.position) <= playerMinDistance)
{
rb.linearVelocity = direction; //repeated code sucks but it works in this case i guess
return; //do not bother running any more code lol you're already next to the player and no enemies nearby
}
if (closestEntity && Vector3.Distance(closestEntity.transform.position, transform.position) < maxTargettingRange)
{
target = closestEntity;
}
direction.x = (target.transform.position - transform.position).normalized.x * speed;
if ((target.transform.position.y - transform.position.y > maxHeightDifference || (DetectWalls() && Vector3.Distance(target.transform.position, transform.position) > minTargetJumpDistance)) && OnGround())
{
direction.y = jumpPower;
}
rb.linearVelocity = direction;
}
}

View file

@ -0,0 +1,42 @@
using System;
using UnityEngine;
public class DetectEntities : MonoBehaviour
{
[SerializeField] private Entity thisEntity;
private void OnTriggerEnter2D(Collider2D other)
{
if (!other.CompareTag(thisEntity.tag) && other.TryGetComponent(out Entity isEntity))
{
thisEntity.entitiesInRange.Add(isEntity);
thisEntity.closestEntity = FindClosestEntity();
}
}
private void OnTriggerExit2D(Collider2D other)
{
if (other.TryGetComponent(out Entity isEntity) && thisEntity.entitiesInRange.Contains(isEntity))
{
thisEntity.entitiesInRange.Remove(isEntity);
if (thisEntity.closestEntity == isEntity)
{
thisEntity.closestEntity = FindClosestEntity();
}
}
}
private Entity FindClosestEntity()
{
Entity currentClosestEntity = null;
foreach (Entity entityFound in thisEntity.entitiesInRange)
{
if (!currentClosestEntity ||
Vector3.Distance(entityFound.transform.position, thisEntity.transform.position) <
Vector3.Distance(currentClosestEntity.transform.position, thisEntity.transform.position))
{
currentClosestEntity = entityFound;
}
}
return currentClosestEntity;
}
}

View file

@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: c400f563d8deda32ebf80ab7262922f3

View file

@ -1,16 +1,25 @@
using System;
using UnityEngine;
public class Enemy : MonoBehaviour
public class Enemy : AutoControlledEntity
{
// Start is called once before the first execution of Update after the MonoBehaviour is created
void Start()
{
private void FixedUpdate()
{
Vector2 direction = new Vector2(0, rb.linearVelocityY);
if (closestEntity && Vector3.Distance(closestEntity.transform.position, transform.position) < maxTargettingRange)
{
direction.x = (closestEntity.transform.position - transform.position).normalized.x * speed;
if ((closestEntity.transform.position.y - transform.position.y > maxHeightDifference || (DetectWalls() && Vector3.Distance(closestEntity.transform.position, transform.position) > minTargetJumpDistance)) && OnGround())
{
direction.y = jumpPower;
}
}
rb.linearVelocity = direction;
}
}
// Update is called once per frame
void Update()
{
}
protected override void OnDeath()
{
base.OnDeath();
Destroy(gameObject);
}
}

View file

@ -1,4 +1,5 @@
using System;
using System.Collections.Generic;
using UnityEngine;
public class Entity : MonoBehaviour
@ -9,8 +10,17 @@ public class Entity : MonoBehaviour
[Header("Stats")]
public float speed;
public float jumpPower;
[Header("Abilities")]
public List<Ability> abilities = new();
public Transform attackOriginPoint;
[SerializeField] protected Transform attackOriginCenter;
[Header("Cache")]
[SerializeField] protected Rigidbody2D rb;
public List<Entity> entitiesInRange = new();
public Entity closestEntity;
[Header("Ground Detection")]
[SerializeField] private Transform groundCheck;
[SerializeField] private LayerMask groundLayer;
public void TakeDamage(float damage)
{
@ -31,4 +41,8 @@ public class Entity : MonoBehaviour
{
}
protected bool OnGround()
{
return Physics2D.OverlapCircle(groundCheck.position, 0.05f, groundLayer);
}
}

View file

@ -1,11 +1,15 @@
using System;
using Core.Extensions;
using UnityEngine;
public class Player : Entity
{
[Header("Ground Detection")]
[SerializeField] private Transform groundCheck;
[SerializeField] private LayerMask groundLayer;
[SerializeField] private Camera cam;
private void Update()
{
attackOriginCenter.Lookat2D(cam.ScreenToWorldPoint(Input.mousePosition));
}
private void FixedUpdate()
{
Vector2 movement = new Vector2(Input.GetAxis("Horizontal") * speed, rb.linearVelocityY);
@ -15,9 +19,4 @@ public class Player : Entity
}
rb.linearVelocity = movement;
}
private bool OnGround()
{
return Physics2D.OverlapCircle(groundCheck.position, 0.05f, groundLayer);
}
}

View file

@ -1,16 +1,38 @@
using System;
using UnityEngine;
public class PlayerSwitcher : MonoBehaviour
{
// Start is called once before the first execution of Update after the MonoBehaviour is created
void Start()
{
[SerializeField] private Player player1;
[SerializeField] private AutomatedPlayer player1AI;
[SerializeField] private Player player2;
[SerializeField] private AutomatedPlayer player2AI;
}
private void Update()
{
if(Input.GetKeyDown(KeyCode.E))
{
SwitchPlayers();
}
}
// Update is called once per frame
void Update()
{
}
public void SwitchPlayers() //i bet if i made it a parameter i wouldn't have to make an if statement. but it's literally 5 am and i'm lazy
{
if (player1.enabled)
{
player1AI.enabled = true;
player1.enabled = false;
player2.enabled = true;
player2AI.enabled = false;
(player2.transform.position, player1AI.transform.position) = (player1AI.transform.position, player2.transform.position);
}
else
{
player2AI.enabled = true;
player2.enabled = false;
player1.enabled = true;
player1AI.enabled = false;
(player1.transform.position, player2AI.transform.position) = (player2AI.transform.position, player1.transform.position);
}
}
}

View file

@ -0,0 +1,40 @@
using System;
using UnityEngine;
public class Projectile : MonoBehaviour
{
public Entity owner;
public float damage;
public float lifetime;
private int currentPierced;
public int pierceAmount;
public float speed;
[SerializeField] private Rigidbody2D rb;
private void Start()
{
Destroy(gameObject, lifetime);
}
private void FixedUpdate()
{
rb.linearVelocity = transform.right * speed;
}
private void OnTriggerEnter2D(Collider2D other)
{
if (!other.CompareTag(tag) && other.TryGetComponent(out Entity isEntity))
{
isEntity.TakeDamage(damage);
currentPierced++;
if (currentPierced > pierceAmount)
{
Destroy(gameObject);
}
}
else if (other.gameObject.layer == 3) //hard coded layer but who tf cares i'm not inputting the variable every time i make a projectile lol
{
Destroy(gameObject);
}
}
}

View file

@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 3aed04444af8b4d13b5fe9031150044a

View file

@ -0,0 +1,22 @@
using Core.Extensions;
using UnityEngine;
public class ShootBullet : Ability
{
[SerializeField] private Projectile projectile;
[SerializeField] private float projectileSpeed;
[SerializeField] private float projectileLifetime;
[SerializeField] private int pierceAmount;
protected override void AbilityEffects()
{
base.AbilityEffects();
Projectile newProjectile = Instantiate(projectile, thisEntity.transform.position, projectile.transform.rotation);
newProjectile.owner = thisEntity;
newProjectile.tag = thisEntity.tag;
newProjectile.speed = projectileSpeed;
newProjectile.damage = power;
newProjectile.lifetime = projectileLifetime;
newProjectile.pierceAmount = pierceAmount;
newProjectile.transform.Lookat2D(thisEntity.attackOriginPoint.position); //targetLocation);
}
}

View file

@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: c2e841223273eee80837e20d27430787

BIN
Assets/Sprites/boolet.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 306 B

View file

@ -0,0 +1,156 @@
fileFormatVersion: 2
guid: 432f2db64ad2e7706930421f9855870a
TextureImporter:
internalIDToNameTable:
- first:
213: 9001305561785877478
second: boolet_0
externalObjects: {}
serializedVersion: 13
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
flipGreenChannel: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMipmapLimit: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 0
aniso: 1
mipBias: 0
wrapU: 1
wrapV: 1
wrapW: 1
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 2
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 16
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 8
textureShape: 1
singleChannelComponent: 0
flipbookRows: 1
flipbookColumns: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
swizzle: 50462976
cookieLightType: 0
platformSettings:
- serializedVersion: 4
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: WebGL
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites:
- serializedVersion: 2
name: boolet_0
rect:
serializedVersion: 2
x: 0
y: 0
width: 51
height: 16
alignment: 0
pivot: {x: 0, y: 0}
border: {x: 0, y: 0, z: 0, w: 0}
customData:
outline: []
physicsShape: []
tessellationDetail: -1
bones: []
spriteID: 6e3cefca7bf0bec70800000000000000
internalID: 9001305561785877478
vertices: []
indices:
edges: []
weights: []
outline: []
customData:
physicsShape: []
bones: []
spriteID:
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
spriteCustomMetadata:
entries: []
nameFileIdTable:
boolet_0: 9001305561785877478
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:
assetBundleName:
assetBundleVariant:

View file

@ -53,4 +53,4 @@ Physics2DSettings:
m_ReuseCollisionCallbacks: 1
m_AutoSyncTransforms: 0
m_GizmoOptions: 10
m_LayerCollisionMatrix: c90000000000000000000000c10000000000000000000000c9000000c9000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
m_LayerCollisionMatrix: 4900000000000000000000004102000000000000000000000901000000030000c00000008800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

View file

@ -3,7 +3,8 @@
--- !u!78 &1
TagManager:
serializedVersion: 3
tags: []
tags:
- Enemy
layers:
- Default
- TransparentFX
@ -12,9 +13,9 @@ TagManager:
- Water
- UI
- Entity
- Player
-
-
- EntityHurtBox
- EntityDetection
- Attack
-
-
-