From 3be323bfab3b1c5d75ffda7758a47ea51bda62e2 Mon Sep 17 00:00:00 2001 From: BlackShade Date: Sat, 14 Mar 2026 07:46:16 +0100 Subject: [PATCH] many changes --- .../BasicShootEnemy.asset | 16 +- Assets/Images/Enemieeeee.meta | 8 + .../przeciwnik chod do przodu na lewo1.png | Bin 0 -> 1063 bytes ...rzeciwnik chod do przodu na lewo1.png.meta | 117 + .../przeciwnik chod do przodu na lewo2.png | Bin 0 -> 1018 bytes ...rzeciwnik chod do przodu na lewo2.png.meta | 117 + .../przeciwnik chod do przodu na prawo1.png | Bin 0 -> 1029 bytes ...zeciwnik chod do przodu na prawo1.png.meta | 117 + .../przeciwnik chod do przodu na prawo2.png | Bin 0 -> 993 bytes ...zeciwnik chod do przodu na prawo2.png.meta | 117 + .../Enemieeeee/przeciwnik chod do przodu1.png | Bin 0 -> 999 bytes .../przeciwnik chod do przodu1.png.meta | 117 + .../Enemieeeee/przeciwnik chod do przodu2.png | Bin 0 -> 998 bytes .../przeciwnik chod do przodu2.png.meta | 117 + .../przeciwnik chod do tylu na lewo1.png | Bin 0 -> 732 bytes .../przeciwnik chod do tylu na lewo1.png.meta | 117 + .../przeciwnik chod do tylu na lewo2.png | Bin 0 -> 712 bytes .../przeciwnik chod do tylu na lewo2.png.meta | 117 + .../przeciwnik chod do tylu na prawo1.png | Bin 0 -> 728 bytes ...przeciwnik chod do tylu na prawo1.png.meta | 117 + .../przeciwnik chod do tylu na prawo2.png | Bin 0 -> 717 bytes ...przeciwnik chod do tylu na prawo2.png.meta | 117 + .../Enemieeeee/przeciwnik chod do tylu1.png | Bin 0 -> 819 bytes .../przeciwnik chod do tylu1.png.meta | 117 + .../Enemieeeee/przeciwnik chod do tylu2.png | Bin 0 -> 806 bytes .../przeciwnik chod do tylu2.png.meta | 117 + .../Enemieeeee/przeciwnik chod w lewo1.png | Bin 0 -> 1013 bytes .../przeciwnik chod w lewo1.png.meta | 117 + .../Enemieeeee/przeciwnik chod w lewo2.png | Bin 0 -> 963 bytes .../przeciwnik chod w lewo2.png.meta | 117 + .../Enemieeeee/przeciwnik chod w prawo1.png | Bin 0 -> 988 bytes .../przeciwnik chod w prawo1.png.meta | 117 + .../Enemieeeee/przeciwnik chod w prawo2.png | Bin 0 -> 946 bytes .../przeciwnik chod w prawo2.png.meta | 117 + Assets/Images/Enemieeeee/przeciwnik idle1.png | Bin 0 -> 962 bytes .../Enemieeeee/przeciwnik idle1.png.meta | 117 + Assets/Images/Enemieeeee/przeciwnik idle2.png | Bin 0 -> 940 bytes .../Enemieeeee/przeciwnik idle2.png.meta | 117 + .../Images/Enemieeeee/przeciwnik strzal1.png | Bin 0 -> 962 bytes .../Enemieeeee/przeciwnik strzal1.png.meta | 117 + .../Images/Enemieeeee/przeciwnik strzal2.png | Bin 0 -> 991 bytes .../Enemieeeee/przeciwnik strzal2.png.meta | 117 + Assets/Prefabs/EnemySpawnerPoint.prefab | 46 + Assets/Prefabs/EnemySpawnerPoint.prefab.meta | 7 + Assets/Prefabs/Map.prefab | 63 + Assets/Prefabs/PewPewEnemy.prefab | 16 +- .../{Bullet.prefab => PlayerBullet.prefab} | 20 +- ...t.prefab.meta => PlayerBullet.prefab.meta} | 0 Assets/Prefabs/Projectile.prefab | 4 +- Assets/Prefabs/Spawner.prefab | 74 + Assets/Prefabs/Spawner.prefab.meta | 7 + Assets/Scenes/Game.unity | 3571 ++++++++++++++--- Assets/Scripts/Enemy/DoomEnemyController.cs | 8 +- Assets/Scripts/Enemy/DoomSpriteAnimator.cs | 24 +- Assets/Scripts/Enemy/EnemyProjectile.cs | 4 +- Assets/Scripts/Enemy/EnemySpawner.cs | 134 + Assets/Scripts/Enemy/EnemySpawner.cs.meta | 2 + Assets/Scripts/LevelCounter.cs | 24 +- Assets/Scripts/PlayerBullet.cs | 30 + Assets/Scripts/PlayerBullet.cs.meta | 2 + Assets/Scripts/PlayerShooting.cs | 3 +- Assets/Scripts/PortalTeleporter.cs | 116 +- Assets/Scripts/Projectile.cs | 173 +- ProjectSettings/TagManager.asset | 1 + 64 files changed, 6106 insertions(+), 587 deletions(-) create mode 100644 Assets/Images/Enemieeeee.meta create mode 100755 Assets/Images/Enemieeeee/przeciwnik chod do przodu na lewo1.png create mode 100644 Assets/Images/Enemieeeee/przeciwnik chod do przodu na lewo1.png.meta create mode 100755 Assets/Images/Enemieeeee/przeciwnik chod do przodu na lewo2.png create mode 100644 Assets/Images/Enemieeeee/przeciwnik chod do przodu na lewo2.png.meta create mode 100755 Assets/Images/Enemieeeee/przeciwnik chod do przodu na prawo1.png create mode 100644 Assets/Images/Enemieeeee/przeciwnik chod do przodu na prawo1.png.meta create mode 100755 Assets/Images/Enemieeeee/przeciwnik chod do przodu na prawo2.png create mode 100644 Assets/Images/Enemieeeee/przeciwnik chod do przodu na prawo2.png.meta create mode 100755 Assets/Images/Enemieeeee/przeciwnik chod do przodu1.png create mode 100644 Assets/Images/Enemieeeee/przeciwnik chod do przodu1.png.meta create mode 100755 Assets/Images/Enemieeeee/przeciwnik chod do przodu2.png create mode 100644 Assets/Images/Enemieeeee/przeciwnik chod do przodu2.png.meta create mode 100755 Assets/Images/Enemieeeee/przeciwnik chod do tylu na lewo1.png create mode 100644 Assets/Images/Enemieeeee/przeciwnik chod do tylu na lewo1.png.meta create mode 100755 Assets/Images/Enemieeeee/przeciwnik chod do tylu na lewo2.png create mode 100644 Assets/Images/Enemieeeee/przeciwnik chod do tylu na lewo2.png.meta create mode 100755 Assets/Images/Enemieeeee/przeciwnik chod do tylu na prawo1.png create mode 100644 Assets/Images/Enemieeeee/przeciwnik chod do tylu na prawo1.png.meta create mode 100755 Assets/Images/Enemieeeee/przeciwnik chod do tylu na prawo2.png create mode 100644 Assets/Images/Enemieeeee/przeciwnik chod do tylu na prawo2.png.meta create mode 100755 Assets/Images/Enemieeeee/przeciwnik chod do tylu1.png create mode 100644 Assets/Images/Enemieeeee/przeciwnik chod do tylu1.png.meta create mode 100755 Assets/Images/Enemieeeee/przeciwnik chod do tylu2.png create mode 100644 Assets/Images/Enemieeeee/przeciwnik chod do tylu2.png.meta create mode 100755 Assets/Images/Enemieeeee/przeciwnik chod w lewo1.png create mode 100644 Assets/Images/Enemieeeee/przeciwnik chod w lewo1.png.meta create mode 100755 Assets/Images/Enemieeeee/przeciwnik chod w lewo2.png create mode 100644 Assets/Images/Enemieeeee/przeciwnik chod w lewo2.png.meta create mode 100755 Assets/Images/Enemieeeee/przeciwnik chod w prawo1.png create mode 100644 Assets/Images/Enemieeeee/przeciwnik chod w prawo1.png.meta create mode 100755 Assets/Images/Enemieeeee/przeciwnik chod w prawo2.png create mode 100644 Assets/Images/Enemieeeee/przeciwnik chod w prawo2.png.meta create mode 100755 Assets/Images/Enemieeeee/przeciwnik idle1.png create mode 100644 Assets/Images/Enemieeeee/przeciwnik idle1.png.meta create mode 100755 Assets/Images/Enemieeeee/przeciwnik idle2.png create mode 100644 Assets/Images/Enemieeeee/przeciwnik idle2.png.meta create mode 100755 Assets/Images/Enemieeeee/przeciwnik strzal1.png create mode 100644 Assets/Images/Enemieeeee/przeciwnik strzal1.png.meta create mode 100755 Assets/Images/Enemieeeee/przeciwnik strzal2.png create mode 100644 Assets/Images/Enemieeeee/przeciwnik strzal2.png.meta create mode 100644 Assets/Prefabs/EnemySpawnerPoint.prefab create mode 100644 Assets/Prefabs/EnemySpawnerPoint.prefab.meta rename Assets/Prefabs/{Bullet.prefab => PlayerBullet.prefab} (91%) rename Assets/Prefabs/{Bullet.prefab.meta => PlayerBullet.prefab.meta} (100%) create mode 100644 Assets/Prefabs/Spawner.prefab create mode 100644 Assets/Prefabs/Spawner.prefab.meta create mode 100644 Assets/Scripts/Enemy/EnemySpawner.cs create mode 100644 Assets/Scripts/Enemy/EnemySpawner.cs.meta create mode 100644 Assets/Scripts/PlayerBullet.cs create mode 100644 Assets/Scripts/PlayerBullet.cs.meta diff --git a/Assets/EnemiesScriptObjects/BasicShootEnemy.asset b/Assets/EnemiesScriptObjects/BasicShootEnemy.asset index bea3b42..287f623 100644 --- a/Assets/EnemiesScriptObjects/BasicShootEnemy.asset +++ b/Assets/EnemiesScriptObjects/BasicShootEnemy.asset @@ -13,17 +13,23 @@ MonoBehaviour: m_Name: BasicShootEnemy m_EditorClassIdentifier: Assembly-CSharp::DoomEnemySprites idle: - frames: [] + frames: + - {fileID: 21300000, guid: fc832993fc290bf91b772e8b00dac6d9, type: 3} + - {fileID: 21300000, guid: 22aa09535b06dae2ea3cf5588ea73ad7, type: 3} framesPerDirection: 1 fps: 8 loop: 1 walk: - frames: [] + frames: + - {fileID: 21300000, guid: b168b9bd683c82eb29c837c621212493, type: 3} + - {fileID: 21300000, guid: f70eeee37d02226cd9335c635d56e3f1, type: 3} framesPerDirection: 1 fps: 8 loop: 1 attack: - frames: [] + frames: + - {fileID: 21300000, guid: 4ce02ddc3077f3889959403fbe5c6159, type: 3} + - {fileID: 21300000, guid: 3ad5fe8c2dcab1bb5b8426c6f41e87f4, type: 3} framesPerDirection: 1 fps: 8 loop: 1 @@ -31,9 +37,9 @@ MonoBehaviour: frames: [] framesPerDirection: 1 fps: 8 - loop: 1 + loop: 0 death: frames: [] framesPerDirection: 1 fps: 8 - loop: 1 + loop: 0 diff --git a/Assets/Images/Enemieeeee.meta b/Assets/Images/Enemieeeee.meta new file mode 100644 index 0000000..304d784 --- /dev/null +++ b/Assets/Images/Enemieeeee.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 1d5ec60f7ce96bda996e983d03443c07 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Images/Enemieeeee/przeciwnik chod do przodu na lewo1.png b/Assets/Images/Enemieeeee/przeciwnik chod do przodu na lewo1.png new file mode 100755 index 0000000000000000000000000000000000000000..a9b5da68aee39dda2701ae39200f26fa1b120eea GIT binary patch literal 1063 zcmV+?1laqDP)PuL2d`r6(Ye>YT0ySI_OOAy?uXX-rE(Tey6uH?|r}DeDlpW-^>F4 z@vp;W=cA!ymH@!*7jD*eS9aO5wM_H_LI}}oKN`_*&#M4J2x;zCkKCyUVGo!glNcBN zhI`(Il3CLC8kou~jDGFPU+h^c;K2+6IQvaU z?+@3)AFf6Jj{d?5pr9fsF#y}-!UFE?y@Nz@Smkafzu45UUnQRzJe04n2@SVfvKvt$g@DTqcxuAcS^RU4h-XDzXudVoTtFtL@2 z%>vB|+JwckW(feCzn{fa#;sckY4Ne=3;>{FOKT3PHdPB{LS96pAxKh?5ie#*Kxe>? z1*8WWP+ZriD}o1HF(64n0O~@tX!r!u0}WWcrVQzU2KMe<*>F~MJ1jjw$pK(yFn}UW zeebb8>*_)m>CSPwp%xEvS(RtX3qwrHw|>tPDu(9pYIzy%Zrem zpTq8091XD;>pyl(#`l?N6xa3HBIgoNRh>q5ehvW8)fGY0$%Q1da?=I?f0i7O6L?(P zGPi*As*5@OdR36wlGB4_DxUS6gJ-!m^o$`%L5y~kV6>xz>!8YAz3A=bfZ7X@ePLCf z@AMC6F`$JkHxoJ)*LTXSU0bZa>)8kZI1rCp+84@%!C8V3E&~9jA6BC5&;%o=q@ob= zz|jaHXP^IB_le}N?t8Q*SoXW?}E3bG8RGH&jvvMnH!7`Jsho;LwXAxkbmTb?QJ5DPBAs5Z07@Vw literal 0 HcmV?d00001 diff --git a/Assets/Images/Enemieeeee/przeciwnik chod do przodu na lewo1.png.meta b/Assets/Images/Enemieeeee/przeciwnik chod do przodu na lewo1.png.meta new file mode 100644 index 0000000..4cb44c8 --- /dev/null +++ b/Assets/Images/Enemieeeee/przeciwnik chod do przodu na lewo1.png.meta @@ -0,0 +1,117 @@ +fileFormatVersion: 2 +guid: 7c32af5cdd3566425bc881069ebc7a96 +TextureImporter: + internalIDToNameTable: [] + 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: 0 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 32 + 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: 256 + resizeAlgorithm: 1 + textureFormat: 4 + 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 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + customData: + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spriteCustomMetadata: + entries: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Images/Enemieeeee/przeciwnik chod do przodu na lewo2.png b/Assets/Images/Enemieeeee/przeciwnik chod do przodu na lewo2.png new file mode 100755 index 0000000000000000000000000000000000000000..19bd0fa55ae882c45e472201684c712b0e5c1193 GIT binary patch literal 1018 zcmVF|82@d%nrRpaMbO&b43rAi=oCzcBsRR*N)g&2autazaib1(2s=b97K)j!;-U2r zC{_d>yfk1K>aLg&)OOI+lVK{cnQlyn^*v{1=g)hyyHv2h)0_8ZzVG+G@0;)Y<_(ZV z7JnHwD-TUZ;}QToduyk2eLkBdS-W^2kR(acn!g&5KbOMrloAc_H4R?bbJzp@*%(P@RbQ&G-Mprzm(0H8V&0RSAU{gje& zZUO{@Zny5*;!H|VV6uSCWe3LC1P;30(nw<%Kyq!+O3{Wf zKz0uRQ_T~G(Z8)6Q_T}h@|Xw!+q-7~QBG1cYh^U_S54ErWOLc!JaCZCop^kb#)8}; za^+?OJ?tWdgPBuO8JE)d0lE!5&v%n=`tG=`J<0Ro=J#8N6Y z3N$mQ6Bf%mD*?cr=W#4=*fl#LHNJ#y0RWuGuO}&0r)sWD$O=&mKoI;?@phI3G&Y`M4>c!rDMTm`h>AihEU9V~`m|B1+2Y|KlCgiHt zgTY>0x^Ui1j4mrv3zU?sqO>fAweco8_q4N3W8rMDOrUhCl~Rp zO`Hu!;0=fAdVReQKh{=|Uom7!ITL}>vKZo9n*e~Go*-&(B$7@(t1K-1*%aAorjMA#}tE$P*(+i-gD%116sZ2b$xhD-FR8>`J+S0|0>hnk4{0bu+1kbt);YOsI={ zmcKI$f!;W+>6VaXw2!*om}rb}wPy-oCOYVNAOOIbR|v&ry=yW~!T zI}{H!&(BtmG4TY#t5m~K-hA!*9kP-4C zd#0H&-qYQ!J;!%oPifDOk}II^;Nn=y#X1F^AkCI+hCUe=z;YN;1b@3{fK*VL)N!5siF9!AO8F!xUz z{Qg1ip%vPWf4wi#p7U$2YY<;YE+Dt04FFIPiNY_?CKu_mcZqb&y-)WIb#wDG%=d}L zh)}9V$OGgqNJM}{PeIZEdcD3ii0!f!IBm3H`*LbmhXNpys5+h=IC6mP4fe_|G7Zz_ z0X+n-q^BW$EO+J|+!sXi#kM?P$MtCe0NCEkC~Ywy(|c}!_PY-0|0`I@)?VPuD-=r0 znn`L1$PBP+TpGa4IB#+zZ2)GHfsh7Rp6${;b|AQeP@kfuv!NcrJERmqDv6|K_2POl znOk|!{;9+j0|B2)G0PvxMm{a>A<*ZKj*b2TTP|}@m|>h(00000NkvXXu0mjfYQNh- literal 0 HcmV?d00001 diff --git a/Assets/Images/Enemieeeee/przeciwnik chod do przodu na prawo1.png.meta b/Assets/Images/Enemieeeee/przeciwnik chod do przodu na prawo1.png.meta new file mode 100644 index 0000000..adcd7d1 --- /dev/null +++ b/Assets/Images/Enemieeeee/przeciwnik chod do przodu na prawo1.png.meta @@ -0,0 +1,117 @@ +fileFormatVersion: 2 +guid: 40af09c564bf72cf490d082164f00b0d +TextureImporter: + internalIDToNameTable: [] + 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: 0 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + 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 + 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: 4 + 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 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + customData: + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spriteCustomMetadata: + entries: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Images/Enemieeeee/przeciwnik chod do przodu na prawo2.png b/Assets/Images/Enemieeeee/przeciwnik chod do przodu na prawo2.png new file mode 100755 index 0000000000000000000000000000000000000000..30da485f0feea3b38b4211db174066f7a06e3fb7 GIT binary patch literal 993 zcmV<710MW|P)_6)w-**bRaIu@qYF0Ny}oZ5!jcEf zW^YweYo@BI`ebS!i6je9S#E3-jRz?YM80QS-9O(c^H|{k-ha;gpKKXJ|9qzgLeIW= zqz=iYAH@NnHQ6!-01Qa;NS*XJmH}vprRA7reD>Px-va=E(`|78KUWo=geutZq|6~{wianrlAS|P(RqntaUCaP8-zK zeeQjRCD0qE73mFeqkY=t!kjlMG@dDdndqPsfdGKAiYh2h{#TP(0v;^`G1#d6Cd;Cq zy@*U>Koo+AhS7_+ComDp^8g7(BK=n|(i>vhCOnG4hF(kzi0ojAq)q#yMSDa>%n}5H z1B#n^&#SN8W58+}UgiX=EI)kh4rVV0Kp=1c;bz-$q5YN6pn7?`yHx-f86GxJWy3U$ zg$}=5*6oP(U~6*&r_P+!+Vl|F_5o8cQMVG~02t$D%Jmv*OCf7iM!cQSFlD_LN|*5(EPxfsyP;0Y2BB_R*&r4FR`Qn(Ra#Lej8PT19z=}TQ5%6d+a z`5bEyZg-#7SbK2?>Ae&HV0_$<_6M1iy!_HR0Q>`rGyrX!2G}|A)bIc=7XTzOqQp#- z!8ibH+aJMR>JS~qAR!MVW}287XnlQIyC%D(ULvy>2Kd(2p#q0z0Kk}xlHBm*?hE++ zZ-tju=*GwIGS!gVAMY6YmX>48?>TQ&s!}4A50Il6QT;(4Ae)3(2GA?g8^YSp4V2|E zM&4(`d{q4E&_;Ouxg;E|Zg-zyK)NDI`t?~dFFP*S`>Y2ck}2CB>qztmDQRaAMSvQq P00000NkvXXu0mjfE5OHc literal 0 HcmV?d00001 diff --git a/Assets/Images/Enemieeeee/przeciwnik chod do przodu na prawo2.png.meta b/Assets/Images/Enemieeeee/przeciwnik chod do przodu na prawo2.png.meta new file mode 100644 index 0000000..fb1e749 --- /dev/null +++ b/Assets/Images/Enemieeeee/przeciwnik chod do przodu na prawo2.png.meta @@ -0,0 +1,117 @@ +fileFormatVersion: 2 +guid: e8f8b2b0668b518c081d10cd9ff3b9c8 +TextureImporter: + internalIDToNameTable: [] + 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: 0 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + 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 + 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: 4 + 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 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + customData: + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spriteCustomMetadata: + entries: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Images/Enemieeeee/przeciwnik chod do przodu1.png b/Assets/Images/Enemieeeee/przeciwnik chod do przodu1.png new file mode 100755 index 0000000000000000000000000000000000000000..e4ca902a438bfa02c2272bf4edfa3f04f668e1a2 GIT binary patch literal 999 zcmVC_n@kO2$dJqi9lb4{_x0X=_x;@Wo|xDN1Ml5=_nhyXd+xdC9^kOU z=VVekTOa`N@`GO)8;<%M$tn_^KnNkc@rcA9_mlu3gtW!Amb)b(>;W_6=f4QgvAu5T zY=MlYfLva-zC5t4JhKGG2C8k#we5lN6coigII&)c007*1b60t0tp|XHj}5{EibXyi zsUOmicy>LGTQ4pt?-N%igb4@-;Yj@u0AN0wajo1D0RTAJyaWJfnwbFrTx?x%q+E!= zQhG%T0P12Poy&Ph1cP{cZyJET%*b5=svM9LPA>1q zRQDt|=!}#b$z!2o#(o^AsRHmf1=qzw0JH%}iLuJr^vv^wX(pt~0ofDffo)86Ps&Pn zm&C|wI^XJy&@eKxo`u>QM#?Fyyx=Gk(u0V4!wob`usl16%GyrXLXB{&@D$N#o5st! zpxE8hIM@2zR2W@`T;7k8Oa}^En*e~~BPBwlc>7bsFe1sXC7BLe0mL39XCxxMw3|Vgd|7G z0h2YN`GAMY+D-&&s<@XE_L6EOhgMEPWqIQM9D2XMGyMP2&!ZT&AxB-d3Ds}8*EhM= zs7ti-4}KYDS5~<&fraJ>p(Qy_`P}FQG|kKi$+Z3PLUV*`{d_i~8xtWR6a!X@oxm2; z-dA!F|82_znvPx7$f{=e8B2Okvwh#n+=nn*5M8Si02wfvYqcHN~sY`!^1wE9^iih+N zta%9{y0lQRxVoaA#7m|Iv1CYQi>|&7;~Qt*yqTRhGg~44U}5I%yzl$H?|tuk-}eEB z_{Z=$nUq}25&(Gd!LN=DhkcG@6^KqCgb?0%o6H~glmH=wv`6(TcS}Op0#?Y(e-WNz zd*70aSu&mg(ivs-rGXvwnI$kbP-R=LZ3~Pipep9U$?Am&0Kly`x7BBM^#IWDu|b$X zp~%N0^+P%mPp?LCked6+jFacpF9H}1y0L(AWxK{3n005k9UIqX(rBVQZ^Q{Yx zlnW79POcipVv=MSTbUiq4}r0PDj!RNT0pBj9`6?l$--N(oLt3^&z}tAqAPa;($c*| zVvR8F|N4fKX&G(HsajHyRAz-~qR=H1;t+#Y9>Hd@DsLxhHqE)VaXNhFD zx6mF{p7-j6oZ*>w3QWW1ZcxT4LityxQv?r`I$g>Cr&tI+9wAL75nAG|wq U(RM#?6951J07*qoM6N<$g6wM3EC2ui literal 0 HcmV?d00001 diff --git a/Assets/Images/Enemieeeee/przeciwnik chod do przodu2.png.meta b/Assets/Images/Enemieeeee/przeciwnik chod do przodu2.png.meta new file mode 100644 index 0000000..3a49eb0 --- /dev/null +++ b/Assets/Images/Enemieeeee/przeciwnik chod do przodu2.png.meta @@ -0,0 +1,117 @@ +fileFormatVersion: 2 +guid: f70eeee37d02226cd9335c635d56e3f1 +TextureImporter: + internalIDToNameTable: [] + 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: 0 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 32 + 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: 256 + resizeAlgorithm: 1 + textureFormat: 4 + 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 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + customData: + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spriteCustomMetadata: + entries: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Images/Enemieeeee/przeciwnik chod do tylu na lewo1.png b/Assets/Images/Enemieeeee/przeciwnik chod do tylu na lewo1.png new file mode 100755 index 0000000000000000000000000000000000000000..def4bdb33a648cd5283e33a2b046bd616fe60cb4 GIT binary patch literal 732 zcmV<20wev2P)SbP%kZb>{%%EkoHhiN)85k(mz2^5bUK;Jy{P0#Y-Xd z)<6rPF^ct=OJkZ-Xbbfc!7@F>S$Ah=cizm-+F$CNv^z33P{Ye07bV~okh=ikW3tpYH{*us{7<#8djJz!hpxK-{s9#wkhKfgsuKY0Bm}}*aISj$?9VP*b*6_S#1TzxEH*u z|9?e(t&*%A0+}bc@tYFM7aJ^JY_Pptjsb8#O&(_Q z22&c^%jIzJ@BjdmRdF!vM!wka8OltjF|{#+$45t@M!8Cb8l2xPu!g!`Na;l5900gZ zJW-`W&3Ap_0f_QKs0Tzft1V=v(>Q$jMOubM4UML8kyU#kunT0X7iF^)lRXdx5#J_HV69tIl#F2uhC003uo z>=EgQ%jY9lJ|7_iXuXU$#LABkQo~$d-%bLMA6$$9e!j~90PZ|#x*)&4eWp&24r$acE=1Y@6!BLz1tO6`q;q8J`AXOaP>OOk zObnpiNf~!YtpM22?F7&XjTL~^XM@IhKn93o#0o%CGX8fg?*Fjnl}fQZ5Vr=z28a@+ z(UB+swQs1E15t4n4N^O%#z`njw?)fE4goc$i2)?l3nqs^Y~A!_OMd~5q4`6BxOF1{ O0000w#(q#uyW|zxp6zWdcaKE>8rmOL)m1G@+C44ag82%=_xF90UJpzQ%3LTC1g08EJt(5N&+ZLSym zvp+j}X9r+wE$i?Q%mtz3DPo2SZ zb}*@-om>ukPxk;oS{3`EUgV4QfT7Gp8sn>zcy@RgY1CDzP=#~V1gp#Ig^-Rn?g9XR z6OUJ^Pz^la_yFR(5a|J4jY<=li8Q`1d=r*oUj2h<++^im2(1Fq?0K0i#bgh}LBx4P zwmg;U0AB-I?NqGs{=u}gFoghQ#I8|F9<0yFS9vG|_&%P;z@ z?23u5>5|4j5kQ<&;5wcIO6P&7`=KN<;(;UyN(P|Z8(0Ofbqz<(0sdbzFWvl5NQTALu$@g1EA)N_9d0fpp9_-pZX0u6!DxMbh;n_0000a4zx%>t#TH^S=(m8 zLR>viE72x7uR2Jh#TF-%BFwONyR-Yvk4=o`!NKzF?Y#H>oY@8bH}}ze`f$Nu{(judfj-vB=lsiSa7j3e2CiTm%=6!Q}aA_u&^I1*tF3sy}`YA3NG$H zc-(PsJR&BFgN1zn$sHpTks5&{asb$wKaAOUOD2)0!AciUMl+8nSwL1>4fI}%p9!P_ ze821@g`cApy0INmHTka*@rfshu;= ztBX<6OrFdb>mIj(juc9HZvJ^d_l<{Az$5_{kgDY7r$7gk;>%S4m7FYK>9P+?mwhDG zciJID^^M!w&B4SvHyJqHv}wC_ZWxTNI*Aib6c|Uqv_MG$WFHr7fFwZo8z2Rw z8u0zH^BRyw!K6OOMX34-mWo{3P^D&a5uj2tRzA^m6Xun!+lgN=-S0#pEm!ma0000< KMNUMnLSTZ4R7zt2 literal 0 HcmV?d00001 diff --git a/Assets/Images/Enemieeeee/przeciwnik chod do tylu na prawo1.png.meta b/Assets/Images/Enemieeeee/przeciwnik chod do tylu na prawo1.png.meta new file mode 100644 index 0000000..4763e1d --- /dev/null +++ b/Assets/Images/Enemieeeee/przeciwnik chod do tylu na prawo1.png.meta @@ -0,0 +1,117 @@ +fileFormatVersion: 2 +guid: 469e71843d9a5c38283dc9229a28546e +TextureImporter: + internalIDToNameTable: [] + 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: 0 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + 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 + 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: 4 + 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 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + customData: + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spriteCustomMetadata: + entries: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Images/Enemieeeee/przeciwnik chod do tylu na prawo2.png b/Assets/Images/Enemieeeee/przeciwnik chod do tylu na prawo2.png new file mode 100755 index 0000000000000000000000000000000000000000..7a063b378c6686ff7b37281a1d763edd10d95717 GIT binary patch literal 717 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 literal 0 HcmV?d00001 diff --git a/Assets/Images/Enemieeeee/przeciwnik chod w lewo2.png.meta b/Assets/Images/Enemieeeee/przeciwnik chod w lewo2.png.meta new file mode 100644 index 0000000..05d813c --- /dev/null +++ b/Assets/Images/Enemieeeee/przeciwnik chod w lewo2.png.meta @@ -0,0 +1,117 @@ +fileFormatVersion: 2 +guid: 0e27b20a112bf71d2b0a87586ce8cc1a +TextureImporter: + internalIDToNameTable: [] + 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: 0 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + 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 + 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: 4 + 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 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + customData: + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spriteCustomMetadata: + entries: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Images/Enemieeeee/przeciwnik chod w prawo1.png b/Assets/Images/Enemieeeee/przeciwnik chod w prawo1.png new file mode 100755 index 0000000000000000000000000000000000000000..e934ebb96cf440516ac1beed86b2365f9c28fdd1 GIT binary patch literal 988 zcmV<210(#2P) zB2NI|(~rV=I%me#v`J{JCf*kaAqsgqXGS__1^~E&h3mZFQcVaUOQB1Jv=VqN!EJ$B zQXI~=;+or(nziL5pz4p0l+?0#60 zScDwljD)4%I9=~ZWL0Q9p%(xUN%EBvH%epc{y)&0bBq^Ju4d6{s7CFHzdStqi%oma?j zTeTHYt%UUMO_%QYhE_x(U=pxAX~Au4p&H7?lgRFmBD+7TTx+-hHEj7;$edpwbAAE& z%Xro2Skp3BMbv!a0RZgo?g9XwjXy;y7C^`S=VhdC{?ySM87(xl|{%0PLZ zs0dw^lH?=3eOY8I3ka=sV%Fn9QkDS#w$>KB|M*#GTnb$u=+vY1 z7X>X$D4bpyFS~n<6F@(uww?`SEDIWcs03beT>$`)u`FoLOGT7g;b-U`mjLEPJe_cp zTN7u>`PkZk=6>+Wrb5osLvTgH-yiO32-TqEdo#xXhjTIsa0dxl0r2AM6aXNeH~|t` zQ_~uO7hD!t8Gc(h7%pC`HzRUq!&(p#W2gWTTnng6favC=Ap)9B`FgqQ6RjP74dD=JCsuma^-M+j(Yj4e z`>h9I3mD~y!UBj~{NB}mz*`eAF9GX+0NxF3T?` literal 0 HcmV?d00001 diff --git a/Assets/Images/Enemieeeee/przeciwnik chod w prawo1.png.meta b/Assets/Images/Enemieeeee/przeciwnik chod w prawo1.png.meta new file mode 100644 index 0000000..330d5b9 --- /dev/null +++ b/Assets/Images/Enemieeeee/przeciwnik chod w prawo1.png.meta @@ -0,0 +1,117 @@ +fileFormatVersion: 2 +guid: d645b8a571a88467c9dc1763a6fce03f +TextureImporter: + internalIDToNameTable: [] + 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: 0 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + 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 + 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: 4 + 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 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + customData: + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spriteCustomMetadata: + entries: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Images/Enemieeeee/przeciwnik chod w prawo2.png b/Assets/Images/Enemieeeee/przeciwnik chod w prawo2.png new file mode 100755 index 0000000000000000000000000000000000000000..a73c18e433dc2e28d7eea85015d7ac8c4f6aa2e9 GIT binary patch literal 946 zcmV;j15NyiP)5JT}{M=PX4A>;SK{2o_*;2DVAW^X3lez1M{VE-oq16`QjB!oo- zQzY!{2m+|gE_D$R59aqQq-N-cIRpl}Scb0c1Lm-5u70SQ3%Y_68#ymn)`>iSRW``m z1J;VDRziBc+U+^M)QU(1Oahjs{AdqUsv-R_htlpSO1q=Ry@m@gqqY1J#nUqsPtTxz z9Cv+>H7#>hL^r-i0028XI{<(u zM|i4K)fnmPFQMpPKysxEvyljLng#%9ZE41vcOQhtrSSBDzW$Q&dvY#^^|dv$wlt%y zcO6Z^I4h5s09B1uC6>v#9GZf0`!800)>2(C!@>+Nj|p&69?V15snVjq@SsksAUKN%au7m!+#Ie{Kd zDeB3J%yGbNM)js-?sP00bqVf}n>@cEv+Vu&j9~ z=n~OFk+`;Edy4Il>k5{KU_*Ed=5$!+@!q_7@6F76s|Wi|Z)e`j_s##${Qtl6fU}N} z%AidCkO08*54A?y!bnJIt{T|^gb>1OABywa0~J6BA;Ssl%KeIvwtyS-TtRw_u-`KI zL$b04?CX`)U#$OYJhK9pXT!qt3R_@h4F)j}Dyx?g008&i+&7-t)dN8H$8Ko>buuq6 zcFtQwOtmG@9&0v!uijdf79hO|7dz(x0J;38Z*nC80C3^X4gjDxn*{*ey!%awTuQ)B zX4lr1(llFJacizR0+wgPAyx#nfSEjji*U6-acd4& z!VdvhlMf}fkm~mFA{kO-$C8N`hn6~^Wu_HxAAIo~=q7+#K`9q(MAub@aUmpNa>GU-1vTS@$ z0hC+@3nL+x)Dgma;B#U^irfLVPFD*Yr&+^~L6dt5pyWq;(c@o9$M?Q3J(ea11YB^m z7e(oyjM70F+pqgv$sP8KyjjfX@9QBildtGA!nc#gNpM?ryeo!lj}AQNSE>p1TmgEn z;J7#9T`}SLgyKL)M~7oyW7DW5$i%y1__}oc_?LGHCse=n_w^6}sA-tt_7}J2F#6}c zt-Uv!^_*Y0fTZOa#nYe9kjrm!-=(QKkdlmo=I^06Ay3{7+xlsW77f+X0?e3dO8@}c z^UW4=KrUYZk~KVg2UITYTIxkJ_VrpJ7o18x@LzzE0M(1gzywqaO2@EVvfq}dLf8W4 zBX#clWuv|LYwu(PxQRG10W5+LAuWK7Zhl2ny*A1DG6XJBfk*d1ER!Lsfc*w?A0vqGCME!5F#dGluGe{W{>kl$(M&Aj)0?|<+8|3Ci#CpczA zbUI}Vdkg@k-q)LLvx5<>vFcPiFvggy{a#Am9;yJw7`s1XpLtLb$`^h*ZyuP};_LyS>qD2afCiP9 z=Q^fsBA(xv!Oi3~^M3jIva$f>O*q#v4FJd&)&rAk2>^gIx3>TQJ-HkJ;Od>PTI5Os zwzAufwzOe5+DaRV+6Y*fj7CHe+yYkeOlDlkB`Yt%R(2b|zkhVJtIj+KSpV=QOB)6Q zz|w}nVzChhKr0sbnyY_!lK}^3Tr|1vm{yRMAQF`a9~shy!L37rr&>PyNVFc!=bF$u z(dKD|v|(T^zG`|&N{-;`38}Le$$^9LEXD{iQ2APb&z{3-1*;zr$vI>}$|}Os0;P=v zE<_&zum>MbY$L5W`%@w$WyiA77kjompmm}RZy$d4?dT+9`i08rO7A$?xjNMPvC zJ4bs@F6TQwIf3Nq8OPHf&yX*yOW)<8nv#+!*LAE_5dLi_hG&(WP)UGTf~l6bZRwgQ zf+FBp!tsd!Edjc9z|aKL3R)>ywd^cb=z?qk>ybKj`n=g*`nhv70=z^VnE(-Ch)@f}n>@cEv+Vu&j9~ z=n~OFk+`;Edy4Il>k5{KU_*Ed=5$!+@!q_7@6F76s|Wi|Z)e`j_s##${Qtl6fU}N} z%AidCkO08*54A?y!bnJIt{T|^gb>1OABywa0~J6BA;Ssl%KeIvwtyS-TtRw_u-`KI zL$b04?CX`)U#$OYJhK9pXT!qt3R_@h4F)j}Dyx?g008&i+&7-t)dN8H$8Ko>buuq6 zcFtQwOtmG@9&0v!uijdf79hO|7dz(x0J;38Z*nC80C3^X4gjDxn*{*ey!%awTuQ)B zX4lr1(llFJacizR0+wgPAyx#nfSEjji*U6-acd4& z!VdvhlMf}fkm~mFA{kO-$C8N`hn6~^Wu_HxAAIo~=q7+#K`9q(MAub@aUmpNa>GU-1vTS@$ z0hC+@3nL+x)Dgma;B#U^irfLVPFD*Yr&+^~L6dt5pyWq;(c@o9$M?Q3J(ea11YB^m z7e(oyjM70F+pqgv$sP8KyjjfX@9QBildtGA!nc#gNpM?ryeo!lj}AQNSE>p1TmgEn z;J7#9T`}SLgyKL)M~7oyW7DW5$i%y1__}oc_?LGHCse=n_w^6}sA-tt_7}J2F#6}c zt-Uv!^_*Y0fTZOa#nYe9kjrm!-=(QKkdlmo=I^06Ay3{7+xlsW77f+X0?e3dO8@}c z^UW4=KrUYZk~KVg2UITYTIxkJ_VrpJ7o18x@LzzE0M(1gzywqaO2@EVvfq}dLf8W4 zBX#clWuv|LYwu(PxQRG10W5+LAuWK7Zhl2ny*A1DG6XJBfk*d1ER!Lsfc*w?A0vqGCME}5jPMw4za`Uo zGP?-u<_=e1QTj)FW(CZQ`?=@kw!rKnG-4~rtX@a}0Ni_hUwdX(4*+fN+Jpu8L^@Bm zOd3QCH%8DLs?mPOZ^VTK2yepamPr6WD!t~JTuJ}{oV&9H0Jy!n3IMp?@kxqYNWfNd z$J7>6Ra4vc`b2RA%#8aLRs^+xo;;Bl5emt|F4#)$;K!HurgqVldjV+fF zRY@Q)KmbVP0#|dj_ihs4@Qkx2mz`4&E*B_%>*QmFn5t6iaKTY6UA^KjLFI*us2#0y zv_ec(vE09;MM<6-!8H={uAU_a4%0K6BiKacY5}@>3cVHdaeyVKuu4*T5sntvUZ22a ze;)v2@}a~A(wuobPln{#v1IUN-cSeBj@IGLgB90-P6DVEq;kP>|B}owOK=Go>hu{3 z5i4J_;4M%JS`+d@AGU=G5*d=p>K+rRK4EbQ2m}TISQnypNF+uO2n=Y%iNpwfW!U(x z0w}o%rh*DfY76c?@F6lNL~aAqOGgX*OS76E3r!AiSfH}H2hkco#u|c-{XRz@3zKsR z7;6Y3-&O|zcy#8bBe~6f5jP9P?yDwJ-nb86*+&3CK3fl8dK!d`K060r+#GgusSI+djP2eCw}#w!`2;9;q3o44A)l>BK3k9d`EqouY#REoBEqd9 zY(%TD5v}49;2H-iZp|s=1;}1m6Z#gyw*7jtZvlXtn1Z{2q~#gK({Im^O0QY=rK!3g zB^d?H-(6usp3HZf-qRG#8>)o`=rPt zf@7%%{tJ*2AbSy6FagDa)G<8xX}&Fy1-AwCN9y$1OIrK(_pe7Iz)8fB31CqO5yAr4 z=;l>KQBDDG7zQLyf&PDA>9s2|Q)oE$IN(`8E|tMhr%&p8k(2()?.gameObject.SetActive(false); animator.SetState(DoomSpriteAnimator.AnimState.Death); Debug.Log($"[DoomEnemy] Wróg zginął! Usuwanie obiektu za 3 sekundy."); - Destroy(gameObject, 3f); // usuń po 3 sekundach + Destroy(gameObject, .25f); // usuń po 3 sekundach break; } } @@ -278,6 +281,7 @@ void DealDamage() /// public void TakeDamage(float damage) { + Debug.Log("Damage Taken"); if (state == EnemyState.Dead) return; currentHealth -= damage; diff --git a/Assets/Scripts/Enemy/DoomSpriteAnimator.cs b/Assets/Scripts/Enemy/DoomSpriteAnimator.cs index da390a5..b8e3439 100644 --- a/Assets/Scripts/Enemy/DoomSpriteAnimator.cs +++ b/Assets/Scripts/Enemy/DoomSpriteAnimator.cs @@ -90,15 +90,35 @@ void AdvanceFrame(DoomEnemySprites.DirectionalAnimation anim) /// /// Natychmiast ustawia stan animacji. /// + public void SetState(AnimState newState) { - if (CurrentState == newState && newState != AnimState.Pain) return; - + if (CurrentState == newState && newState != AnimState.Pain) + return; + CurrentState = newState; currentFrame = 0; timer = 0f; IsAnimationFinished = false; hasPendingState = false; + + // FIX: Immediately apply frame 0 so there's no blank frame + ApplyCurrentFrame(); + } + + private void ApplyCurrentFrame() + { + if (sprites == null || billboard == null) return; + DoomEnemySprites.DirectionalAnimation anim = GetCurrentAnim(); + if (anim == null || anim.frames == null || anim.frames.Length == 0) + return; + + Sprite frame = anim.GetFrame( + billboard.CurrentDirection, + currentFrame + ); + if (frame != null) + billboard.SpriteRenderer.sprite = frame; } /// diff --git a/Assets/Scripts/Enemy/EnemyProjectile.cs b/Assets/Scripts/Enemy/EnemyProjectile.cs index d0e2b72..d5da3d8 100644 --- a/Assets/Scripts/Enemy/EnemyProjectile.cs +++ b/Assets/Scripts/Enemy/EnemyProjectile.cs @@ -4,8 +4,8 @@ public class EnemyProjectile : MonoBehaviour { [HideInInspector] public float damage = 10f; - [HideInInspector] public float speed = 20f; - [HideInInspector] public float lifetime = 5f; + [HideInInspector] public float speed = 25f; + [HideInInspector] public float lifetime = 4f; [HideInInspector] public string playerTag = "Player"; private Rigidbody _rb; diff --git a/Assets/Scripts/Enemy/EnemySpawner.cs b/Assets/Scripts/Enemy/EnemySpawner.cs new file mode 100644 index 0000000..db5e3ad --- /dev/null +++ b/Assets/Scripts/Enemy/EnemySpawner.cs @@ -0,0 +1,134 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.Events; + +[System.Serializable] +public class EnemyEntry +{ + public GameObject prefab; + [Range(0f, 1f)] public float spawnChance = 1f; + public int minLevel = 1; +} + +public class EnemySpawner : MonoBehaviour +{ + [Header("Settings")] + public int currentLevel = 1; + public int baseEnemyCount = 1; + public int extraPerLevel = 2; + public float spawnInterval = 1.5f; + public float spawnRadius = 10f; + public int maxAlive = 10; + + [Header("Enemies")] + public List enemies = new(); + + [Header("Events")] + public UnityEvent OnLevelComplete; + public UnityEvent OnEnemySpawned; + + private int toSpawn; + private int defeated; + private List alive = new(); + private Coroutine _spawnCoroutine; + + public void StartLevel(int level) + { + // Stop any ongoing spawn routine from previous wave + if (_spawnCoroutine != null) + StopCoroutine(_spawnCoroutine); + + currentLevel = level; + defeated = 0; + toSpawn = baseEnemyCount + extraPerLevel * (level - 1); + alive.RemoveAll(e => e == null); + + Debug.Log( + $"[EnemySpawner] Starting level {level} — " + + $"spawning {toSpawn} enemies" + ); + + _spawnCoroutine = StartCoroutine(SpawnRoutine()); + } + + private IEnumerator SpawnRoutine() + { + int spawned = 0; + + while (spawned < toSpawn) + { + alive.RemoveAll(e => e == null); + + if (alive.Count < maxAlive) + { + var prefab = PickEnemy(); + if (prefab != null) + { + Vector2 rnd = Random.insideUnitCircle * spawnRadius; + Vector3 pos = + transform.position + + new Vector3(rnd.x, 0f, rnd.y); + + var enemy = + Instantiate(prefab, pos, Quaternion.identity); + alive.Add(enemy); + spawned++; + OnEnemySpawned?.Invoke(enemy); + } + } + + yield return new WaitForSeconds(spawnInterval); + } + } + + public void EnemyDefeated(GameObject enemy) + { + alive.Remove(enemy); + defeated++; + + Debug.Log( + $"[EnemySpawner] Enemy defeated: {defeated}/{toSpawn}" + ); + + if (defeated >= toSpawn) + { + Debug.Log( + $"[EnemySpawner] Level {currentLevel} complete!" + ); + OnLevelComplete?.Invoke(); + } + } + + private GameObject PickEnemy() + { + List valid = enemies.FindAll(e => + e.prefab != null && currentLevel >= e.minLevel + ); + + if (valid.Count == 0) + return null; + + float total = 0f; + foreach (var e in valid) + total += e.spawnChance; + + float roll = Random.Range(0f, total); + float sum = 0f; + + foreach (var e in valid) + { + sum += e.spawnChance; + if (roll <= sum) + return e.prefab; + } + + return valid[^1].prefab; + } + + private void OnDrawGizmosSelected() + { + Gizmos.color = Color.red; + Gizmos.DrawWireSphere(transform.position, spawnRadius); + } +} \ No newline at end of file diff --git a/Assets/Scripts/Enemy/EnemySpawner.cs.meta b/Assets/Scripts/Enemy/EnemySpawner.cs.meta new file mode 100644 index 0000000..325c859 --- /dev/null +++ b/Assets/Scripts/Enemy/EnemySpawner.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: fa9ce6b2a32489cefac6257c4da5bd97 \ No newline at end of file diff --git a/Assets/Scripts/LevelCounter.cs b/Assets/Scripts/LevelCounter.cs index cfbe6ad..3b7b661 100644 --- a/Assets/Scripts/LevelCounter.cs +++ b/Assets/Scripts/LevelCounter.cs @@ -2,17 +2,25 @@ public class LevelCounter : MonoBehaviour { - // Start is called once before the first execution of Update after the MonoBehaviour is created - private int _currentLevel = 0; + public int currentLevel = 1; + public EnemySpawner spawner; - public void nextLevel() + void Awake() { - _currentLevel++; - Debug.Log(_currentLevel); + if (spawner == null) + spawner = FindObjectOfType(); } - public int GetCurrentLevel() + void Start() + { + currentLevel = 1; + spawner.StartLevel(currentLevel); + } + + public void nextLevel() { - return _currentLevel; + currentLevel++; + Debug.Log($"[LevelCounter] Level → {currentLevel}"); + spawner.StartLevel(currentLevel); } -} +} \ No newline at end of file diff --git a/Assets/Scripts/PlayerBullet.cs b/Assets/Scripts/PlayerBullet.cs new file mode 100644 index 0000000..bbf261b --- /dev/null +++ b/Assets/Scripts/PlayerBullet.cs @@ -0,0 +1,30 @@ +using UnityEngine; + +public class PlayerBullet : MonoBehaviour +{ + public float damage = 25f; + public float lifetime = 5f; + + void Start() + { + Destroy(gameObject, lifetime); + } + + void OnTriggerEnter(Collider other) + { + DoomEnemyController enemy = + other.GetComponent(); + + if (enemy != null) + { + enemy.TakeDamage(damage); + Destroy(gameObject); + return; + } + + if (!other.CompareTag("Player")) + { + Destroy(gameObject); + } + } +} \ No newline at end of file diff --git a/Assets/Scripts/PlayerBullet.cs.meta b/Assets/Scripts/PlayerBullet.cs.meta new file mode 100644 index 0000000..6d6148f --- /dev/null +++ b/Assets/Scripts/PlayerBullet.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 61fb1b32343a99732b2283e70bc9add3 \ No newline at end of file diff --git a/Assets/Scripts/PlayerShooting.cs b/Assets/Scripts/PlayerShooting.cs index 006241f..907d9ac 100644 --- a/Assets/Scripts/PlayerShooting.cs +++ b/Assets/Scripts/PlayerShooting.cs @@ -15,7 +15,7 @@ public class PlayerShooting : MonoBehaviour [SerializeField] private Image gunImage; [Header("Gun Settings")] - public int damagePerShot = 20; + public int damagePerShot = 10; public float timeBetweenShots = 0.8f; public float range = 50f; public bool CanShoot = true; @@ -155,6 +155,7 @@ private IEnumerator ShootRoutine(InputAction.CallbackContext ctx) private void Shoot(InputAction.CallbackContext ctx) { + Debug.Log("kula leci"); if (playerCamera == null) return; if (projectilePrefab != null) diff --git a/Assets/Scripts/PortalTeleporter.cs b/Assets/Scripts/PortalTeleporter.cs index a1fd3e2..3e9a64f 100644 --- a/Assets/Scripts/PortalTeleporter.cs +++ b/Assets/Scripts/PortalTeleporter.cs @@ -6,59 +6,121 @@ public class PortalTeleporter : MonoBehaviour static float _cooldownUntil = 0f; const float COOLDOWN = 1f; - + [Tooltip("Tag obiektu LevelCounter")] public string levelCounterTag = "LevelCounter"; - + + [Tooltip("Block portal until wave is cleared")] + public bool requireWaveClear = true; + private LevelCounter _levelCounter; + private EnemySpawner _spawner; + private bool _waveCleared = false; + + private float _lastDot; void Awake() { - _levelCounter = GameObject.FindGameObjectWithTag(levelCounterTag).GetComponent(); + var lcObj = + GameObject.FindGameObjectWithTag(levelCounterTag); + if (lcObj != null) + { + _levelCounter = + lcObj.GetComponent(); + _spawner = _levelCounter.spawner; + } + + if (_spawner == null) + _spawner = FindObjectOfType(); } - private float _lastDot; + void Start() + { + // Listen for wave completion to unlock portal + if (_spawner != null) + { + _spawner.OnLevelComplete.AddListener(OnWaveCleared); + // First wave — portal locked until cleared + _waveCleared = false; + } + } + + void OnWaveCleared() + { + _waveCleared = true; + Debug.Log($"[{gameObject.name}] Wave cleared — portal unlocked!"); + } void OnTriggerEnter(Collider other) { - if (!other.CompareTag("Player")) return; - _lastDot = Vector3.Dot(transform.forward, other.transform.position - transform.position); + if (!other.CompareTag("Player")) + return; + _lastDot = Vector3.Dot( + transform.forward, + other.transform.position - transform.position + ); } void OnTriggerStay(Collider other) { - if (!other.CompareTag("Player")) return; - if (Time.time < _cooldownUntil) return; - if (linkedPortal == null) { Debug.LogError($"[{gameObject.name}] linkedPortal not assigned!"); return; } + if (!other.CompareTag("Player")) + return; + if (Time.time < _cooldownUntil) + return; + if (linkedPortal == null) + { + Debug.LogError( + $"[{gameObject.name}] linkedPortal not assigned!" + ); + return; + } - float dot = Vector3.Dot(transform.forward, other.transform.position - transform.position); + // Block teleport until wave is cleared + if (requireWaveClear && !_waveCleared) + return; + + float dot = Vector3.Dot( + transform.forward, + other.transform.position - transform.position + ); - // Teleport only when crossing from front (+) to back (-) - bool crossedFrontToBack = _lastDot >= 0f && dot < 0f; _lastDot = dot; - if (dot >= 0f) return; + if (dot >= 0f) + return; // Teleport - Matrix4x4 m = linkedPortal.localToWorldMatrix * transform.worldToLocalMatrix; + Matrix4x4 m = + linkedPortal.localToWorldMatrix + * transform.worldToLocalMatrix; + + CharacterController cc = + other.GetComponent(); + if (cc != null) + cc.enabled = false; - CharacterController cc = other.GetComponent(); - if (cc != null) cc.enabled = false; + other.transform.position = + m.MultiplyPoint3x4(other.transform.position); + other.transform.rotation = + m.rotation * other.transform.rotation; - other.transform.position = m.MultiplyPoint3x4(other.transform.position); - other.transform.rotation = m.rotation * other.transform.rotation; - - - if (cc != null) cc.enabled = true; + if (cc != null) + cc.enabled = true; - // Transform player velocity through the portal - PlayerMovement pm = other.GetComponent(); - if (pm != null) pm.TransformVelocityThroughPortal(m); + PlayerMovement pm = + other.GetComponent(); + if (pm != null) + pm.TransformVelocityThroughPortal(m); _cooldownUntil = Time.time + COOLDOWN; - Debug.Log($"[{gameObject.name}] Teleported to {other.transform.position}"); - - // Increnemt Level counter + + // Increment level and start next wave _levelCounter.nextLevel(); + _waveCleared = false; + + Debug.Log( + $"[{gameObject.name}] Teleported. " + + $"Now level {_levelCounter.currentLevel}" + ); } } \ No newline at end of file diff --git a/Assets/Scripts/Projectile.cs b/Assets/Scripts/Projectile.cs index 868104e..4ee2b15 100644 --- a/Assets/Scripts/Projectile.cs +++ b/Assets/Scripts/Projectile.cs @@ -5,20 +5,29 @@ public class Projectile : MonoBehaviour { private Rigidbody _rb; - [SerializeField] private float speed = 10000f; + [Header("Damage")] + [SerializeField] private float damage = 25f; + + [SerializeField] private float speed = 80f; [SerializeField] private float lifetime = 5f; + [Header("Raycast")] + [Tooltip("How far ahead the ray checks each frame (multiplier on frame distance)")] + [SerializeField] private float rayLookahead = 2f; + + [Tooltip("Layers the ray can hit")] + [SerializeField] private LayerMask raycastMask = ~0; + [Header("Visual")] [SerializeField] private Texture2D tex1; [SerializeField] private Texture2D tex2; [SerializeField, Min(0f)] private float animationFps = 12f; - [SerializeField] private SpriteRenderer targetSpriteRenderer; - [SerializeField] private Renderer targetRenderer; private float _age; + private bool _damageDealt; // animation private MaterialPropertyBlock _mpb; @@ -26,12 +35,13 @@ public class Projectile : MonoBehaviour private float _animTimer; private int _frameIndex; - private Sprite _spr1; private Sprite _spr2; - private static readonly int BaseMapId = Shader.PropertyToID("_BaseMap"); - private static readonly int MainTexId = Shader.PropertyToID("_MainTex"); + private static readonly int BaseMapId = + Shader.PropertyToID("_BaseMap"); + private static readonly int MainTexId = + Shader.PropertyToID("_MainTex"); private static Material _cachedSpriteMaterial; @@ -39,7 +49,6 @@ private void Awake() { _rb = GetComponent(); - if (targetSpriteRenderer == null) targetSpriteRenderer = GetComponent(); if (targetSpriteRenderer == null) @@ -47,13 +56,11 @@ private void Awake() if (targetSpriteRenderer != null) { - EnsureSpriteMaterial(targetSpriteRenderer); targetRenderer = null; } else { - if (targetRenderer == null) targetRenderer = GetComponent(); if (targetRenderer == null) @@ -63,7 +70,6 @@ private void Awake() _texPropertyId = ResolveTexturePropertyId(targetRenderer); } - _spr1 = CreateSprite(tex1); _spr2 = CreateSprite(tex2); @@ -75,20 +81,19 @@ private static void EnsureSpriteMaterial(SpriteRenderer sr) if (sr == null) return; - var mat = sr.sharedMaterial; if (mat != null && mat.shader != null) return; if (_cachedSpriteMaterial == null) { - - var urp2d = Shader.Find("Universal Render Pipeline/2D/Sprite-Unlit-Default"); + var urp2d = Shader.Find( + "Universal Render Pipeline/2D/Sprite-Unlit-Default" + ); if (urp2d != null) _cachedSpriteMaterial = new Material(urp2d); else { - var builtin = Shader.Find("Sprites/Default"); if (builtin != null) _cachedSpriteMaterial = new Material(builtin); @@ -104,10 +109,15 @@ private void OnEnable() _age = 0f; _animTimer = 0f; _frameIndex = 0; + _damageDealt = false; ApplyFrameTexture(); } - public void Launch(Vector3 direction, float? overrideSpeed = null, float? overrideLifetime = null) + public void Launch( + Vector3 direction, + float? overrideSpeed = null, + float? overrideLifetime = null + ) { if (direction.sqrMagnitude < 0.0001f) direction = transform.forward; @@ -118,6 +128,7 @@ public void Launch(Vector3 direction, float? overrideSpeed = null, float? overri _age = 0f; _animTimer = 0f; _frameIndex = 0; + _damageDealt = false; ApplyFrameTexture(); direction = direction.normalized; @@ -142,9 +153,114 @@ private void Update() var v = _rb.linearVelocity; if (v.sqrMagnitude > 0.0001f) + { _rb.transform.rotation = Quaternion.LookRotation(v); + CastDamageRay(v); + } + } + + /// + /// Casts a ray along the bullet's velocity each frame. + /// If it hits an enemy, deals damage immediately and flags + /// _damageDealt so OnTriggerEnter won't double-dip. + /// The bullet still flies to the hit point and gets destroyed + /// on trigger contact. + /// + private void CastDamageRay(Vector3 velocity) + { + if (_damageDealt) + return; + + Vector3 dir = velocity.normalized; + float rayDist = velocity.magnitude * Time.deltaTime * rayLookahead; + + Debug.DrawRay(transform.position, dir * rayDist, Color.red); + + if (!Physics.Raycast( + transform.position, + dir, + out RaycastHit hit, + rayDist, + raycastMask + )) + return; + + // Skip the player + if (hit.collider.CompareTag("Player")) + return; + + DoomEnemyController enemy = + hit.collider.GetComponent(); + if (enemy == null) + enemy = hit.collider.GetComponentInParent(); + + if (enemy != null) + { + Debug.Log( + "[Projectile] Raycast trafił wroga '" + + enemy.gameObject.name + + "'. Zadaję " + + damage + + " obrażeń." + ); + enemy.TakeDamage(damage); + _damageDealt = true; + // Don't destroy here — let the bullet visually reach the target + // and get cleaned up by OnTriggerEnter or lifetime. + } } + private void OnTriggerEnter(Collider other) + { + Debug.Log( + "[Projectile] OnTriggerEnter: Pocisk '" + + gameObject.name + + "' trafił '" + + other.gameObject.name + + "'" + ); + + // If raycast already dealt damage, just destroy — no double damage + if (_damageDealt) + { + if (!other.CompareTag("Player")) + { + Debug.Log( + "[Projectile] Obrażenia już zadane przez raycast. " + + "Niszczę pocisk." + ); + Destroy(gameObject); + } + return; + } + + // Fallback: raycast missed but trigger hit an enemy + DoomEnemyController enemy = + other.GetComponent(); + + if (enemy != null) + { + enemy.TakeDamage(damage); + _damageDealt = true; + Debug.Log( + "[Projectile] Trigger zadał " + + damage + + " obrażeń przeciwnikowi '" + + enemy.gameObject.name + + "'." + ); + Destroy(gameObject); + return; + } + + if (!other.CompareTag("Player")) + { + Destroy(gameObject); + } + } + + // ─── Animation (unchanged) ────────────────────────────────────────── + private void AnimateTexture() { if (animationFps <= 0f) @@ -158,7 +274,10 @@ private void AnimateTexture() if (_animTimer < frameDuration) return; - int steps = Mathf.Min(4, Mathf.FloorToInt(_animTimer / frameDuration)); + int steps = Mathf.Min( + 4, + Mathf.FloorToInt(_animTimer / frameDuration) + ); _animTimer -= steps * frameDuration; _frameIndex = (_frameIndex + steps) & 1; @@ -167,20 +286,24 @@ private void AnimateTexture() private void ApplyFrameTexture() { - // 2D: sprite renderer (bez materiałów) if (targetSpriteRenderer != null) { - var sprite = _frameIndex == 0 ? (_spr1 != null ? _spr1 : _spr2) : (_spr2 != null ? _spr2 : _spr1); + var sprite = + _frameIndex == 0 + ? (_spr1 != null ? _spr1 : _spr2) + : (_spr2 != null ? _spr2 : _spr1); if (sprite != null) targetSpriteRenderer.sprite = sprite; return; } - // 3D: renderer + property block if (targetRenderer == null) return; - Texture tex = _frameIndex == 0 ? (tex1 != null ? tex1 : tex2) : (tex2 != null ? tex2 : tex1); + Texture tex = + _frameIndex == 0 + ? (tex1 != null ? tex1 : tex2) + : (tex2 != null ? tex2 : tex1); if (tex == null) return; @@ -218,7 +341,11 @@ private static Sprite CreateSprite(Texture2D t) if (t == null) return null; - // Tworzymy raz w Awake; pivot w środku. - return Sprite.Create(t, new Rect(0, 0, t.width, t.height), new Vector2(0.5f, 0.5f), 100f); + return Sprite.Create( + t, + new Rect(0, 0, t.width, t.height), + new Vector2(0.5f, 0.5f), + 100f + ); } -} +} \ No newline at end of file diff --git a/ProjectSettings/TagManager.asset b/ProjectSettings/TagManager.asset index 1849280..ed3a14c 100644 --- a/ProjectSettings/TagManager.asset +++ b/ProjectSettings/TagManager.asset @@ -6,6 +6,7 @@ TagManager: tags: - Interface - LevelCounter + - PlayerBullet layers: - Default - TransparentFX