diff --git a/games/unity/.gitignore b/games/unity/.gitignore index 39cc9ea..453a891 100644 --- a/games/unity/.gitignore +++ b/games/unity/.gitignore @@ -312,3 +312,107 @@ TSWLatexianTemp* # Uncomment the next line to have this generated file ignored. #*Notes.bib +# REVTeX puts footnotes in the bibliography by default, unless the nofootinbib +# option is specified. Footnotes are the stored in a file with suffix Notes.bib. +# Uncomment the next line to have this generated file ignored. +#*Notes.bib + +# This .gitignore file should be placed at the root of your Unity project directory +# +# Get latest from https://github.com/github/gitignore/blob/main/Unity.gitignore +# +.utmp/ +/[Ll]ibrary/ +/[Tt]emp/ +/[Oo]bj/ +/[Bb]uild/ +/[Bb]uilds/ +/[Ll]ogs/ +/[Uu]ser[Ss]ettings/ +*.log + +# By default unity supports Blender asset imports, *.blend1 blender files do not need to be commited to version control. +*.blend1 +*.blend1.meta + +# MemoryCaptures can get excessive in size. +# They also could contain extremely sensitive data +/[Mm]emoryCaptures/ + +# Recordings can get excessive in size +/[Rr]ecordings/ + +# Uncomment this line if you wish to ignore the asset store tools plugin +# /[Aa]ssets/AssetStoreTools* + +# Autogenerated Jetbrains Rider plugin +/[Aa]ssets/Plugins/Editor/JetBrains* +# Jetbrains Rider personal-layer settings +*.DotSettings.user + +# Visual Studio cache directory +.vs/ + +# Gradle cache directory +.gradle/ + +# Autogenerated VS/MD/Consulo solution and project files +ExportedObj/ +.consulo/ +*.csproj +*.unityproj +*.sln +*.suo +*.tmp +*.user +*.userprefs +*.pidb +*.booproj +*.svd +*.pdb +*.mdb +*.opendb +*.VC.db + +# Unity3D generated meta files +*.pidb.meta +*.pdb.meta +*.mdb.meta + +# Unity3D generated file on crash reports +sysinfo.txt + +# Mono auto generated files +mono_crash.* + +# Builds +*.apk +*.aab +*.unitypackage +*.unitypackage.meta +*.app + +# Crashlytics generated file +crashlytics-build.properties + +# TestRunner generated files +InitTestScene*.unity* + +# Addressables default ignores, before user customizations +/ServerData +/[Aa]ssets/StreamingAssets/aa* +/[Aa]ssets/AddressableAssetsData/link.xml* +/[Aa]ssets/Addressables_Temp* +# By default, Addressables content builds will generate addressables_content_state.bin +# files in platform-specific subfolders, for example: +# /Assets/AddressableAssetsData/OSX/addressables_content_state.bin +/[Aa]ssets/AddressableAssetsData/*/*.bin* + +# Visual Scripting auto-generated files +/[Aa]ssets/Unity.VisualScripting.Generated/VisualScripting.Flow/UnitOptions.db +/[Aa]ssets/Unity.VisualScripting.Generated/VisualScripting.Flow/UnitOptions.db.meta +/[Aa]ssets/Unity.VisualScripting.Generated/VisualScripting.Core/Property Providers +/[Aa]ssets/Unity.VisualScripting.Generated/VisualScripting.Core/Property Providers.meta + +# Auto-generated scenes by play mode tests +/[Aa]ssets/[Ii]nit[Tt]est[Ss]cene*.unity* \ No newline at end of file diff --git a/games/unity/magisterka_1/Assets/AutoDestroy.cs b/games/unity/magisterka_1/Assets/AutoDestroy.cs new file mode 100644 index 0000000..f68f703 --- /dev/null +++ b/games/unity/magisterka_1/Assets/AutoDestroy.cs @@ -0,0 +1,21 @@ +using UnityEngine; + +public class AutoDestroy : MonoBehaviour +{ + [SerializeField] private float lifetime = 1.5f; + + private void OnEnable() + { + Invoke(nameof(DestroySelf), lifetime); + } + + private void OnDisable() + { + CancelInvoke(); + } + + private void DestroySelf() + { + Destroy(gameObject); + } +} diff --git a/games/unity/magisterka_1/Assets/AutoDestroy.cs.meta b/games/unity/magisterka_1/Assets/AutoDestroy.cs.meta new file mode 100644 index 0000000..4a82a1f --- /dev/null +++ b/games/unity/magisterka_1/Assets/AutoDestroy.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 70d41ee73b19902cd8a62a320dbde7d9 \ No newline at end of file diff --git a/games/unity/magisterka_1/Assets/BackgroundScroller.cs b/games/unity/magisterka_1/Assets/BackgroundScroller.cs new file mode 100644 index 0000000..b9c531e --- /dev/null +++ b/games/unity/magisterka_1/Assets/BackgroundScroller.cs @@ -0,0 +1,26 @@ +using UnityEngine; + +public class BackgroundScroller : MonoBehaviour +{ + [SerializeField] private float scrollSpeed = 2f; + [SerializeField] private float tileSizeY = 20f; + [SerializeField] private bool randomizeOffset; + + private Vector3 startPosition; + + private void Start() + { + startPosition = transform.position; + if (randomizeOffset) + { + float initialOffset = Random.Range(0f, tileSizeY); + startPosition -= Vector3.up * initialOffset; + } + } + + private void Update() + { + float newPosition = Mathf.Repeat(Time.time * scrollSpeed, tileSizeY); + transform.position = startPosition + Vector3.down * newPosition; + } +} diff --git a/games/unity/magisterka_1/Assets/BackgroundScroller.cs.meta b/games/unity/magisterka_1/Assets/BackgroundScroller.cs.meta new file mode 100644 index 0000000..5100c35 --- /dev/null +++ b/games/unity/magisterka_1/Assets/BackgroundScroller.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: d043389e784a98769b85b475b19a08c3 \ No newline at end of file diff --git a/games/unity/magisterka_1/Assets/Bullet.cs b/games/unity/magisterka_1/Assets/Bullet.cs index 3c197a3..5b940e2 100644 --- a/games/unity/magisterka_1/Assets/Bullet.cs +++ b/games/unity/magisterka_1/Assets/Bullet.cs @@ -1,23 +1,123 @@ +using System.Collections.Generic; using UnityEngine; public class Bullet : MonoBehaviour { - public float speed = 10f; + public static readonly List ActiveEnemyProjectiles = new List(); - void Update() + [SerializeField] private float defaultSpeed = 12f; + [SerializeField] private float defaultLifetime = 4f; + [SerializeField] private int defaultDamage = 1; + [SerializeField] private GameObject impactEffectPrefab; + + private Vector2 travelDirection = Vector2.up; + private float travelSpeed; + private float remainingLifetime; + private bool isEnemyProjectile; + private int damage; + + private void OnEnable() { - transform.Translate(Vector3.up * speed * Time.deltaTime); - if (transform.position.y > 10) Destroy(gameObject); // Out of bounds + remainingLifetime = Mathf.Max(0.1f, defaultLifetime); + travelSpeed = Mathf.Max(1f, defaultSpeed); + damage = Mathf.Max(1, defaultDamage); } - void OnTriggerEnter2D(Collider2D other) + private void Update() { - Debug.Log($"Bullet hit: {other.name} with tag: {other.tag}"); - if (other.gameObject.GetComponent() != null) + float step = travelSpeed * Time.deltaTime; + transform.position += (Vector3)(travelDirection * step); + + remainingLifetime -= Time.deltaTime; + if (remainingLifetime <= 0f) { - Debug.Log("Enemy destroyed!"); - Destroy(other.gameObject); - Destroy(gameObject); + Recycle(); } - } + } + + public void Initialize(Vector2 direction, float speed, bool enemyProjectile, float lifetime, int damageValue = 1) + { + travelDirection = direction.sqrMagnitude > 0f ? direction.normalized : Vector2.up; + travelSpeed = speed > 0f ? speed : defaultSpeed; + remainingLifetime = lifetime > 0f ? lifetime : defaultLifetime; + damage = Mathf.Max(1, damageValue); + + if (isEnemyProjectile && !enemyProjectile) + { + ActiveEnemyProjectiles.Remove(this); + } + + isEnemyProjectile = enemyProjectile; + + if (isEnemyProjectile && !ActiveEnemyProjectiles.Contains(this)) + { + ActiveEnemyProjectiles.Add(this); + } + } + + private void OnTriggerEnter2D(Collider2D collision) + { + if (isEnemyProjectile) + { + PlayerController player = collision.GetComponent(); + if (player != null) + { + SpawnImpact(); + player.TakeHit(damage, transform.position); + Recycle(); + } + } + else + { + Enemy enemy = collision.GetComponent(); + if (enemy != null) + { + SpawnImpact(); + enemy.ApplyDamage(damage); + Recycle(); + } + } + } + + private void SpawnImpact() + { + if (impactEffectPrefab != null) + { + Instantiate(impactEffectPrefab, transform.position, Quaternion.identity); + } + } + + private void OnDestroy() + { + if (isEnemyProjectile) + { + ActiveEnemyProjectiles.Remove(this); + } + } + + private void Recycle() + { + if (isEnemyProjectile) + { + ActiveEnemyProjectiles.Remove(this); + } + + Destroy(gameObject); + } + + public static void ClearEnemyProjectilesWithEffect() + { + if (ActiveEnemyProjectiles.Count == 0) return; + + Bullet[] snapshot = ActiveEnemyProjectiles.ToArray(); + ActiveEnemyProjectiles.Clear(); + + for (int i = 0; i < snapshot.Length; i++) + { + Bullet projectile = snapshot[i]; + if (projectile == null) continue; + projectile.SpawnImpact(); + Destroy(projectile.gameObject); + } + } } diff --git a/games/unity/magisterka_1/Assets/Enemy.cs b/games/unity/magisterka_1/Assets/Enemy.cs index c8095fa..2ffbc00 100644 --- a/games/unity/magisterka_1/Assets/Enemy.cs +++ b/games/unity/magisterka_1/Assets/Enemy.cs @@ -1,21 +1,168 @@ +using System.Collections.Generic; using UnityEngine; public class Enemy : MonoBehaviour { - public float speed = 2f; + public static readonly List ActiveEnemies = new List(); - void Update() + [Header("Durability")] + [SerializeField] private int maxHealth = 12; + [SerializeField] private int scoreValue = 50; + + [Header("Movement")] + [SerializeField] private float verticalSpeed = 2.2f; + [SerializeField] private float horizontalAmplitude = 2.5f; + [SerializeField] private float horizontalFrequency = 1.8f; + [SerializeField] private float despawnY = -7.5f; + [SerializeField] private float despawnX = 14f; + + [Header("Weaponry")] + [SerializeField] private Bullet enemyBulletPrefab; + [SerializeField] private Transform[] muzzlePoints; + [SerializeField] private float fireInterval = 0.35f; + [SerializeField] private int bulletsPerBurst = 20; + [SerializeField] private float burstSpread = 360f; + [SerializeField] private float enemyBulletSpeed = 10f; + [SerializeField] private float enemyBulletLifetime = 6f; + + [Header("VFX")] + [SerializeField] private GameObject hitEffectPrefab; + [SerializeField] private GameObject deathEffectPrefab; + + private int currentHealth; + private float baseX; + private float waveSeed; + private float fireTimer; + private bool isDying; + + private void OnEnable() { - transform.Translate(Vector3.down * speed * Time.deltaTime); - if (transform.position.y < -10) Destroy(gameObject); // Out of bounds + currentHealth = Mathf.Max(1, maxHealth); + baseX = transform.position.x; + waveSeed = Random.Range(0f, Mathf.PI * 2f); + fireTimer = Random.Range(0f, fireInterval); + isDying = false; + + if (!ActiveEnemies.Contains(this)) + { + ActiveEnemies.Add(this); + } } - void OnTriggerEnter2D(Collider2D other) + private void OnDisable() { - Debug.Log($"Enemy hit: {other.name} with tag: {other.tag}"); - if (other.gameObject.GetComponent() != null) + ActiveEnemies.Remove(this); + } + + private void Update() + { + AdvanceMovement(); + HandleFiring(); + CheckBounds(); + } + + private void AdvanceMovement() + { + Vector3 position = transform.position; + position.y -= verticalSpeed * Time.deltaTime; + position.x = baseX + Mathf.Sin((Time.time + waveSeed) * horizontalFrequency) * horizontalAmplitude; + transform.position = position; + } + + private void HandleFiring() + { + if (enemyBulletPrefab == null) return; + + fireTimer -= Time.deltaTime; + if (fireTimer > 0f) return; + + fireTimer = Mathf.Max(0.05f, fireInterval); + + if (muzzlePoints != null && muzzlePoints.Length > 0) { - Destroy(other.gameObject); + for (int i = 0; i < muzzlePoints.Length; i++) + { + EmitBurst(muzzlePoints[i].position); + } + } + else + { + EmitBurst(transform.position); + } + } + + private void EmitBurst(Vector3 worldPosition) + { + int count = Mathf.Max(1, bulletsPerBurst); + float angleStep = burstSpread >= 360f ? 360f / count : burstSpread / Mathf.Max(1, count - 1); + float startAngle = burstSpread >= 360f ? 0f : -burstSpread * 0.5f; + + for (int i = 0; i < count; i++) + { + float degrees = startAngle + i * angleStep; + Vector2 direction = Quaternion.Euler(0f, 0f, degrees) * Vector2.down; + Bullet projectile = Instantiate(enemyBulletPrefab, worldPosition, Quaternion.identity); + projectile.Initialize(direction, enemyBulletSpeed, true, enemyBulletLifetime); + } + } + + private void CheckBounds() + { + Vector3 position = transform.position; + if (position.y < despawnY || Mathf.Abs(position.x) > despawnX) + { + Destroy(gameObject); + } + } + + public void ApplyDamage(int amount) + { + currentHealth -= Mathf.Max(1, amount); + if (hitEffectPrefab != null) + { + Instantiate(hitEffectPrefab, transform.position, Quaternion.identity); + } + + if (currentHealth <= 0 && !isDying) + { + HandleDeath(); + } + } + + private void HandleDeath() + { + if (isDying) return; + isDying = true; + + ScoreManager.Instance?.AddScore(scoreValue); + + if (deathEffectPrefab != null) + { + Instantiate(deathEffectPrefab, transform.position, Quaternion.identity); + } + + Destroy(gameObject); + } + + private void OnTriggerEnter2D(Collider2D other) + { + PlayerController player = other.GetComponent(); + if (player == null) return; + + player.TakeHit(1, transform.position); + HandleDeath(); + } + + public static void DestroyAllEnemies() + { + if (ActiveEnemies.Count == 0) return; + + Enemy[] snapshot = ActiveEnemies.ToArray(); + for (int i = 0; i < snapshot.Length; i++) + { + Enemy enemy = snapshot[i]; + if (enemy == null) continue; + enemy.HandleDeath(); } } } \ No newline at end of file diff --git a/games/unity/magisterka_1/Assets/EnemySpawner.cs b/games/unity/magisterka_1/Assets/EnemySpawner.cs index f4a3286..49dfdca 100644 --- a/games/unity/magisterka_1/Assets/EnemySpawner.cs +++ b/games/unity/magisterka_1/Assets/EnemySpawner.cs @@ -1,19 +1,79 @@ +using System.Collections; using UnityEngine; public class EnemySpawner : MonoBehaviour { - public GameObject enemyPrefab; - public float spawnInterval = 1f; - public float xRange = 8f; + [SerializeField] private GameObject enemyPrefab; + [SerializeField] private Transform[] spawnPoints; + [SerializeField] private float spawnAreaHalfWidth = 9f; + [SerializeField] private float gameDuration = 300f; + [SerializeField] private AnimationCurve spawnPerSecond = AnimationCurve.Linear(0f, 0.4f, 1f, 4.5f); + [SerializeField] private int maxSimultaneousEnemies = 120; - void Start() + private bool spawningActive; + + private void Start() { - InvokeRepeating("SpawnEnemy", 1f, spawnInterval); + spawningActive = true; + StartCoroutine(SpawnLoop()); } - void SpawnEnemy() + private IEnumerator SpawnLoop() { - float xPos = Random.Range(-xRange, xRange); - Instantiate(enemyPrefab, new Vector3(xPos, 6, 0), Quaternion.identity); + if (enemyPrefab == null) + { + yield break; + } + + float elapsed = 0f; + + while (spawningActive && elapsed < gameDuration) + { + float normalized = gameDuration > 0f ? Mathf.Clamp01(elapsed / gameDuration) : 1f; + float spawnsPerSecond = Mathf.Max(0.05f, spawnPerSecond.Evaluate(normalized)); + float waitTime = 1f / spawnsPerSecond; + + if (Enemy.ActiveEnemies.Count < maxSimultaneousEnemies) + { + SpawnWave(normalized); + } + + elapsed += waitTime; + yield return new WaitForSeconds(waitTime); + } + } + + private void SpawnWave(float normalizedTime) + { + int baseCount = Mathf.Clamp(Mathf.RoundToInt(1f + normalizedTime * 6f), 1, 8); + int burstSize = Mathf.Clamp(baseCount + Random.Range(0, 3), 1, 12); + + for (int i = 0; i < burstSize; i++) + { + SpawnEnemy(); + } + } + + private void SpawnEnemy() + { + Vector3 spawnPosition = transform.position; + + if (spawnPoints != null && spawnPoints.Length > 0) + { + Transform pick = spawnPoints[Random.Range(0, spawnPoints.Length)]; + spawnPosition = pick.position; + } + else + { + spawnPosition.x = Random.Range(-spawnAreaHalfWidth, spawnAreaHalfWidth); + } + + Instantiate(enemyPrefab, spawnPosition, Quaternion.identity); + } + + public void StopSpawning() + { + spawningActive = false; + StopAllCoroutines(); } } \ No newline at end of file diff --git a/games/unity/magisterka_1/Assets/GameDirector.cs b/games/unity/magisterka_1/Assets/GameDirector.cs new file mode 100644 index 0000000..9884851 --- /dev/null +++ b/games/unity/magisterka_1/Assets/GameDirector.cs @@ -0,0 +1,67 @@ +using UnityEngine; + +public class GameDirector : MonoBehaviour +{ + public static GameDirector Instance { get; private set; } + + [SerializeField] private EnemySpawner enemySpawner; + [SerializeField] private PlayerController player; + [SerializeField] private float gameDuration = 300f; + + private float elapsedTime; + private bool gameActive; + + public float GameDuration => gameDuration; + + private void Awake() + { + if (Instance != null && Instance != this) + { + Destroy(gameObject); + return; + } + + Instance = this; + gameActive = true; + } + + private void Start() + { + elapsedTime = 0f; + if (enemySpawner == null) + { + enemySpawner = FindObjectOfType(); + } + if (player == null) + { + player = FindObjectOfType(); + } + + ScoreManager.Instance?.RegisterGameStart(player != null ? player.CurrentLives : 0, gameDuration); + } + + private void Update() + { + if (!gameActive) return; + + elapsedTime += Time.deltaTime; + float remaining = Mathf.Max(0f, gameDuration - elapsedTime); + ScoreManager.Instance?.UpdateTimer(remaining); + + if (elapsedTime >= gameDuration) + { + gameActive = false; + enemySpawner?.StopSpawning(); + ScoreManager.Instance?.HandleGameClear(); + } + } + + public void HandlePlayerDeath() + { + if (!gameActive) return; + + gameActive = false; + enemySpawner?.StopSpawning(); + ScoreManager.Instance?.HandleGameOver(); + } +} diff --git a/games/unity/magisterka_1/Assets/GameDirector.cs.meta b/games/unity/magisterka_1/Assets/GameDirector.cs.meta new file mode 100644 index 0000000..de2f73c --- /dev/null +++ b/games/unity/magisterka_1/Assets/GameDirector.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: ad1d35ccb49f4d6e8bdf15be87950a2d \ No newline at end of file diff --git a/games/unity/magisterka_1/Assets/PlayerController.cs b/games/unity/magisterka_1/Assets/PlayerController.cs index 417d02c..8f24ebd 100644 --- a/games/unity/magisterka_1/Assets/PlayerController.cs +++ b/games/unity/magisterka_1/Assets/PlayerController.cs @@ -1,20 +1,153 @@ using UnityEngine; - public class PlayerController : MonoBehaviour { - public GameObject bulletPrefab; - public Transform shootPoint; - public float speed = 5f; + [Header("Movement")] + [SerializeField] private float moveSpeed = 7.5f; + [SerializeField] private Vector2 boundsMin = new Vector2(-8.5f, -4.5f); + [SerializeField] private Vector2 boundsMax = new Vector2(8.5f, 4.5f); - void Update() + [Header("Primary Fire")] + [SerializeField] private Bullet playerBulletPrefab; + [SerializeField] private Transform[] firePoints; + [SerializeField, Range(0.02f, 0.5f)] private float fireInterval = 0.08f; + [SerializeField, Range(1, 9)] private int volleySize = 3; + [SerializeField, Range(0f, 45f)] private float volleySpread = 12f; + [SerializeField] private float playerBulletSpeed = 22f; + [SerializeField] private float playerBulletLifetime = 3f; + [SerializeField] private bool allowMouseFire = true; + + [Header("Special Ability")] + [SerializeField] private KeyCode specialKey = KeyCode.X; + [SerializeField] private GameObject specialEffectPrefab; + + [Header("Durability")] + [SerializeField] private int maxLives = 3; + [SerializeField] private GameObject hitEffectPrefab; + [SerializeField] private GameObject deathEffectPrefab; + + private float fireTimer; + private int currentLives; + private bool specialUsed; + + public int MaxLives => maxLives; + public int CurrentLives => currentLives; + + private void Awake() { - float moveX = Input.GetAxis("Horizontal"); - float moveY = Input.GetAxis("Vertical"); - transform.position += new Vector3(moveX, moveY, 0) * speed * Time.deltaTime; - if (Input.GetKeyDown(KeyCode.Space)) + currentLives = Mathf.Max(1, maxLives); + } + + private void Update() + { + HandleMovement(); + HandlePrimaryFire(); + HandleSpecial(); + } + + private void HandleMovement() + { + Vector2 input = new Vector2(Input.GetAxisRaw("Horizontal"), Input.GetAxisRaw("Vertical")); + Vector3 velocity = input.normalized * moveSpeed * Time.deltaTime; + Vector3 candidate = transform.position + velocity; + candidate.x = Mathf.Clamp(candidate.x, boundsMin.x, boundsMax.x); + candidate.y = Mathf.Clamp(candidate.y, boundsMin.y, boundsMax.y); + transform.position = candidate; + } + + private void HandlePrimaryFire() + { + bool wantsToFire = Input.GetKey(KeyCode.Z) || (allowMouseFire && Input.GetMouseButton(0)); + if (!wantsToFire || playerBulletPrefab == null || firePoints == null || firePoints.Length == 0) { - Instantiate(bulletPrefab, shootPoint.position, Quaternion.identity); + fireTimer = Mathf.Max(0f, fireTimer - Time.deltaTime); + return; + } + + fireTimer -= Time.deltaTime; + if (fireTimer > 0f) return; + + fireTimer = Mathf.Max(0.02f, fireInterval); + foreach (Transform firePoint in firePoints) + { + EmitVolleyFrom(firePoint.position); } } + + private void EmitVolleyFrom(Vector3 origin) + { + int burstCount = Mathf.Max(1, volleySize); + if (burstCount == 1) + { + SpawnPlayerBullet(origin, Vector2.up); + return; + } + + float spreadTotal = volleySpread * (burstCount - 1); + float startAngle = -spreadTotal * 0.5f; + for (int i = 0; i < burstCount; i++) + { + float angle = startAngle + i * volleySpread; + Vector2 direction = Quaternion.Euler(0f, 0f, angle) * Vector2.up; + SpawnPlayerBullet(origin, direction.normalized); + } + } + + private void SpawnPlayerBullet(Vector3 position, Vector2 direction) + { + Bullet bulletInstance = Instantiate(playerBulletPrefab, position, Quaternion.identity); + bulletInstance.Initialize(direction, playerBulletSpeed, false, playerBulletLifetime); + } + + private void HandleSpecial() + { + if (specialUsed) return; + + bool activated = Input.GetKeyDown(specialKey) || Input.GetMouseButtonDown(1); + if (!activated) return; + + specialUsed = true; + if (specialEffectPrefab != null) + { + Instantiate(specialEffectPrefab, transform.position, Quaternion.identity); + } + + Bullet.ClearEnemyProjectilesWithEffect(); + Enemy.DestroyAllEnemies(); + ScoreManager.Instance?.RegisterBombUse(); + } + + public void TakeHit(int damage, Vector3 hitWorldPosition) + { + currentLives -= Mathf.Max(1, damage); + currentLives = Mathf.Max(0, currentLives); + + if (hitEffectPrefab != null) + { + Instantiate(hitEffectPrefab, hitWorldPosition, Quaternion.identity); + } + + ScoreManager.Instance?.SetLives(currentLives); + + if (currentLives <= 0) + { + HandleDeath(); + } + } + + private void OnEnable() + { + ScoreManager.Instance?.SetLives(currentLives); + } + + private void HandleDeath() + { + if (deathEffectPrefab != null) + { + Instantiate(deathEffectPrefab, transform.position, Quaternion.identity); + } + + gameObject.SetActive(false); + GameDirector.Instance?.HandlePlayerDeath(); + } } \ No newline at end of file diff --git a/games/unity/magisterka_1/Assets/ScoreManager.cs b/games/unity/magisterka_1/Assets/ScoreManager.cs new file mode 100644 index 0000000..5736318 --- /dev/null +++ b/games/unity/magisterka_1/Assets/ScoreManager.cs @@ -0,0 +1,190 @@ +using UnityEngine; +using UnityEngine.UI; + +public class ScoreManager : MonoBehaviour +{ + public static ScoreManager Instance { get; private set; } + + [SerializeField] private Text scoreText; + [SerializeField] private Text livesText; + [SerializeField] private Text timerText; + + private int score; + private int currentLives; + private float cachedDuration; + + private float bombMessageTimer; + private const float BombMessageDuration = 2.5f; + + private void Awake() + { + if (Instance != null && Instance != this) + { + Destroy(gameObject); + return; + } + + Instance = this; + DontDestroyOnLoad(gameObject); + EnsureUiReferences(); + RefreshLabels(); + } + + private void Update() + { + if (bombMessageTimer <= 0f || timerText == null) return; + + bombMessageTimer -= Time.deltaTime; + if (bombMessageTimer <= 0f) + { + timerText.text = FormatTime(cachedDuration); + } + } + + public void RegisterGameStart(int initialLives, float duration) + { + currentLives = Mathf.Max(0, initialLives); + cachedDuration = Mathf.Max(0f, duration); + score = 0; + bombMessageTimer = 0f; + RefreshLabels(); + } + + public void AddScore(int amount) + { + score += Mathf.Max(0, amount); + UpdateScoreLabel(); + } + + public void SetLives(int lives) + { + currentLives = Mathf.Max(0, lives); + UpdateLivesLabel(); + } + + public void UpdateTimer(float timeRemaining) + { + cachedDuration = Mathf.Max(0f, timeRemaining); + if (bombMessageTimer > 0f) return; + if (timerText == null) return; + + timerText.text = FormatTime(timeRemaining); + } + + public void HandleGameOver() + { + if (timerText != null) + { + timerText.text = "Game Over"; + } + } + + public void HandleGameClear() + { + if (timerText != null) + { + timerText.text = "Mission Complete"; + } + } + + public void RegisterBombUse() + { + if (timerText == null) return; + + timerText.text = "Screen Clear Deployed"; + bombMessageTimer = BombMessageDuration; + } + + private void EnsureUiReferences() + { + if (scoreText != null && livesText != null && timerText != null) return; + + Canvas canvas = FindObjectOfType(); + if (canvas == null) + { + canvas = BuildRuntimeCanvas(); + } + + if (scoreText == null) + { + scoreText = CreateLabel(canvas.transform, "ScoreText", new Vector2(20f, -20f)); + } + + if (livesText == null) + { + livesText = CreateLabel(canvas.transform, "LivesText", new Vector2(20f, -60f)); + } + + if (timerText == null) + { + timerText = CreateLabel(canvas.transform, "TimerText", new Vector2(20f, -100f)); + } + } + + private Canvas BuildRuntimeCanvas() + { + GameObject canvasObject = new GameObject("HUDCanvas"); + DontDestroyOnLoad(canvasObject); + + Canvas canvas = canvasObject.AddComponent(); + canvas.renderMode = RenderMode.ScreenSpaceOverlay; + canvasObject.AddComponent(); + canvasObject.AddComponent(); + return canvas; + } + + private Text CreateLabel(Transform parent, string name, Vector2 anchoredOffset) + { + GameObject go = new GameObject(name); + go.transform.SetParent(parent); + + RectTransform rectTransform = go.AddComponent(); + rectTransform.anchorMin = new Vector2(0f, 1f); + rectTransform.anchorMax = new Vector2(0f, 1f); + rectTransform.pivot = new Vector2(0f, 1f); + rectTransform.anchoredPosition = anchoredOffset; + rectTransform.sizeDelta = new Vector2(320f, 36f); + + Text label = go.AddComponent(); + label.font = Resources.GetBuiltinResource("Arial.ttf"); + label.fontSize = 24; + label.color = Color.white; + label.alignment = TextAnchor.UpperLeft; + label.horizontalOverflow = HorizontalWrapMode.Overflow; + return label; + } + + private void RefreshLabels() + { + UpdateScoreLabel(); + UpdateLivesLabel(); + if (timerText != null) + { + timerText.text = FormatTime(cachedDuration); + } + } + + private void UpdateScoreLabel() + { + if (scoreText != null) + { + scoreText.text = $"Score: {score}"; + } + } + + private void UpdateLivesLabel() + { + if (livesText != null) + { + livesText.text = $"Lives: {currentLives}"; + } + } + + private static string FormatTime(float seconds) + { + seconds = Mathf.Max(0f, seconds); + int minutes = Mathf.FloorToInt(seconds / 60f); + int secs = Mathf.FloorToInt(seconds % 60f); + return $"Time: {minutes:00}:{secs:00}"; + } +} diff --git a/games/unity/magisterka_1/Assets/ScoreManager.cs.meta b/games/unity/magisterka_1/Assets/ScoreManager.cs.meta new file mode 100644 index 0000000..551b47f --- /dev/null +++ b/games/unity/magisterka_1/Assets/ScoreManager.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 7ff9f2088103071c3bfaea5a72945157 \ No newline at end of file diff --git a/magisterka_2/.gitignore b/magisterka_2/.gitignore new file mode 100644 index 0000000..8ea71fe --- /dev/null +++ b/magisterka_2/.gitignore @@ -0,0 +1,413 @@ +build +test/**/*.textest +test/**/*.pdf +.sconsign.dblite +.vscode +/*.pdf + +## Core latex/pdflatex auxiliary files: +*.aux +*.lof +*.log +*.lot +*.fls +*.out +*.toc +*.fmt +*.fot +*.cb +*.cb2 +.*.lb + +## Intermediate documents: +*.dvi +*.xdv +*-converted-to.* +# these rules might exclude image files for figures etc. +# *.ps +# *.eps +# *.pdf + +## Generated if empty string is given at "Please type another file name for output:" +.pdf + +## Bibliography auxiliary files (bibtex/biblatex/biber): +*.bbl +*.bcf +*.blg +*-blx.aux +*-blx.bib +*.run.xml + +## Build tool auxiliary files: +*.fdb_latexmk +*.synctex +*.synctex(busy) +*.synctex.gz +*.synctex.gz(busy) +*.pdfsync +*.rubbercache +rubber.cache + +## Build tool directories for auxiliary files +# latexrun +latex.out/ + +## Auxiliary and intermediate files from other packages: +# algorithms +*.alg +*.loa + +# achemso +acs-*.bib + +# amsthm +*.thm + +# beamer +*.nav +*.pre +*.snm +*.vrb + +# changes +*.soc + +# comment +*.cut + +# cprotect +*.cpt + +# elsarticle (documentclass of Elsevier journals) +*.spl + +# endnotes +*.ent + +# fixme +*.lox + +# feynmf/feynmp +*.mf +*.mp +*.t[1-9] +*.t[1-9][0-9] +*.tfm + +#(r)(e)ledmac/(r)(e)ledpar +*.end +*.?end +*.[1-9] +*.[1-9][0-9] +*.[1-9][0-9][0-9] +*.[1-9]R +*.[1-9][0-9]R +*.[1-9][0-9][0-9]R +*.eledsec[1-9] +*.eledsec[1-9]R +*.eledsec[1-9][0-9] +*.eledsec[1-9][0-9]R +*.eledsec[1-9][0-9][0-9] +*.eledsec[1-9][0-9][0-9]R + +# glossaries +*.acn +*.acr +*.glg +*.glo +*.gls +*.glsdefs +*.lzo +*.lzs +*.slg +*.slo +*.sls + +# uncomment this for glossaries-extra (will ignore makeindex's style files!) +# *.ist + +# gnuplot +*.gnuplot +*.table + +# gnuplottex +*-gnuplottex-* + +# gregoriotex +*.gaux +*.glog +*.gtex + +# htlatex +*.4ct +*.4tc +*.idv +*.lg +*.trc +*.xref + +# hypdoc +*.hd + +# hyperref +*.brf + +# knitr +*-concordance.tex +# TODO Uncomment the next line if you use knitr and want to ignore its generated tikz files +# *.tikz +*-tikzDictionary + +# listings +*.lol + +# luatexja-ruby +*.ltjruby + +# makeidx +*.idx +*.ilg +*.ind + +# minitoc +*.maf +*.mlf +*.mlt +*.mtc[0-9]* +*.slf[0-9]* +*.slt[0-9]* +*.stc[0-9]* + +# minted +_minted* +*.pyg + +# morewrites +*.mw + +# newpax +*.newpax + +# nomencl +*.nlg +*.nlo +*.nls + +# pax +*.pax + +# pdfpcnotes +*.pdfpc + +# sagetex +*.sagetex.sage +*.sagetex.py +*.sagetex.scmd + +# scrwfile +*.wrt + +# svg +svg-inkscape/ + +# sympy +*.sout +*.sympy +sympy-plots-for-*.tex/ + +# pdfcomment +*.upa +*.upb + +# pythontex +*.pytxcode +pythontex-files-*/ + +# tcolorbox +*.listing + +# thmtools +*.loe + +# TikZ & PGF +*.dpth +*.md5 +*.auxlock + +# titletoc +*.ptc + +# todonotes +*.tdo + +# vhistory +*.hst +*.ver + +# easy-todo +*.lod + +# xcolor +*.xcp + +# xmpincl +*.xmpi + +# xindy +*.xdy + +# xypic precompiled matrices and outlines +*.xyc +*.xyd + +# endfloat +*.ttt +*.fff + +# Latexian +TSWLatexianTemp* + +## Editors: +# WinEdt +*.bak +*.sav + +# Texpad +.texpadtmp + +# LyX +*.lyx~ + +# Kile +*.backup + +# gummi +.*.swp + +# KBibTeX +*~[0-9]* + +# TeXnicCenter +*.tps + +# auto folder when using emacs and auctex +./auto/* +*.el + +# expex forward references with \gathertags +*-tags.tex + +# standalone packages +*.sta + +# Makeindex log files +*.lpz + +# xwatermark package +*.xwm + +# REVTeX puts footnotes in the bibliography by default, unless the nofootinbib +# option is specified. Footnotes are the stored in a file with suffix Notes.bib. +# Uncomment the next line to have this generated file ignored. +#*Notes.bib + +# This .gitignore file should be placed at the root of your Unity project directory +# +# Get latest from https://github.com/github/gitignore/blob/main/Unity.gitignore +# +.utmp/ +/[Ll]ibrary/ +/[Tt]emp/ +/[Oo]bj/ +/[Bb]uild/ +/[Bb]uilds/ +/[Ll]ogs/ +/[Uu]ser[Ss]ettings/ +*.log + +# By default unity supports Blender asset imports, *.blend1 blender files do not need to be commited to version control. +*.blend1 +*.blend1.meta + +# MemoryCaptures can get excessive in size. +# They also could contain extremely sensitive data +/[Mm]emoryCaptures/ + +# Recordings can get excessive in size +/[Rr]ecordings/ + +# Uncomment this line if you wish to ignore the asset store tools plugin +# /[Aa]ssets/AssetStoreTools* + +# Autogenerated Jetbrains Rider plugin +/[Aa]ssets/Plugins/Editor/JetBrains* +# Jetbrains Rider personal-layer settings +*.DotSettings.user + +# Visual Studio cache directory +.vs/ + +# Gradle cache directory +.gradle/ + +# Autogenerated VS/MD/Consulo solution and project files +ExportedObj/ +.consulo/ +*.csproj +*.unityproj +*.sln +*.suo +*.tmp +*.user +*.userprefs +*.pidb +*.booproj +*.svd +*.pdb +*.mdb +*.opendb +*.VC.db + +# Unity3D generated meta files +*.pidb.meta +*.pdb.meta +*.mdb.meta + +# Unity3D generated file on crash reports +sysinfo.txt + +# Mono auto generated files +mono_crash.* + +# Builds +*.apk +*.aab +*.unitypackage +*.unitypackage.meta +*.app + +# Crashlytics generated file +crashlytics-build.properties + +# TestRunner generated files +InitTestScene*.unity* + +# Addressables default ignores, before user customizations +/ServerData +/[Aa]ssets/StreamingAssets/aa* +/[Aa]ssets/AddressableAssetsData/link.xml* +/[Aa]ssets/Addressables_Temp* +# By default, Addressables content builds will generate addressables_content_state.bin +# files in platform-specific subfolders, for example: +# /Assets/AddressableAssetsData/OSX/addressables_content_state.bin +/[Aa]ssets/AddressableAssetsData/*/*.bin* + +# Visual Scripting auto-generated files +/[Aa]ssets/Unity.VisualScripting.Generated/VisualScripting.Flow/UnitOptions.db +/[Aa]ssets/Unity.VisualScripting.Generated/VisualScripting.Flow/UnitOptions.db.meta +/[Aa]ssets/Unity.VisualScripting.Generated/VisualScripting.Core/Property Providers +/[Aa]ssets/Unity.VisualScripting.Generated/VisualScripting.Core/Property Providers.meta + +# Auto-generated scenes by play mode tests +/[Aa]ssets/[Ii]nit[Tt]est[Ss]cene*.unity* \ No newline at end of file diff --git a/magisterka_2/Assets/InputSystem_Actions.inputactions b/magisterka_2/Assets/InputSystem_Actions.inputactions new file mode 100644 index 0000000..1a12cb9 --- /dev/null +++ b/magisterka_2/Assets/InputSystem_Actions.inputactions @@ -0,0 +1,1057 @@ +{ + "name": "InputSystem_Actions", + "maps": [ + { + "name": "Player", + "id": "df70fa95-8a34-4494-b137-73ab6b9c7d37", + "actions": [ + { + "name": "Move", + "type": "Value", + "id": "351f2ccd-1f9f-44bf-9bec-d62ac5c5f408", + "expectedControlType": "Vector2", + "processors": "", + "interactions": "", + "initialStateCheck": true + }, + { + "name": "Look", + "type": "Value", + "id": "6b444451-8a00-4d00-a97e-f47457f736a8", + "expectedControlType": "Vector2", + "processors": "", + "interactions": "", + "initialStateCheck": true + }, + { + "name": "Attack", + "type": "Button", + "id": "6c2ab1b8-8984-453a-af3d-a3c78ae1679a", + "expectedControlType": "Button", + "processors": "", + "interactions": "", + "initialStateCheck": false + }, + { + "name": "Interact", + "type": "Button", + "id": "852140f2-7766-474d-8707-702459ba45f3", + "expectedControlType": "Button", + "processors": "", + "interactions": "Hold", + "initialStateCheck": false + }, + { + "name": "Crouch", + "type": "Button", + "id": "27c5f898-bc57-4ee1-8800-db469aca5fe3", + "expectedControlType": "Button", + "processors": "", + "interactions": "", + "initialStateCheck": false + }, + { + "name": "Jump", + "type": "Button", + "id": "f1ba0d36-48eb-4cd5-b651-1c94a6531f70", + "expectedControlType": "Button", + "processors": "", + "interactions": "", + "initialStateCheck": false + }, + { + "name": "Previous", + "type": "Button", + "id": "2776c80d-3c14-4091-8c56-d04ced07a2b0", + "expectedControlType": "Button", + "processors": "", + "interactions": "", + "initialStateCheck": false + }, + { + "name": "Next", + "type": "Button", + "id": "b7230bb6-fc9b-4f52-8b25-f5e19cb2c2ba", + "expectedControlType": "Button", + "processors": "", + "interactions": "", + "initialStateCheck": false + }, + { + "name": "Sprint", + "type": "Button", + "id": "641cd816-40e6-41b4-8c3d-04687c349290", + "expectedControlType": "Button", + "processors": "", + "interactions": "", + "initialStateCheck": false + } + ], + "bindings": [ + { + "name": "", + "id": "978bfe49-cc26-4a3d-ab7b-7d7a29327403", + "path": "/leftStick", + "interactions": "", + "processors": "", + "groups": ";Gamepad", + "action": "Move", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "WASD", + "id": "00ca640b-d935-4593-8157-c05846ea39b3", + "path": "Dpad", + "interactions": "", + "processors": "", + "groups": "", + "action": "Move", + "isComposite": true, + "isPartOfComposite": false + }, + { + "name": "up", + "id": "e2062cb9-1b15-46a2-838c-2f8d72a0bdd9", + "path": "/w", + "interactions": "", + "processors": "", + "groups": ";Keyboard&Mouse", + "action": "Move", + "isComposite": false, + "isPartOfComposite": true + }, + { + "name": "up", + "id": "8180e8bd-4097-4f4e-ab88-4523101a6ce9", + "path": "/upArrow", + "interactions": "", + "processors": "", + "groups": ";Keyboard&Mouse", + "action": "Move", + "isComposite": false, + "isPartOfComposite": true + }, + { + "name": "down", + "id": "320bffee-a40b-4347-ac70-c210eb8bc73a", + "path": "/s", + "interactions": "", + "processors": "", + "groups": ";Keyboard&Mouse", + "action": "Move", + "isComposite": false, + "isPartOfComposite": true + }, + { + "name": "down", + "id": "1c5327b5-f71c-4f60-99c7-4e737386f1d1", + "path": "/downArrow", + "interactions": "", + "processors": "", + "groups": ";Keyboard&Mouse", + "action": "Move", + "isComposite": false, + "isPartOfComposite": true + }, + { + "name": "left", + "id": "d2581a9b-1d11-4566-b27d-b92aff5fabbc", + "path": "/a", + "interactions": "", + "processors": "", + "groups": ";Keyboard&Mouse", + "action": "Move", + "isComposite": false, + "isPartOfComposite": true + }, + { + "name": "left", + "id": "2e46982e-44cc-431b-9f0b-c11910bf467a", + "path": "/leftArrow", + "interactions": "", + "processors": "", + "groups": ";Keyboard&Mouse", + "action": "Move", + "isComposite": false, + "isPartOfComposite": true + }, + { + "name": "right", + "id": "fcfe95b8-67b9-4526-84b5-5d0bc98d6400", + "path": "/d", + "interactions": "", + "processors": "", + "groups": ";Keyboard&Mouse", + "action": "Move", + "isComposite": false, + "isPartOfComposite": true + }, + { + "name": "right", + "id": "77bff152-3580-4b21-b6de-dcd0c7e41164", + "path": "/rightArrow", + "interactions": "", + "processors": "", + "groups": ";Keyboard&Mouse", + "action": "Move", + "isComposite": false, + "isPartOfComposite": true + }, + { + "name": "", + "id": "1635d3fe-58b6-4ba9-a4e2-f4b964f6b5c8", + "path": "/{Primary2DAxis}", + "interactions": "", + "processors": "", + "groups": "XR", + "action": "Move", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "3ea4d645-4504-4529-b061-ab81934c3752", + "path": "/stick", + "interactions": "", + "processors": "", + "groups": "Joystick", + "action": "Move", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "c1f7a91b-d0fd-4a62-997e-7fb9b69bf235", + "path": "/rightStick", + "interactions": "", + "processors": "", + "groups": ";Gamepad", + "action": "Look", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "8c8e490b-c610-4785-884f-f04217b23ca4", + "path": "/delta", + "interactions": "", + "processors": "", + "groups": ";Keyboard&Mouse;Touch", + "action": "Look", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "3e5f5442-8668-4b27-a940-df99bad7e831", + "path": "/{Hatswitch}", + "interactions": "", + "processors": "", + "groups": "Joystick", + "action": "Look", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "143bb1cd-cc10-4eca-a2f0-a3664166fe91", + "path": "/buttonWest", + "interactions": "", + "processors": "", + "groups": ";Gamepad", + "action": "Attack", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "05f6913d-c316-48b2-a6bb-e225f14c7960", + "path": "/leftButton", + "interactions": "", + "processors": "", + "groups": ";Keyboard&Mouse", + "action": "Attack", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "886e731e-7071-4ae4-95c0-e61739dad6fd", + "path": "/primaryTouch/tap", + "interactions": "", + "processors": "", + "groups": ";Touch", + "action": "Attack", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "ee3d0cd2-254e-47a7-a8cb-bc94d9658c54", + "path": "/trigger", + "interactions": "", + "processors": "", + "groups": "Joystick", + "action": "Attack", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "8255d333-5683-4943-a58a-ccb207ff1dce", + "path": "/{PrimaryAction}", + "interactions": "", + "processors": "", + "groups": "XR", + "action": "Attack", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "b3c1c7f0-bd20-4ee7-a0f1-899b24bca6d7", + "path": "/enter", + "interactions": "", + "processors": "", + "groups": "Keyboard&Mouse", + "action": "Attack", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "cbac6039-9c09-46a1-b5f2-4e5124ccb5ed", + "path": "/2", + "interactions": "", + "processors": "", + "groups": "Keyboard&Mouse", + "action": "Next", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "e15ca19d-e649-4852-97d5-7fe8ccc44e94", + "path": "/dpad/right", + "interactions": "", + "processors": "", + "groups": "Gamepad", + "action": "Next", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "f2e9ba44-c423-42a7-ad56-f20975884794", + "path": "/leftShift", + "interactions": "", + "processors": "", + "groups": "Keyboard&Mouse", + "action": "Sprint", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "8cbb2f4b-a784-49cc-8d5e-c010b8c7f4e6", + "path": "/leftStickPress", + "interactions": "", + "processors": "", + "groups": "Gamepad", + "action": "Sprint", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "d8bf24bf-3f2f-4160-a97c-38ec1eb520ba", + "path": "/trigger", + "interactions": "", + "processors": "", + "groups": "XR", + "action": "Sprint", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "eb40bb66-4559-4dfa-9a2f-820438abb426", + "path": "/space", + "interactions": "", + "processors": "", + "groups": "Keyboard&Mouse", + "action": "Jump", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "daba33a1-ad0c-4742-a909-43ad1cdfbeb6", + "path": "/buttonSouth", + "interactions": "", + "processors": "", + "groups": "Gamepad", + "action": "Jump", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "603f3daf-40bd-4854-8724-93e8017f59e3", + "path": "/secondaryButton", + "interactions": "", + "processors": "", + "groups": "XR", + "action": "Jump", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "1534dc16-a6aa-499d-9c3a-22b47347b52a", + "path": "/1", + "interactions": "", + "processors": "", + "groups": "Keyboard&Mouse", + "action": "Previous", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "25060bbd-a3a6-476e-8fba-45ae484aad05", + "path": "/dpad/left", + "interactions": "", + "processors": "", + "groups": "Gamepad", + "action": "Previous", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "1c04ea5f-b012-41d1-a6f7-02e963b52893", + "path": "/e", + "interactions": "", + "processors": "", + "groups": "Keyboard&Mouse", + "action": "Interact", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "b3f66d0b-7751-423f-908b-a11c5bd95930", + "path": "/buttonNorth", + "interactions": "", + "processors": "", + "groups": "Gamepad", + "action": "Interact", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "4f4649ac-64a8-4a73-af11-b3faef356a4d", + "path": "/buttonEast", + "interactions": "", + "processors": "", + "groups": "Gamepad", + "action": "Crouch", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "36e52cba-0905-478e-a818-f4bfcb9f3b9a", + "path": "/c", + "interactions": "", + "processors": "", + "groups": "Keyboard&Mouse", + "action": "Crouch", + "isComposite": false, + "isPartOfComposite": false + } + ] + }, + { + "name": "UI", + "id": "272f6d14-89ba-496f-b7ff-215263d3219f", + "actions": [ + { + "name": "Navigate", + "type": "PassThrough", + "id": "c95b2375-e6d9-4b88-9c4c-c5e76515df4b", + "expectedControlType": "Vector2", + "processors": "", + "interactions": "", + "initialStateCheck": false + }, + { + "name": "Submit", + "type": "Button", + "id": "7607c7b6-cd76-4816-beef-bd0341cfe950", + "expectedControlType": "Button", + "processors": "", + "interactions": "", + "initialStateCheck": false + }, + { + "name": "Cancel", + "type": "Button", + "id": "15cef263-9014-4fd5-94d9-4e4a6234a6ef", + "expectedControlType": "Button", + "processors": "", + "interactions": "", + "initialStateCheck": false + }, + { + "name": "Point", + "type": "PassThrough", + "id": "32b35790-4ed0-4e9a-aa41-69ac6d629449", + "expectedControlType": "Vector2", + "processors": "", + "interactions": "", + "initialStateCheck": true + }, + { + "name": "Click", + "type": "PassThrough", + "id": "3c7022bf-7922-4f7c-a998-c437916075ad", + "expectedControlType": "Button", + "processors": "", + "interactions": "", + "initialStateCheck": true + }, + { + "name": "RightClick", + "type": "PassThrough", + "id": "44b200b1-1557-4083-816c-b22cbdf77ddf", + "expectedControlType": "Button", + "processors": "", + "interactions": "", + "initialStateCheck": false + }, + { + "name": "MiddleClick", + "type": "PassThrough", + "id": "dad70c86-b58c-4b17-88ad-f5e53adf419e", + "expectedControlType": "Button", + "processors": "", + "interactions": "", + "initialStateCheck": false + }, + { + "name": "ScrollWheel", + "type": "PassThrough", + "id": "0489e84a-4833-4c40-bfae-cea84b696689", + "expectedControlType": "Vector2", + "processors": "", + "interactions": "", + "initialStateCheck": false + }, + { + "name": "TrackedDevicePosition", + "type": "PassThrough", + "id": "24908448-c609-4bc3-a128-ea258674378a", + "expectedControlType": "Vector3", + "processors": "", + "interactions": "", + "initialStateCheck": false + }, + { + "name": "TrackedDeviceOrientation", + "type": "PassThrough", + "id": "9caa3d8a-6b2f-4e8e-8bad-6ede561bd9be", + "expectedControlType": "Quaternion", + "processors": "", + "interactions": "", + "initialStateCheck": false + } + ], + "bindings": [ + { + "name": "Gamepad", + "id": "809f371f-c5e2-4e7a-83a1-d867598f40dd", + "path": "2DVector", + "interactions": "", + "processors": "", + "groups": "", + "action": "Navigate", + "isComposite": true, + "isPartOfComposite": false + }, + { + "name": "up", + "id": "14a5d6e8-4aaf-4119-a9ef-34b8c2c548bf", + "path": "/leftStick/up", + "interactions": "", + "processors": "", + "groups": ";Gamepad", + "action": "Navigate", + "isComposite": false, + "isPartOfComposite": true + }, + { + "name": "up", + "id": "9144cbe6-05e1-4687-a6d7-24f99d23dd81", + "path": "/rightStick/up", + "interactions": "", + "processors": "", + "groups": ";Gamepad", + "action": "Navigate", + "isComposite": false, + "isPartOfComposite": true + }, + { + "name": "down", + "id": "2db08d65-c5fb-421b-983f-c71163608d67", + "path": "/leftStick/down", + "interactions": "", + "processors": "", + "groups": ";Gamepad", + "action": "Navigate", + "isComposite": false, + "isPartOfComposite": true + }, + { + "name": "down", + "id": "58748904-2ea9-4a80-8579-b500e6a76df8", + "path": "/rightStick/down", + "interactions": "", + "processors": "", + "groups": ";Gamepad", + "action": "Navigate", + "isComposite": false, + "isPartOfComposite": true + }, + { + "name": "left", + "id": "8ba04515-75aa-45de-966d-393d9bbd1c14", + "path": "/leftStick/left", + "interactions": "", + "processors": "", + "groups": ";Gamepad", + "action": "Navigate", + "isComposite": false, + "isPartOfComposite": true + }, + { + "name": "left", + "id": "712e721c-bdfb-4b23-a86c-a0d9fcfea921", + "path": "/rightStick/left", + "interactions": "", + "processors": "", + "groups": ";Gamepad", + "action": "Navigate", + "isComposite": false, + "isPartOfComposite": true + }, + { + "name": "right", + "id": "fcd248ae-a788-4676-a12e-f4d81205600b", + "path": "/leftStick/right", + "interactions": "", + "processors": "", + "groups": ";Gamepad", + "action": "Navigate", + "isComposite": false, + "isPartOfComposite": true + }, + { + "name": "right", + "id": "1f04d9bc-c50b-41a1-bfcc-afb75475ec20", + "path": "/rightStick/right", + "interactions": "", + "processors": "", + "groups": ";Gamepad", + "action": "Navigate", + "isComposite": false, + "isPartOfComposite": true + }, + { + "name": "", + "id": "fb8277d4-c5cd-4663-9dc7-ee3f0b506d90", + "path": "/dpad", + "interactions": "", + "processors": "", + "groups": ";Gamepad", + "action": "Navigate", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "Joystick", + "id": "e25d9774-381c-4a61-b47c-7b6b299ad9f9", + "path": "2DVector", + "interactions": "", + "processors": "", + "groups": "", + "action": "Navigate", + "isComposite": true, + "isPartOfComposite": false + }, + { + "name": "up", + "id": "3db53b26-6601-41be-9887-63ac74e79d19", + "path": "/stick/up", + "interactions": "", + "processors": "", + "groups": "Joystick", + "action": "Navigate", + "isComposite": false, + "isPartOfComposite": true + }, + { + "name": "down", + "id": "0cb3e13e-3d90-4178-8ae6-d9c5501d653f", + "path": "/stick/down", + "interactions": "", + "processors": "", + "groups": "Joystick", + "action": "Navigate", + "isComposite": false, + "isPartOfComposite": true + }, + { + "name": "left", + "id": "0392d399-f6dd-4c82-8062-c1e9c0d34835", + "path": "/stick/left", + "interactions": "", + "processors": "", + "groups": "Joystick", + "action": "Navigate", + "isComposite": false, + "isPartOfComposite": true + }, + { + "name": "right", + "id": "942a66d9-d42f-43d6-8d70-ecb4ba5363bc", + "path": "/stick/right", + "interactions": "", + "processors": "", + "groups": "Joystick", + "action": "Navigate", + "isComposite": false, + "isPartOfComposite": true + }, + { + "name": "Keyboard", + "id": "ff527021-f211-4c02-933e-5976594c46ed", + "path": "2DVector", + "interactions": "", + "processors": "", + "groups": "", + "action": "Navigate", + "isComposite": true, + "isPartOfComposite": false + }, + { + "name": "up", + "id": "563fbfdd-0f09-408d-aa75-8642c4f08ef0", + "path": "/w", + "interactions": "", + "processors": "", + "groups": "Keyboard&Mouse", + "action": "Navigate", + "isComposite": false, + "isPartOfComposite": true + }, + { + "name": "up", + "id": "eb480147-c587-4a33-85ed-eb0ab9942c43", + "path": "/upArrow", + "interactions": "", + "processors": "", + "groups": "Keyboard&Mouse", + "action": "Navigate", + "isComposite": false, + "isPartOfComposite": true + }, + { + "name": "down", + "id": "2bf42165-60bc-42ca-8072-8c13ab40239b", + "path": "/s", + "interactions": "", + "processors": "", + "groups": "Keyboard&Mouse", + "action": "Navigate", + "isComposite": false, + "isPartOfComposite": true + }, + { + "name": "down", + "id": "85d264ad-e0a0-4565-b7ff-1a37edde51ac", + "path": "/downArrow", + "interactions": "", + "processors": "", + "groups": "Keyboard&Mouse", + "action": "Navigate", + "isComposite": false, + "isPartOfComposite": true + }, + { + "name": "left", + "id": "74214943-c580-44e4-98eb-ad7eebe17902", + "path": "/a", + "interactions": "", + "processors": "", + "groups": "Keyboard&Mouse", + "action": "Navigate", + "isComposite": false, + "isPartOfComposite": true + }, + { + "name": "left", + "id": "cea9b045-a000-445b-95b8-0c171af70a3b", + "path": "/leftArrow", + "interactions": "", + "processors": "", + "groups": "Keyboard&Mouse", + "action": "Navigate", + "isComposite": false, + "isPartOfComposite": true + }, + { + "name": "right", + "id": "8607c725-d935-4808-84b1-8354e29bab63", + "path": "/d", + "interactions": "", + "processors": "", + "groups": "Keyboard&Mouse", + "action": "Navigate", + "isComposite": false, + "isPartOfComposite": true + }, + { + "name": "right", + "id": "4cda81dc-9edd-4e03-9d7c-a71a14345d0b", + "path": "/rightArrow", + "interactions": "", + "processors": "", + "groups": "Keyboard&Mouse", + "action": "Navigate", + "isComposite": false, + "isPartOfComposite": true + }, + { + "name": "", + "id": "9e92bb26-7e3b-4ec4-b06b-3c8f8e498ddc", + "path": "*/{Submit}", + "interactions": "", + "processors": "", + "groups": "Keyboard&Mouse;Gamepad;Touch;Joystick;XR", + "action": "Submit", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "82627dcc-3b13-4ba9-841d-e4b746d6553e", + "path": "*/{Cancel}", + "interactions": "", + "processors": "", + "groups": "Keyboard&Mouse;Gamepad;Touch;Joystick;XR", + "action": "Cancel", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "c52c8e0b-8179-41d3-b8a1-d149033bbe86", + "path": "/position", + "interactions": "", + "processors": "", + "groups": "Keyboard&Mouse", + "action": "Point", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "e1394cbc-336e-44ce-9ea8-6007ed6193f7", + "path": "/position", + "interactions": "", + "processors": "", + "groups": "Keyboard&Mouse", + "action": "Point", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "5693e57a-238a-46ed-b5ae-e64e6e574302", + "path": "/touch*/position", + "interactions": "", + "processors": "", + "groups": "Touch", + "action": "Point", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "4faf7dc9-b979-4210-aa8c-e808e1ef89f5", + "path": "/leftButton", + "interactions": "", + "processors": "", + "groups": ";Keyboard&Mouse", + "action": "Click", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "8d66d5ba-88d7-48e6-b1cd-198bbfef7ace", + "path": "/tip", + "interactions": "", + "processors": "", + "groups": ";Keyboard&Mouse", + "action": "Click", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "47c2a644-3ebc-4dae-a106-589b7ca75b59", + "path": "/touch*/press", + "interactions": "", + "processors": "", + "groups": "Touch", + "action": "Click", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "bb9e6b34-44bf-4381-ac63-5aa15d19f677", + "path": "/trigger", + "interactions": "", + "processors": "", + "groups": "XR", + "action": "Click", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "38c99815-14ea-4617-8627-164d27641299", + "path": "/scroll", + "interactions": "", + "processors": "", + "groups": ";Keyboard&Mouse", + "action": "ScrollWheel", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "4c191405-5738-4d4b-a523-c6a301dbf754", + "path": "/rightButton", + "interactions": "", + "processors": "", + "groups": "Keyboard&Mouse", + "action": "RightClick", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "24066f69-da47-44f3-a07e-0015fb02eb2e", + "path": "/middleButton", + "interactions": "", + "processors": "", + "groups": "Keyboard&Mouse", + "action": "MiddleClick", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "7236c0d9-6ca3-47cf-a6ee-a97f5b59ea77", + "path": "/devicePosition", + "interactions": "", + "processors": "", + "groups": "XR", + "action": "TrackedDevicePosition", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "23e01e3a-f935-4948-8d8b-9bcac77714fb", + "path": "/deviceRotation", + "interactions": "", + "processors": "", + "groups": "XR", + "action": "TrackedDeviceOrientation", + "isComposite": false, + "isPartOfComposite": false + } + ] + } + ], + "controlSchemes": [ + { + "name": "Keyboard&Mouse", + "bindingGroup": "Keyboard&Mouse", + "devices": [ + { + "devicePath": "", + "isOptional": false, + "isOR": false + }, + { + "devicePath": "", + "isOptional": false, + "isOR": false + } + ] + }, + { + "name": "Gamepad", + "bindingGroup": "Gamepad", + "devices": [ + { + "devicePath": "", + "isOptional": false, + "isOR": false + } + ] + }, + { + "name": "Touch", + "bindingGroup": "Touch", + "devices": [ + { + "devicePath": "", + "isOptional": false, + "isOR": false + } + ] + }, + { + "name": "Joystick", + "bindingGroup": "Joystick", + "devices": [ + { + "devicePath": "", + "isOptional": false, + "isOR": false + } + ] + }, + { + "name": "XR", + "bindingGroup": "XR", + "devices": [ + { + "devicePath": "", + "isOptional": false, + "isOR": false + } + ] + } + ] +} \ No newline at end of file diff --git a/magisterka_2/Assets/InputSystem_Actions.inputactions.meta b/magisterka_2/Assets/InputSystem_Actions.inputactions.meta new file mode 100644 index 0000000..e25b7aa --- /dev/null +++ b/magisterka_2/Assets/InputSystem_Actions.inputactions.meta @@ -0,0 +1,14 @@ +fileFormatVersion: 2 +guid: 3590b91b4603b465dbb4216d601bff33 +ScriptedImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 2 + userData: + assetBundleName: + assetBundleVariant: + script: {fileID: 11500000, guid: 8404be70184654265930450def6a9037, type: 3} + generateWrapperCode: 0 + wrapperCodePath: + wrapperClassName: + wrapperCodeNamespace: diff --git a/magisterka_2/Assets/Scenes.meta b/magisterka_2/Assets/Scenes.meta new file mode 100644 index 0000000..7fe8e10 --- /dev/null +++ b/magisterka_2/Assets/Scenes.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 131a6b21c8605f84396be9f6751fb6e3 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/magisterka_2/Assets/Scenes/SampleScene.unity b/magisterka_2/Assets/Scenes/SampleScene.unity new file mode 100644 index 0000000..9421266 --- /dev/null +++ b/magisterka_2/Assets/Scenes/SampleScene.unity @@ -0,0 +1,208 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!29 &1 +OcclusionCullingSettings: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_OcclusionBakeSettings: + smallestOccluder: 5 + smallestHole: 0.25 + backfaceThreshold: 100 + m_SceneGUID: 00000000000000000000000000000000 + m_OcclusionCullingData: {fileID: 0} +--- !u!104 &2 +RenderSettings: + m_ObjectHideFlags: 0 + serializedVersion: 9 + m_Fog: 0 + m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} + m_FogMode: 3 + m_FogDensity: 0.01 + m_LinearFogStart: 0 + m_LinearFogEnd: 300 + m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} + m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} + m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} + m_AmbientIntensity: 1 + m_AmbientMode: 3 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 0} + m_HaloStrength: 0.5 + m_FlareStrength: 1 + m_FlareFadeSpeed: 3 + m_HaloTexture: {fileID: 0} + m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} + m_DefaultReflectionMode: 0 + m_DefaultReflectionResolution: 128 + m_ReflectionBounces: 1 + m_ReflectionIntensity: 1 + m_CustomReflection: {fileID: 0} + m_Sun: {fileID: 0} + m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &3 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 12 + m_GIWorkflowMode: 1 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 0 + m_EnableRealtimeLightmaps: 0 + m_LightmapEditorSettings: + serializedVersion: 12 + m_Resolution: 2 + m_BakeResolution: 40 + m_AtlasSize: 1024 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 1 + m_CompAOExponentDirect: 0 + m_ExtractAmbientOcclusion: 0 + m_Padding: 2 + m_LightmapParameters: {fileID: 0} + m_LightmapsBakeMode: 1 + m_TextureCompression: 1 + m_FinalGather: 0 + m_FinalGatherFiltering: 1 + m_FinalGatherRayCount: 256 + m_ReflectionCompression: 2 + m_MixedBakeMode: 2 + m_BakeBackend: 0 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 500 + m_PVRBounces: 2 + m_PVREnvironmentSampleCount: 500 + m_PVREnvironmentReferencePointCount: 2048 + m_PVRFilteringMode: 2 + m_PVRDenoiserTypeDirect: 0 + m_PVRDenoiserTypeIndirect: 0 + m_PVRDenoiserTypeAO: 0 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVREnvironmentMIS: 0 + m_PVRCulling: 1 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_ExportTrainingData: 0 + m_TrainingDataDestination: TrainingData + m_LightProbeSampleCountMultiplier: 4 + m_LightingDataAsset: {fileID: 0} + m_LightingSettings: {fileID: 0} +--- !u!196 &4 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 2 + agentTypeID: 0 + agentRadius: 0.5 + agentHeight: 2 + agentSlope: 45 + agentClimb: 0.4 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + minRegionArea: 2 + manualCellSize: 0 + cellSize: 0.16666667 + manualTileSize: 0 + tileSize: 256 + accuratePlacement: 0 + maxJobWorkers: 0 + preserveTilesOutsideBounds: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &519420028 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 519420032} + - component: {fileID: 519420031} + - component: {fileID: 519420029} + m_Layer: 0 + m_Name: Main Camera + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!81 &519420029 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 519420028} + m_Enabled: 1 +--- !u!20 &519420031 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 519420028} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 2 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_FocalLength: 50 + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.3 + far clip plane: 1000 + field of view: 60 + orthographic: 1 + orthographic size: 5 + m_Depth: -1 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 0 + m_HDR: 1 + m_AllowMSAA: 0 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 0 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!4 &519420032 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 519420028} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -10} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} diff --git a/magisterka_2/Assets/Scenes/SampleScene.unity.meta b/magisterka_2/Assets/Scenes/SampleScene.unity.meta new file mode 100644 index 0000000..c1e3c88 --- /dev/null +++ b/magisterka_2/Assets/Scenes/SampleScene.unity.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 2cda990e2423bbf4892e6590ba056729 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/magisterka_2/Assets/Scripts.meta b/magisterka_2/Assets/Scripts.meta new file mode 100644 index 0000000..c34cf4a --- /dev/null +++ b/magisterka_2/Assets/Scripts.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 9f525bd660d2799e485caa7557c7af1c +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/magisterka_2/Assets/Scripts/BackgroundScroller.cs b/magisterka_2/Assets/Scripts/BackgroundScroller.cs new file mode 100644 index 0000000..2f3c3e0 --- /dev/null +++ b/magisterka_2/Assets/Scripts/BackgroundScroller.cs @@ -0,0 +1,128 @@ +using UnityEngine; + +namespace Magisterka.BulletHell +{ + /// + /// Builds a procedural starfield and scrolls it endlessly. + /// + public class BackgroundScroller : MonoBehaviour + { + [SerializeField] private float scrollSpeed = 2f; + [SerializeField] private float parallaxFactor = 0.6f; + [SerializeField] private float tileHeight = 30f; + + private Transform _tileA; + private Transform _tileB; + private float _resetY; + private float _cameraWidth; + + public static BackgroundScroller Create(Camera targetCamera, Transform parent) + { + var go = new GameObject("BackgroundScroller"); + go.transform.SetParent(parent, false); + var scroller = go.AddComponent(); + scroller.Build(targetCamera); + return scroller; + } + + private void Build(Camera cam) + { + if (cam == null) + { + cam = Camera.main; + } + + float height = cam.orthographicSize * 2f; + _cameraWidth = height * cam.aspect; + _resetY = -tileHeight; + + var sprite = GenerateStarSprite((int)(_cameraWidth * 16f), (int)(tileHeight * 16f)); + + _tileA = CreateTile("Starfield_A", sprite, 0f); + _tileB = CreateTile("Starfield_B", sprite, tileHeight); + } + + private Transform CreateTile(string name, Sprite sprite, float yOffset) + { + var tile = new GameObject(name); + tile.transform.SetParent(transform, false); + tile.transform.position = new Vector3(0f, yOffset, 10f); + var renderer = tile.AddComponent(); + renderer.sprite = sprite; + renderer.sortingOrder = -100; + renderer.color = new Color(0.7f, 0.7f, 0.7f, 0.8f); + float scaleX = (_cameraWidth + 6f) / sprite.bounds.size.x; + float scaleY = tileHeight / sprite.bounds.size.y; + tile.transform.localScale = new Vector3(scaleX, scaleY, 1f); + return tile.transform; + } + + private void Update() + { + float delta = scrollSpeed * Time.deltaTime; + ScrollTile(_tileA, delta); + ScrollTile(_tileB, delta * parallaxFactor); + + Recycle(_tileA); + Recycle(_tileB); + } + + private void ScrollTile(Transform tile, float delta) + { + if (tile == null) + { + return; + } + + tile.Translate(Vector3.down * delta, Space.World); + } + + private void Recycle(Transform tile) + { + if (tile == null) + { + return; + } + + if (tile.position.y <= _resetY) + { + tile.Translate(Vector3.up * (tileHeight * 2f), Space.World); + } + } + + private static Sprite GenerateStarSprite(int width, int height) + { + width = Mathf.Clamp(width, 128, 2048); + height = Mathf.Clamp(height, 128, 4096); + + var texture = new Texture2D(width, height, TextureFormat.RGBA32, false) + { + filterMode = FilterMode.Bilinear, + wrapMode = TextureWrapMode.Repeat + }; + + var pixels = new Color[width * height]; + var background = new Color(0.03f, 0.04f, 0.08f, 1f); + + for (int i = 0; i < pixels.Length; i++) + { + pixels[i] = background; + } + + int starCount = (width * height) / 45; + for (int i = 0; i < starCount; i++) + { + int x = Random.Range(0, width); + int y = Random.Range(0, height); + float intensity = Random.Range(0.6f, 1.2f); + var color = new Color(intensity, intensity, intensity, 1f); + pixels[x + y * width] = color; + } + + texture.SetPixels(pixels); + texture.Apply(); + + return Sprite.Create(texture, new Rect(0, 0, width, height), new Vector2(0.5f, 0.5f), 64f); + } + } +} diff --git a/magisterka_2/Assets/Scripts/BackgroundScroller.cs.meta b/magisterka_2/Assets/Scripts/BackgroundScroller.cs.meta new file mode 100644 index 0000000..1fa5faf --- /dev/null +++ b/magisterka_2/Assets/Scripts/BackgroundScroller.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: e5314a501f1fb0551be9a8451c951864 \ No newline at end of file diff --git a/magisterka_2/Assets/Scripts/Bullet.cs b/magisterka_2/Assets/Scripts/Bullet.cs new file mode 100644 index 0000000..2fe84ce --- /dev/null +++ b/magisterka_2/Assets/Scripts/Bullet.cs @@ -0,0 +1,125 @@ +using System.Collections.Generic; +using UnityEngine; + +namespace Magisterka.BulletHell +{ + /// + /// Handles individual bullet lifetime, movement, and collision dispatching. + /// + [RequireComponent(typeof(SpriteRenderer))] + public class Bullet : MonoBehaviour + { + private static readonly Dictionary SpriteCache = new Dictionary(); + + [SerializeField] private float radius = 0.22f; + [SerializeField] private float despawnBounds = 14f; + + private SpriteRenderer _spriteRenderer; + private CircleCollider2D _collider; + private Rigidbody2D _body; + private BulletPool _ownerPool; + private Vector2 _direction; + private float _speed; + private float _damage; + private Faction _ownerFaction; + + public bool BelongsToEnemy => _ownerFaction == Faction.Enemy; + public BulletPool OwnerPool => _ownerPool; + + public static Bullet Create(BulletPool pool, Color tint, Faction faction) + { + var go = new GameObject("Bullet" + faction, typeof(SpriteRenderer)); + var bullet = go.AddComponent(); + bullet.Initialize(pool, tint, faction); + return bullet; + } + + private void Initialize(BulletPool pool, Color tint, Faction faction) + { + _ownerPool = pool; + _ownerFaction = faction; + _spriteRenderer = GetComponent(); + _spriteRenderer.sprite = GetOrCreateSprite(tint); + _spriteRenderer.color = tint; + + _body = gameObject.AddComponent(); + _body.gravityScale = 0f; + _body.isKinematic = true; + _body.interpolation = RigidbodyInterpolation2D.Interpolate; + + _collider = gameObject.AddComponent(); + _collider.isTrigger = true; + _collider.radius = radius; + + gameObject.layer = LayerMask.NameToLayer("Default"); + gameObject.SetActive(false); + } + + public void Configure(Vector2 direction, float speed, float damage, Faction faction) + { + _direction = direction.normalized; + _speed = speed; + _damage = damage; + _ownerFaction = faction; + } + + private void Update() + { + transform.position += (Vector3)(_direction * (_speed * Time.deltaTime)); + + if (Mathf.Abs(transform.position.x) > despawnBounds || Mathf.Abs(transform.position.y) > despawnBounds) + { + Despawn(); + } + } + + private void OnTriggerEnter2D(Collider2D other) + { + if (!other.TryGetComponent(out Health health)) + { + return; + } + + if (health.Faction == _ownerFaction) + { + return; + } + + if (health.Faction == Faction.Player && PlayerController.Instance != null && PlayerController.Instance.IsInvulnerable()) + { + return; + } + + health.ApplyDamage(_damage, transform.position); + Despawn(); + } + + public void Despawn() + { + _ownerPool?.Return(this); + } + + private static Sprite GetOrCreateSprite(Color tint) + { + if (SpriteCache.TryGetValue(tint, out var sprite)) + { + return sprite; + } + + const int size = 16; + var texture = new Texture2D(size, size, TextureFormat.RGBA32, false) { filterMode = FilterMode.Point }; + var pixels = new Color[size * size]; + for (int i = 0; i < pixels.Length; i++) + { + pixels[i] = tint; + } + + texture.SetPixels(pixels); + texture.Apply(); + + sprite = Sprite.Create(texture, new Rect(0, 0, size, size), new Vector2(0.5f, 0.5f), 100f); + SpriteCache[tint] = sprite; + return sprite; + } + } +} diff --git a/magisterka_2/Assets/Scripts/Bullet.cs.meta b/magisterka_2/Assets/Scripts/Bullet.cs.meta new file mode 100644 index 0000000..c4c141d --- /dev/null +++ b/magisterka_2/Assets/Scripts/Bullet.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: cac8a93675d7419629b19696f280a652 \ No newline at end of file diff --git a/magisterka_2/Assets/Scripts/BulletPool.cs b/magisterka_2/Assets/Scripts/BulletPool.cs new file mode 100644 index 0000000..2f4d550 --- /dev/null +++ b/magisterka_2/Assets/Scripts/BulletPool.cs @@ -0,0 +1,89 @@ +using System; +using System.Collections.Generic; +using Magisterka.BulletHell; +using UnityEngine; + +namespace Magisterka.BulletHell +{ + /// + /// Runtime pool that keeps huge bullet counts without constant allocations. + /// + public class BulletPool : MonoBehaviour + { + [SerializeField] private Color bulletColor = Color.white; + [SerializeField] private Faction faction = Faction.Player; + [SerializeField] private int warmCapacity = 64; + + private readonly Queue _pool = new Queue(); + private readonly HashSet _liveBullets = new HashSet(); + + private Transform _poolRoot; + + public Color BulletColor => bulletColor; + public Faction OwnerFaction => faction; + + public static BulletPool Create(Transform parent, string poolName, Color color, Faction ownerFaction, int warmCount) + { + if (parent == null) throw new ArgumentNullException(nameof(parent)); + + var go = new GameObject(poolName); + go.transform.SetParent(parent, false); + var pool = go.AddComponent(); + pool.Initialize(color, ownerFaction, warmCount); + return pool; + } + + private void Initialize(Color color, Faction ownerFaction, int warmCount) + { + bulletColor = color; + faction = ownerFaction; + warmCapacity = Mathf.Max(0, warmCount); + _poolRoot = new GameObject("Inactive" + name).transform; + _poolRoot.SetParent(transform, false); + + for (int i = 0; i < warmCapacity; i++) + { + var bullet = Bullet.Create(this, bulletColor, faction); + Return(bullet); + } + } + + public Bullet Spawn(Vector2 position, Vector2 direction, float speed, float damage) + { + Bullet bullet = _pool.Count > 0 ? _pool.Dequeue() : Bullet.Create(this, bulletColor, faction); + _liveBullets.Add(bullet); + bullet.transform.SetParent(null, false); + bullet.gameObject.SetActive(true); + bullet.transform.position = position; + bullet.Configure(direction, speed, damage, faction); + return bullet; + } + + public void Return(Bullet bullet) + { + if (bullet == null) return; + + bullet.gameObject.SetActive(false); + bullet.transform.SetParent(_poolRoot, false); + _pool.Enqueue(bullet); + _liveBullets.Remove(bullet); + } + + public void ClearLiveBullets() + { + if (_liveBullets.Count == 0) return; + + foreach (var bullet in _liveBullets) + { + if (bullet != null) + { + bullet.gameObject.SetActive(false); + bullet.transform.SetParent(_poolRoot, false); + _pool.Enqueue(bullet); + } + } + + _liveBullets.Clear(); + } + } +} diff --git a/magisterka_2/Assets/Scripts/BulletPool.cs.meta b/magisterka_2/Assets/Scripts/BulletPool.cs.meta new file mode 100644 index 0000000..73a6f8e --- /dev/null +++ b/magisterka_2/Assets/Scripts/BulletPool.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 2cf1222941636185f83028970675cdc0 \ No newline at end of file diff --git a/magisterka_2/Assets/Scripts/CameraShaker.cs b/magisterka_2/Assets/Scripts/CameraShaker.cs new file mode 100644 index 0000000..a53b987 --- /dev/null +++ b/magisterka_2/Assets/Scripts/CameraShaker.cs @@ -0,0 +1,39 @@ +using UnityEngine; + +namespace Magisterka.BulletHell +{ + /// + /// Quick camera shake helper for impactful effects. + /// + public class CameraShaker : MonoBehaviour + { + private Vector3 _originalPos; + private float _shakeTime; + private float _shakeStrength; + + private void Awake() + { + _originalPos = transform.localPosition; + } + + private void Update() + { + if (_shakeTime <= 0f) + { + transform.localPosition = Vector3.Lerp(transform.localPosition, _originalPos, 6f * Time.deltaTime); + return; + } + + _shakeTime -= Time.deltaTime; + var offset = Random.insideUnitCircle * _shakeStrength; + transform.localPosition = _originalPos + new Vector3(offset.x, offset.y, 0f); + _shakeStrength = Mathf.Lerp(_shakeStrength, 0f, 3f * Time.deltaTime); + } + + public void Shake(float duration, float strength) + { + _shakeTime = Mathf.Max(_shakeTime, duration); + _shakeStrength = Mathf.Max(_shakeStrength, strength); + } + } +} diff --git a/magisterka_2/Assets/Scripts/CameraShaker.cs.meta b/magisterka_2/Assets/Scripts/CameraShaker.cs.meta new file mode 100644 index 0000000..a6a62ed --- /dev/null +++ b/magisterka_2/Assets/Scripts/CameraShaker.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 635828e8464adc769a94e3e091877b0e \ No newline at end of file diff --git a/magisterka_2/Assets/Scripts/EffectManager.cs b/magisterka_2/Assets/Scripts/EffectManager.cs new file mode 100644 index 0000000..71a0d3c --- /dev/null +++ b/magisterka_2/Assets/Scripts/EffectManager.cs @@ -0,0 +1,123 @@ +using System.Collections.Generic; +using UnityEngine; + +namespace Magisterka.BulletHell +{ + /// + /// Lightweight visual feedback hub for hits, explosions, and screen-clears. + /// + public class EffectManager : MonoBehaviour + { + public static EffectManager Instance { get; private set; } + + [SerializeField] private int warmCount = 64; + [SerializeField] private Color playerColor = new Color(0.35f, 0.85f, 1f, 1f); + [SerializeField] private Color enemyColor = new Color(1f, 0.45f, 0.25f, 1f); + + private readonly Queue _pool = new Queue(); + private Transform _poolRoot; + private CameraShaker _cameraShaker; + + private void Awake() + { + if (Instance != null && Instance != this) + { + Destroy(gameObject); + return; + } + + Instance = this; + DontDestroyOnLoad(gameObject); + } + + public void Initialize(Transform parent) + { + if (parent != null) + { + transform.SetParent(parent, false); + } + + _cameraShaker = FindFirstObjectByType(); + if (_cameraShaker == null && Camera.main != null) + { + _cameraShaker = Camera.main.gameObject.AddComponent(); + } + + _poolRoot = new GameObject("FX_Pool").transform; + _poolRoot.SetParent(transform, false); + + Warmup(warmCount); + } + + public void SpawnHitEffect(Vector2 position, Faction hitFaction, float intensity) + { + var color = hitFaction == Faction.Player ? playerColor : enemyColor; + var endSize = Mathf.Lerp(0.6f, 1.8f, Mathf.Clamp01(intensity + 0.2f)); + PlayPulse(position, color, 0.25f, endSize, 0.18f); + } + + public void SpawnExplosion(Vector2 position, Faction faction, float size = 2.5f) + { + var color = faction == Faction.Player ? playerColor : enemyColor; + for (int i = 0; i < 4; i++) + { + float start = 0.4f + i * 0.1f; + float end = size + i * 0.35f; + float duration = 0.22f + i * 0.06f; + PlayPulse(position, color, start, end, duration); + } + + _cameraShaker?.Shake(0.18f, 0.45f * size); + } + + public void SpawnScreenClear(Vector2 position, float radius) + { + for (int i = 0; i < 6; i++) + { + float start = 0.8f + i * 0.5f; + float end = radius + i * 1.2f; + float duration = 0.35f + i * 0.12f; + var blend = Mathf.Clamp01(i / 5f); + var color = Color.Lerp(playerColor, enemyColor, blend); + PlayPulse(position, color, start, end, duration); + } + + _cameraShaker?.Shake(0.4f, 1.2f * radius); + } + + private void Warmup(int count) + { + for (int i = 0; i < count; i++) + { + _pool.Enqueue(CreatePulse()); + } + } + + private EffectPulse CreatePulse() + { + var go = new GameObject("EffectPulse"); + go.transform.SetParent(_poolRoot, false); + var pulse = go.AddComponent(); + go.SetActive(false); + return pulse; + } + + private void PlayPulse(Vector2 position, Color color, float startSize, float endSize, float duration) + { + var pulse = _pool.Count > 0 ? _pool.Dequeue() : CreatePulse(); + pulse.transform.SetParent(null, false); + pulse.Play(position, color, startSize, endSize, duration, Recycle); + } + + private void Recycle(EffectPulse pulse) + { + if (pulse == null) + { + return; + } + + pulse.transform.SetParent(_poolRoot, false); + _pool.Enqueue(pulse); + } + } +} diff --git a/magisterka_2/Assets/Scripts/EffectManager.cs.meta b/magisterka_2/Assets/Scripts/EffectManager.cs.meta new file mode 100644 index 0000000..c818b87 --- /dev/null +++ b/magisterka_2/Assets/Scripts/EffectManager.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: c0af68a7cbf92607891efec8c6733c7d \ No newline at end of file diff --git a/magisterka_2/Assets/Scripts/EffectPulse.cs b/magisterka_2/Assets/Scripts/EffectPulse.cs new file mode 100644 index 0000000..75de763 --- /dev/null +++ b/magisterka_2/Assets/Scripts/EffectPulse.cs @@ -0,0 +1,102 @@ +using System; +using UnityEngine; + +namespace Magisterka.BulletHell +{ + /// + /// Simple animated sprite burst that scales and fades over a short lifetime. + /// + [RequireComponent(typeof(SpriteRenderer))] + public class EffectPulse : MonoBehaviour + { + private SpriteRenderer _renderer; + private Action _onComplete; + private Vector3 _startScale; + private Vector3 _endScale; + private float _duration; + private float _elapsed; + private Color _baseColor; + private bool _isActive; + + private void Awake() + { + _renderer = GetComponent(); + _renderer.sprite = BuildPulseSprite(); + _renderer.sortingOrder = 50; + _renderer.color = Color.white; + } + + public void Play(Vector2 position, Color color, float startSize, float endSize, float duration, Action onComplete) + { + transform.position = position; + _startScale = Vector3.one * Mathf.Max(0.01f, startSize); + _endScale = Vector3.one * Mathf.Max(0.02f, endSize); + _duration = Mathf.Max(0.05f, duration); + _elapsed = 0f; + _baseColor = color; + _renderer.color = color; + _onComplete = onComplete; + _isActive = true; + gameObject.SetActive(true); + } + + private void Update() + { + if (!_isActive) + { + return; + } + + _elapsed += Time.deltaTime; + float t = Mathf.Clamp01(_elapsed / _duration); + transform.localScale = Vector3.Lerp(_startScale, _endScale, t); + + var color = _baseColor; + color.a = Mathf.Lerp(1f, 0f, t); + _renderer.color = color; + + if (_elapsed >= _duration) + { + Stop(); + } + } + + public void Stop() + { + if (!_isActive) + { + return; + } + + _isActive = false; + gameObject.SetActive(false); + _onComplete?.Invoke(this); + } + + private static Sprite BuildPulseSprite() + { + const int size = 32; + var texture = new Texture2D(size, size, TextureFormat.RGBA32, false); + texture.filterMode = FilterMode.Bilinear; + + var center = new Vector2(size - 1, size - 1) * 0.5f; + var pixels = new Color[size * size]; + + for (int y = 0; y < size; y++) + { + for (int x = 0; x < size; x++) + { + var index = x + y * size; + float dst = Vector2.Distance(center, new Vector2(x, y)) / (size * 0.5f); + float alpha = Mathf.Clamp01(1f - dst); + pixels[index] = new Color(1f, 1f, 1f, alpha * alpha); + } + } + + texture.SetPixels(pixels); + texture.Apply(); + + return Sprite.Create(texture, new Rect(0, 0, size, size), new Vector2(0.5f, 0.5f), 64f); + } + } +} diff --git a/magisterka_2/Assets/Scripts/EffectPulse.cs.meta b/magisterka_2/Assets/Scripts/EffectPulse.cs.meta new file mode 100644 index 0000000..a1943e0 --- /dev/null +++ b/magisterka_2/Assets/Scripts/EffectPulse.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 201e8da9a92132ef7a9c53d0ab7e383c \ No newline at end of file diff --git a/magisterka_2/Assets/Scripts/EnemyController.cs b/magisterka_2/Assets/Scripts/EnemyController.cs new file mode 100644 index 0000000..f9b9b69 --- /dev/null +++ b/magisterka_2/Assets/Scripts/EnemyController.cs @@ -0,0 +1,126 @@ +using System.Collections; +using UnityEngine; + +namespace Magisterka.BulletHell +{ + /// + /// Controls enemy motion, firing patterns, and death rewards. + /// + [RequireComponent(typeof(Health))] + public class EnemyController : MonoBehaviour + { + [SerializeField] private float moveSpeed = 3f; + [SerializeField] private float bulletSpeed = 12f; + [SerializeField] private float bulletDamage = 8f; + [SerializeField] private float fireInterval = 0.6f; + [SerializeField] private int scoreValue = 100; + + private EnemySpawner _spawner; + private BulletPool _bulletPool; + private PlayerController _player; + private Health _health; + private float _phaseSeed; + private float _zigzagWidth = 2.8f; + private float _difficulty; + private Coroutine _fireRoutine; + + public void Initialize(EnemySpawner spawner, BulletPool bulletPool, PlayerController player, float difficultyScale, float healthValue) + { + _spawner = spawner; + _bulletPool = bulletPool; + _player = player; + _difficulty = difficultyScale; + _health = GetComponent(); + _health.Configure(Faction.Enemy, healthValue); + _health.Died += HandleDeath; + _phaseSeed = Random.Range(0f, 360f); + + moveSpeed += difficultyScale * 0.8f; + fireInterval = Mathf.Max(0.22f, fireInterval - difficultyScale * 0.08f); + bulletSpeed += difficultyScale * 1.4f; + bulletDamage += difficultyScale * 0.6f; + scoreValue += Mathf.RoundToInt(40f * difficultyScale); + + if (_fireRoutine != null) + { + StopCoroutine(_fireRoutine); + } + + _fireRoutine = StartCoroutine(FireRoutine()); + } + + private void Update() + { + var pos = transform.position; + pos += Vector3.down * (moveSpeed * Time.deltaTime); + pos.x += Mathf.Sin(Time.time * (2f + _difficulty) + _phaseSeed) * (_zigzagWidth * Time.deltaTime); + transform.position = pos; + + if (transform.position.y < -12f) + { + _spawner?.DespawnEnemy(this); + } + } + + private IEnumerator FireRoutine() + { + yield return new WaitForSeconds(Random.Range(0.15f, fireInterval)); + + while (true) + { + FirePattern(); + yield return new WaitForSeconds(fireInterval); + } + } + + private void FirePattern() + { + int radialBullets = Mathf.Clamp(Mathf.RoundToInt(16 + _difficulty * 14f), 12, 48); + float angleStep = 360f / radialBullets; + float angleOffset = Time.time * 60f + _phaseSeed; + + for (int i = 0; i < radialBullets; i++) + { + float angle = (angleStep * i + angleOffset) * Mathf.Deg2Rad; + var dir = new Vector2(Mathf.Cos(angle), Mathf.Sin(angle)); + _bulletPool.Spawn(transform.position, dir, bulletSpeed, bulletDamage); + } + + // Additional forward stream for dense barrages. + var forward = Vector2.down; + for (int i = -2; i <= 2; i++) + { + var spreadDir = Quaternion.Euler(0f, 0f, i * 8f) * forward; + _bulletPool.Spawn(transform.position, spreadDir, bulletSpeed * 1.2f, bulletDamage * 0.8f); + } + + if (_player != null && _player.isActiveAndEnabled) + { + var toPlayer = ((Vector2)_player.transform.position - (Vector2)transform.position).normalized; + int aimedShots = Mathf.Clamp(3 + Mathf.RoundToInt(_difficulty), 3, 8); + for (int i = 0; i < aimedShots; i++) + { + float sway = (i - (aimedShots - 1) * 0.5f) * 4f; + var dir = Quaternion.Euler(0f, 0f, sway) * toPlayer; + _bulletPool.Spawn(transform.position, dir, bulletSpeed * 1.4f, bulletDamage * 0.9f); + } + } + } + + private void HandleDeath(Health _) + { + EffectManager.Instance?.SpawnExplosion(transform.position, Faction.Enemy, 3f + _difficulty); + ScoreManager.Instance?.AddScore(scoreValue); + _spawner?.NotifyEnemyKilled(this); + Destroy(gameObject); + } + + private void OnDestroy() + { + if (_health != null) + { + _health.Died -= HandleDeath; + } + } + } +} diff --git a/magisterka_2/Assets/Scripts/EnemyController.cs.meta b/magisterka_2/Assets/Scripts/EnemyController.cs.meta new file mode 100644 index 0000000..ea42be6 --- /dev/null +++ b/magisterka_2/Assets/Scripts/EnemyController.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 93ede0e90a8bf587dba308bd088a2e70 \ No newline at end of file diff --git a/magisterka_2/Assets/Scripts/EnemySpawner.cs b/magisterka_2/Assets/Scripts/EnemySpawner.cs new file mode 100644 index 0000000..c298e06 --- /dev/null +++ b/magisterka_2/Assets/Scripts/EnemySpawner.cs @@ -0,0 +1,176 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace Magisterka.BulletHell +{ + /// + /// Spawns continuously escalating enemy waves for roughly five minutes. + /// + public class EnemySpawner : MonoBehaviour + { + public static EnemySpawner Instance { get; private set; } + + [SerializeField] private float totalDuration = 300f; + [SerializeField] private float spawnDelayStart = 1.2f; + [SerializeField] private float spawnDelayEnd = 0.18f; + [SerializeField] private float spawnHeight = 10f; + [SerializeField] private float horizontalPadding = 1.2f; + + private readonly List _liveEnemies = new List(); + + private BulletPool _enemyBulletPool; + private Camera _camera; + private Sprite _enemySprite; + private float _elapsed; + private Vector2 _worldBounds; + + private PlayerController _player; + + public void Initialize(Camera camera, BulletPool enemyPool, PlayerController player, Vector2 worldBounds) + { + if (Instance != null && Instance != this) + { + Destroy(gameObject); + return; + } + + Instance = this; + + _camera = camera; + _enemyBulletPool = enemyPool; + _player = player; + _worldBounds = worldBounds; + _enemySprite = BuildEnemySprite(); + + StartCoroutine(SpawnRoutine()); + } + + public void NotifyEnemyKilled(EnemyController enemy) + { + _liveEnemies.Remove(enemy); + } + + public void DespawnEnemy(EnemyController enemy) + { + if (enemy == null) + { + return; + } + + _liveEnemies.Remove(enemy); + Destroy(enemy.gameObject); + } + + public void ClearScreen() + { + foreach (var enemy in _liveEnemies.ToArray()) + { + if (enemy != null && enemy.TryGetComponent(out Health health)) + { + health.Kill(); + } + } + + _enemyBulletPool?.ClearLiveBullets(); + } + + private IEnumerator SpawnRoutine() + { + yield return new WaitForSeconds(1.5f); + + while (_elapsed < totalDuration) + { + SpawnWave(); + + float progress = Mathf.Clamp01(_elapsed / totalDuration); + float delay = Mathf.Lerp(spawnDelayStart, spawnDelayEnd, progress); + delay = Mathf.Max(0.08f, delay); + yield return new WaitForSeconds(delay); + _elapsed += delay; + } + } + + private void SpawnWave() + { + int targetCount = Mathf.Clamp(Mathf.RoundToInt(3 + _elapsed * 0.12f), 4, 18); + float difficulty = Mathf.Clamp01(_elapsed / totalDuration) * 8f; + + for (int i = 0; i < targetCount; i++) + { + Vector2 spawnPos = PickSpawnPosition(i, targetCount); + SpawnEnemy(spawnPos, difficulty); + } + } + + private Vector2 PickSpawnPosition(int index, int total) + { + float camWidth = _worldBounds.x; + float step = (camWidth * 2f - horizontalPadding * 2f) / Mathf.Max(1, total - 1); + float x = -camWidth + horizontalPadding + step * index + Random.Range(-0.6f, 0.6f); + float y = _camera.orthographicSize + spawnHeight; + return new Vector2(x, y); + } + + private void SpawnEnemy(Vector2 position, float difficulty) + { + var enemyGO = new GameObject("Enemy"); + enemyGO.transform.SetParent(transform, false); + enemyGO.transform.position = position; + enemyGO.transform.localScale = Vector3.one * 1.6f; + + var renderer = enemyGO.AddComponent(); + renderer.sprite = _enemySprite; + renderer.sortingOrder = 10; + renderer.color = Color.Lerp(new Color(1f, 0.6f, 0.3f, 1f), new Color(1f, 0.1f, 0.2f, 1f), Mathf.Clamp01(difficulty / 8f)); + + var collider = enemyGO.AddComponent(); + collider.isTrigger = true; + collider.radius = 0.7f; + + var health = enemyGO.AddComponent(); + + var controller = enemyGO.AddComponent(); + controller.Initialize(this, _enemyBulletPool, _player, difficulty, 30f + difficulty * 20f); + + _liveEnemies.Add(controller); + } + + private void OnDestroy() + { + if (Instance == this) + { + Instance = null; + } + } + + private Sprite BuildEnemySprite() + { + const int size = 64; + var texture = new Texture2D(size, size, TextureFormat.RGBA32, false) + { + filterMode = FilterMode.Point + }; + + var center = new Vector2(size / 2f, size / 2f); + var pixels = new Color[size * size]; + var body = new Color(1f, 0.35f, 0.35f, 1f); + + for (int y = 0; y < size; y++) + { + for (int x = 0; x < size; x++) + { + int index = x + y * size; + float dist = Vector2.Distance(center, new Vector2(x, y)); + float threshold = size * 0.35f + Mathf.Sin(y * 0.2f) * 2f; + pixels[index] = dist <= threshold ? body : new Color(0f, 0f, 0f, 0f); + } + } + + texture.SetPixels(pixels); + texture.Apply(); + + return Sprite.Create(texture, new Rect(0, 0, size, size), new Vector2(0.5f, 0.5f), 64f); + } + } +} diff --git a/magisterka_2/Assets/Scripts/EnemySpawner.cs.meta b/magisterka_2/Assets/Scripts/EnemySpawner.cs.meta new file mode 100644 index 0000000..a344668 --- /dev/null +++ b/magisterka_2/Assets/Scripts/EnemySpawner.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 35145ffe5be7aea6782f360b36ae7d2a \ No newline at end of file diff --git a/magisterka_2/Assets/Scripts/Faction.cs b/magisterka_2/Assets/Scripts/Faction.cs new file mode 100644 index 0000000..097d3c6 --- /dev/null +++ b/magisterka_2/Assets/Scripts/Faction.cs @@ -0,0 +1,13 @@ +using System; + +namespace Magisterka.BulletHell +{ + /// + /// Basic identifier for combat sides. + /// + public enum Faction + { + Player = 0, + Enemy = 1 + } +} diff --git a/magisterka_2/Assets/Scripts/Faction.cs.meta b/magisterka_2/Assets/Scripts/Faction.cs.meta new file mode 100644 index 0000000..c2bc64f --- /dev/null +++ b/magisterka_2/Assets/Scripts/Faction.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 3b8dd67ed3d0b4ed9bd25117ac55c8c6 \ No newline at end of file diff --git a/magisterka_2/Assets/Scripts/GameBootstrap.cs b/magisterka_2/Assets/Scripts/GameBootstrap.cs new file mode 100644 index 0000000..8465668 --- /dev/null +++ b/magisterka_2/Assets/Scripts/GameBootstrap.cs @@ -0,0 +1,23 @@ +using UnityEngine; + +namespace Magisterka.BulletHell +{ + /// + /// Ensures the runtime bootstrapper exists even if the scene is empty. + /// + public static class GameBootstrap + { + [RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.AfterSceneLoad)] + private static void EnsureInitializer() + { + if (Object.FindFirstObjectByType() != null) + { + return; + } + + var go = new GameObject("GameInitializer"); + go.AddComponent(); + Object.DontDestroyOnLoad(go); + } + } +} diff --git a/magisterka_2/Assets/Scripts/GameBootstrap.cs.meta b/magisterka_2/Assets/Scripts/GameBootstrap.cs.meta new file mode 100644 index 0000000..d4a6004 --- /dev/null +++ b/magisterka_2/Assets/Scripts/GameBootstrap.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 8a0bda5e5cb690368bcffabb28cc385b \ No newline at end of file diff --git a/magisterka_2/Assets/Scripts/GameInitializer.cs b/magisterka_2/Assets/Scripts/GameInitializer.cs new file mode 100644 index 0000000..8fb9092 --- /dev/null +++ b/magisterka_2/Assets/Scripts/GameInitializer.cs @@ -0,0 +1,101 @@ +using Magisterka.BulletHell; +using UnityEngine; +using UnityEngine.UI; + +namespace Magisterka.BulletHell +{ + /// + /// Bootstraps the benchmark bullet hell scene entirely at runtime. + /// + public class GameInitializer : MonoBehaviour + { + [SerializeField] private float cameraSize = 6.5f; + + private void Awake() + { + BuildCamera(); + BuildGame(); + } + + private void BuildCamera() + { + var cam = Camera.main; + if (cam == null) + { + cam = new GameObject("Main Camera").AddComponent(); + } + + cam.tag = "MainCamera"; + cam.clearFlags = CameraClearFlags.SolidColor; + cam.backgroundColor = Color.black; + cam.orthographic = true; + cam.orthographicSize = cameraSize; + cam.transform.position = new Vector3(0f, 0f, -10f); + } + + private void BuildGame() + { + Application.targetFrameRate = 240; + Cursor.visible = false; + + var cam = Camera.main; + var bounds = new Vector2(cam.orthographicSize * cam.aspect, cam.orthographicSize); + + var root = new GameObject("GameRoot").transform; + root.SetParent(transform, false); + + BackgroundScroller.Create(cam, root); + + var effectManager = new GameObject("EffectManager").AddComponent(); + effectManager.Initialize(root); + + var scoreManager = new GameObject("ScoreManager").AddComponent(); + var scoreText = CreateScoreUI(); + scoreManager.Initialize(scoreText); + + var pools = new GameObject("BulletPools").transform; + pools.SetParent(root, false); + + var playerPool = BulletPool.Create(pools, "PlayerBullets", new Color(0.35f, 0.9f, 1f, 1f), Faction.Player, 600); + var enemyPool = BulletPool.Create(pools, "EnemyBullets", new Color(1f, 0.4f, 0.2f, 1f), Faction.Enemy, 1200); + + var player = PlayerController.CreatePlayer(root, playerPool, bounds); + + var spawnerGO = new GameObject("EnemySpawner"); + spawnerGO.transform.SetParent(root, false); + var spawner = spawnerGO.AddComponent(); + spawner.Initialize(cam, enemyPool, player, bounds); + } + + private Text CreateScoreUI() + { + var canvasGO = new GameObject("Canvas"); + var canvas = canvasGO.AddComponent(); + canvas.renderMode = RenderMode.ScreenSpaceOverlay; + canvasGO.AddComponent().uiScaleMode = CanvasScaler.ScaleMode.ScaleWithScreenSize; + canvasGO.AddComponent(); + + var textGO = new GameObject("ScoreLabel"); + textGO.transform.SetParent(canvasGO.transform, false); + var label = textGO.AddComponent(); + label.font = Resources.GetBuiltinResource("LegacyRuntime.ttf"); + if (label.font == null) + { + label.font = Font.CreateDynamicFontFromOSFont("Arial", 32); + } + label.fontSize = 32; + label.alignment = TextAnchor.UpperLeft; + label.color = Color.white; + label.text = "Score: 0"; + + var rect = label.rectTransform; + rect.anchorMin = new Vector2(0f, 1f); + rect.anchorMax = new Vector2(0f, 1f); + rect.pivot = new Vector2(0f, 1f); + rect.anchoredPosition = new Vector2(20f, -20f); + + canvasGO.transform.SetParent(transform, false); + return label; + } + } +} diff --git a/magisterka_2/Assets/Scripts/GameInitializer.cs.meta b/magisterka_2/Assets/Scripts/GameInitializer.cs.meta new file mode 100644 index 0000000..6a3babe --- /dev/null +++ b/magisterka_2/Assets/Scripts/GameInitializer.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: a62032d38411c5517a166d1d3804a9a7 \ No newline at end of file diff --git a/magisterka_2/Assets/Scripts/Health.cs b/magisterka_2/Assets/Scripts/Health.cs new file mode 100644 index 0000000..caf466f --- /dev/null +++ b/magisterka_2/Assets/Scripts/Health.cs @@ -0,0 +1,71 @@ +using System; +using UnityEngine; + +namespace Magisterka.BulletHell +{ + /// + /// Tracks hit points and dispatches simple death callbacks. + /// + public class Health : MonoBehaviour + { + [SerializeField] private Faction faction = Faction.Enemy; + [SerializeField] private float maxHealth = 10f; + + private float _current; + + public event Action Died; + + public Faction Faction => faction; + public float MaxHealth => maxHealth; + public float Current => _current; + + private void Awake() + { + _current = maxHealth; + } + + public void Configure(Faction targetFaction, float health) + { + faction = targetFaction; + maxHealth = Mathf.Max(1f, health); + _current = maxHealth; + } + + public void ApplyDamage(float damage, Vector2 hitPoint) + { + if (_current <= 0f) + { + return; + } + + _current -= damage; + EffectManager.Instance?.SpawnHitEffect(hitPoint, faction, Mathf.Clamp01(damage / maxHealth)); + + if (_current <= 0f) + { + Die(); + } + } + + public void RestoreFull() + { + _current = maxHealth; + } + + public void Kill() + { + if (_current <= 0f) + { + return; + } + + _current = 0f; + Die(); + } + + private void Die() + { + Died?.Invoke(this); + } + } +} diff --git a/magisterka_2/Assets/Scripts/Health.cs.meta b/magisterka_2/Assets/Scripts/Health.cs.meta new file mode 100644 index 0000000..7f0baa7 --- /dev/null +++ b/magisterka_2/Assets/Scripts/Health.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 8ed2f8f5001acaaaba43718c23be1206 \ No newline at end of file diff --git a/magisterka_2/Assets/Scripts/PlayerController.cs b/magisterka_2/Assets/Scripts/PlayerController.cs new file mode 100644 index 0000000..0113a8d --- /dev/null +++ b/magisterka_2/Assets/Scripts/PlayerController.cs @@ -0,0 +1,288 @@ +using System.Collections; +using UnityEngine; + +namespace Magisterka.BulletHell +{ + /// + /// Handles user input, shooting, screen-clearing bomb, and respawn logic. + /// + [RequireComponent(typeof(Health))] + public class PlayerController : MonoBehaviour + { + public static PlayerController Instance { get; private set; } + + [Header("Movement")] + [SerializeField] private float moveSpeed = 12f; + [SerializeField] private float focusSpeedMultiplier = 0.6f; + + [Header("Offense")] + [SerializeField] private float fireRate = 0.08f; + [SerializeField] private float bulletSpeed = 26f; + [SerializeField] private float bulletDamage = 16f; + [SerializeField] private int volleyWidth = 6; + + [Header("Survivability")] + [SerializeField] private int maxLives = 5; + [SerializeField] private float respawnDelay = 1.4f; + [SerializeField] private float invulnerabilityDuration = 2f; + + [Header("Controls")] + [SerializeField] private KeyCode fireKey = KeyCode.Z; + [SerializeField] private KeyCode modifierKey = KeyCode.LeftShift; + [SerializeField] private KeyCode bombKey = KeyCode.X; + + private BulletPool _playerBulletPool; + private Health _health; + private SpriteRenderer _renderer; + private Vector2 _bounds = new Vector2(8f, 4.5f); + private float _fireCooldown; + private bool _bombAvailable = true; + private int _remainingLives; + private bool _isInvulnerable; + private Color _baseColor; + + public void Initialize(BulletPool bulletPool, Vector2 movementBounds) + { + Instance = this; + _playerBulletPool = bulletPool; + _bounds = movementBounds; + _health = GetComponent(); + _health.Configure(Faction.Player, 60f); + _health.Died += HandleDeath; + + _renderer = GetComponent(); + _baseColor = _renderer != null ? _renderer.color : Color.cyan; + + _remainingLives = Mathf.Max(0, maxLives - 1); + transform.position = new Vector3(0f, -_bounds.y + 1.5f, 0f); + } + + public static PlayerController CreatePlayer(Transform parent, BulletPool playerBulletPool, Vector2 movementBounds) + { + var playerGO = new GameObject("Player"); + playerGO.transform.SetParent(parent, false); + + var renderer = playerGO.AddComponent(); + renderer.sprite = BuildPlayerSprite(); + renderer.sortingOrder = 20; + renderer.color = new Color(0.25f, 0.85f, 1f, 1f); + + var collider = playerGO.AddComponent(); + collider.radius = 0.55f; + collider.isTrigger = true; + + var health = playerGO.AddComponent(); + + var controller = playerGO.AddComponent(); + controller.Initialize(playerBulletPool, movementBounds); + return controller; + } + + private void Update() + { + HandleMovement(); + HandleShooting(); + HandleBomb(); + + if (_fireCooldown > 0f) + { + _fireCooldown -= Time.deltaTime; + } + } + + private void HandleMovement() + { + float x = 0f; + float y = 0f; + + if (Input.GetKey(KeyCode.A) || Input.GetKey(KeyCode.LeftArrow)) x -= 1f; + if (Input.GetKey(KeyCode.D) || Input.GetKey(KeyCode.RightArrow)) x += 1f; + if (Input.GetKey(KeyCode.W) || Input.GetKey(KeyCode.UpArrow)) y += 1f; + if (Input.GetKey(KeyCode.S) || Input.GetKey(KeyCode.DownArrow)) y -= 1f; + + var direction = new Vector2(x, y).normalized; + float speed = moveSpeed * (Input.GetKey(modifierKey) ? focusSpeedMultiplier : 1f); + var delta = direction * (speed * Time.deltaTime); + var next = transform.position + (Vector3)delta; + next.x = Mathf.Clamp(next.x, -_bounds.x + 0.5f, _bounds.x - 0.5f); + next.y = Mathf.Clamp(next.y, -_bounds.y + 0.5f, _bounds.y - 0.5f); + transform.position = next; + } + + private void HandleShooting() + { + bool wantsFire = Input.GetKey(fireKey) || Input.GetMouseButton(0); + if (!wantsFire || _fireCooldown > 0f) + { + return; + } + + FireVolley(); + _fireCooldown = fireRate; + } + + private void FireVolley() + { + var origin = transform.position + Vector3.up * 0.4f; + int half = volleyWidth / 2; + + for (int i = -half; i <= half; i++) + { + float spread = i * 6f; + var direction = Quaternion.Euler(0f, 0f, spread) * Vector2.up; + var offset = direction * 0.25f * Mathf.Abs(i); + _playerBulletPool.Spawn(origin + (Vector3)offset, direction, bulletSpeed, bulletDamage); + } + + EffectManager.Instance?.SpawnHitEffect(origin + Vector3.up * 0.2f, Faction.Player, 0.6f); + } + + private void HandleBomb() + { + if (!_bombAvailable) + { + return; + } + + bool trigger = Input.GetKeyDown(bombKey) || Input.GetKeyDown(KeyCode.Space) || Input.GetMouseButtonDown(1); + if (!trigger) + { + return; + } + + _bombAvailable = false; + StartCoroutine(PerformBomb()); + } + + private IEnumerator PerformBomb() + { + _isInvulnerable = true; + _renderer.color = Color.white; + EffectManager.Instance?.SpawnScreenClear(transform.position, 18f); + EnemySpawner.Instance?.ClearScreen(); + + // Hyper dash upwards and back for dramatic flair. + Vector3 start = transform.position; + Vector3 apex = new Vector3(0f, Mathf.Min(_bounds.y - 0.6f, start.y + 4.5f), 0f); + float travel = 0.4f; + float elapsed = 0f; + + while (elapsed < travel) + { + elapsed += Time.deltaTime; + float t = elapsed / travel; + transform.position = Vector3.Lerp(start, apex, t); + yield return null; + } + + elapsed = 0f; + while (elapsed < travel) + { + elapsed += Time.deltaTime; + float t = elapsed / travel; + transform.position = Vector3.Lerp(apex, start, t); + yield return null; + } + + _isInvulnerable = false; + _renderer.color = _baseColor; + } + + private void HandleDeath(Health _) + { + StartCoroutine(RespawnRoutine()); + } + + private IEnumerator RespawnRoutine() + { + EffectManager.Instance?.SpawnExplosion(transform.position, Faction.Player, 4f); + _renderer.enabled = false; + _isInvulnerable = true; + + if (_remainingLives < 0) + { + gameObject.SetActive(false); + yield break; + } + + yield return new WaitForSeconds(respawnDelay); + transform.position = new Vector3(0f, -_bounds.y + 1.5f, 0f); + _renderer.enabled = true; + _health.RestoreFull(); + + float timer = invulnerabilityDuration; + while (timer > 0f) + { + timer -= Time.deltaTime; + float pulse = Mathf.PingPong(Time.time * 10f, 1f); + if (_renderer != null) + { + _renderer.color = Color.Lerp(_baseColor, Color.white, pulse); + } + + yield return null; + } + + if (_renderer != null) + { + _renderer.color = _baseColor; + } + + _isInvulnerable = false; + _remainingLives--; + } + + private void OnDestroy() + { + if (_health != null) + { + _health.Died -= HandleDeath; + } + + if (Instance == this) + { + Instance = null; + } + } + + public bool IsInvulnerable() => _isInvulnerable; + + public void ApplyDamage(float value) + { + if (_isInvulnerable) + { + return; + } + + _health.ApplyDamage(value, transform.position); + } + + private static Sprite BuildPlayerSprite() + { + const int size = 64; + var texture = new Texture2D(size, size, TextureFormat.RGBA32, false) + { + filterMode = FilterMode.Point + }; + + var center = new Vector2(size / 2f, size / 5f * 4f); + var pixels = new Color[size * size]; + var body = new Color(0.2f, 0.8f, 1f, 1f); + + for (int y = 0; y < size; y++) + { + for (int x = 0; x < size; x++) + { + int index = x + y * size; + float dist = Vector2.Distance(center, new Vector2(x, y * 0.9f)); + pixels[index] = dist < size * 0.35f ? body : new Color(0f, 0f, 0f, 0f); + } + } + + texture.SetPixels(pixels); + texture.Apply(); + + return Sprite.Create(texture, new Rect(0, 0, size, size), new Vector2(0.5f, 0.2f), 64f); + } + } +} diff --git a/magisterka_2/Assets/Scripts/PlayerController.cs.meta b/magisterka_2/Assets/Scripts/PlayerController.cs.meta new file mode 100644 index 0000000..c6f1fe2 --- /dev/null +++ b/magisterka_2/Assets/Scripts/PlayerController.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 3ba67e64ec76c8988baad48f836ba579 \ No newline at end of file diff --git a/magisterka_2/Assets/Scripts/ScoreManager.cs b/magisterka_2/Assets/Scripts/ScoreManager.cs new file mode 100644 index 0000000..57e513d --- /dev/null +++ b/magisterka_2/Assets/Scripts/ScoreManager.cs @@ -0,0 +1,56 @@ +using UnityEngine; +using UnityEngine.UI; + +namespace Magisterka.BulletHell +{ + /// + /// Handles score accumulation and HUD updates. + /// + public class ScoreManager : MonoBehaviour + { + public static ScoreManager Instance { get; private set; } + + private Text _scoreText; + private int _score; + + private void Awake() + { + if (Instance != null && Instance != this) + { + Destroy(gameObject); + return; + } + + Instance = this; + DontDestroyOnLoad(gameObject); + } + + public void Initialize(Text scoreText) + { + _scoreText = scoreText; + ResetScore(); + } + + public void AddScore(int value) + { + _score += value; + UpdateLabel(); + } + + public void ResetScore() + { + _score = 0; + UpdateLabel(); + } + + private void UpdateLabel() + { + if (_scoreText == null) + { + return; + } + + _scoreText.text = $"Score: {_score:N0}"; + } + } +} diff --git a/magisterka_2/Assets/Scripts/ScoreManager.cs.meta b/magisterka_2/Assets/Scripts/ScoreManager.cs.meta new file mode 100644 index 0000000..a8dffb4 --- /dev/null +++ b/magisterka_2/Assets/Scripts/ScoreManager.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 294e59ae91c5dc00298264594f7afe7d \ No newline at end of file diff --git a/magisterka_2/Packages/manifest.json b/magisterka_2/Packages/manifest.json new file mode 100644 index 0000000..62be5bf --- /dev/null +++ b/magisterka_2/Packages/manifest.json @@ -0,0 +1,48 @@ +{ + "dependencies": { + "com.coplaydev.unity-mcp": "https://github.com/CoplayDev/unity-mcp.git?path=/MCPForUnity", + "com.unity.collab-proxy": "2.10.0", + "com.unity.feature.2d": "2.0.1", + "com.unity.ide.rider": "3.0.38", + "com.unity.ide.visualstudio": "2.0.23", + "com.unity.inputsystem": "1.14.2", + "com.unity.multiplayer.center": "1.0.0", + "com.unity.test-framework": "1.5.1", + "com.unity.timeline": "1.8.9", + "com.unity.toolchain.linux-x86_64": "2.0.10", + "com.unity.ugui": "2.0.0", + "com.unity.visualscripting": "1.9.7", + "com.unity.modules.accessibility": "1.0.0", + "com.unity.modules.ai": "1.0.0", + "com.unity.modules.androidjni": "1.0.0", + "com.unity.modules.animation": "1.0.0", + "com.unity.modules.assetbundle": "1.0.0", + "com.unity.modules.audio": "1.0.0", + "com.unity.modules.cloth": "1.0.0", + "com.unity.modules.director": "1.0.0", + "com.unity.modules.imageconversion": "1.0.0", + "com.unity.modules.imgui": "1.0.0", + "com.unity.modules.jsonserialize": "1.0.0", + "com.unity.modules.particlesystem": "1.0.0", + "com.unity.modules.physics": "1.0.0", + "com.unity.modules.physics2d": "1.0.0", + "com.unity.modules.screencapture": "1.0.0", + "com.unity.modules.terrain": "1.0.0", + "com.unity.modules.terrainphysics": "1.0.0", + "com.unity.modules.tilemap": "1.0.0", + "com.unity.modules.ui": "1.0.0", + "com.unity.modules.uielements": "1.0.0", + "com.unity.modules.umbra": "1.0.0", + "com.unity.modules.unityanalytics": "1.0.0", + "com.unity.modules.unitywebrequest": "1.0.0", + "com.unity.modules.unitywebrequestassetbundle": "1.0.0", + "com.unity.modules.unitywebrequestaudio": "1.0.0", + "com.unity.modules.unitywebrequesttexture": "1.0.0", + "com.unity.modules.unitywebrequestwww": "1.0.0", + "com.unity.modules.vehicles": "1.0.0", + "com.unity.modules.video": "1.0.0", + "com.unity.modules.vr": "1.0.0", + "com.unity.modules.wind": "1.0.0", + "com.unity.modules.xr": "1.0.0" + } +} diff --git a/magisterka_2/Packages/packages-lock.json b/magisterka_2/Packages/packages-lock.json new file mode 100644 index 0000000..6054f00 --- /dev/null +++ b/magisterka_2/Packages/packages-lock.json @@ -0,0 +1,544 @@ +{ + "dependencies": { + "com.coplaydev.unity-mcp": { + "version": "https://github.com/CoplayDev/unity-mcp.git?path=/MCPForUnity", + "depth": 0, + "source": "git", + "dependencies": { + "com.unity.nuget.newtonsoft-json": "3.0.2" + }, + "hash": "5ad5b4a632fa061070a3217f2533a39680d1003b" + }, + "com.unity.2d.animation": { + "version": "10.2.1", + "depth": 1, + "source": "registry", + "dependencies": { + "com.unity.2d.common": "9.1.1", + "com.unity.2d.sprite": "1.0.0", + "com.unity.collections": "1.2.4", + "com.unity.modules.animation": "1.0.0", + "com.unity.modules.uielements": "1.0.0" + }, + "url": "https://packages.unity.com" + }, + "com.unity.2d.aseprite": { + "version": "1.1.10", + "depth": 1, + "source": "registry", + "dependencies": { + "com.unity.2d.common": "6.0.6", + "com.unity.2d.sprite": "1.0.0", + "com.unity.mathematics": "1.2.6", + "com.unity.modules.animation": "1.0.0" + }, + "url": "https://packages.unity.com" + }, + "com.unity.2d.common": { + "version": "9.1.1", + "depth": 2, + "source": "registry", + "dependencies": { + "com.unity.burst": "1.8.4", + "com.unity.2d.sprite": "1.0.0", + "com.unity.mathematics": "1.1.0", + "com.unity.modules.animation": "1.0.0", + "com.unity.modules.uielements": "1.0.0" + }, + "url": "https://packages.unity.com" + }, + "com.unity.2d.pixel-perfect": { + "version": "5.0.3", + "depth": 1, + "source": "registry", + "dependencies": {}, + "url": "https://packages.unity.com" + }, + "com.unity.2d.psdimporter": { + "version": "9.1.0", + "depth": 1, + "source": "registry", + "dependencies": { + "com.unity.2d.common": "9.1.1", + "com.unity.2d.sprite": "1.0.0" + }, + "url": "https://packages.unity.com" + }, + "com.unity.2d.sprite": { + "version": "1.0.0", + "depth": 1, + "source": "builtin", + "dependencies": {} + }, + "com.unity.2d.spriteshape": { + "version": "10.0.7", + "depth": 1, + "source": "registry", + "dependencies": { + "com.unity.2d.common": "9.0.7", + "com.unity.mathematics": "1.1.0", + "com.unity.modules.physics2d": "1.0.0" + }, + "url": "https://packages.unity.com" + }, + "com.unity.2d.tilemap": { + "version": "1.0.0", + "depth": 1, + "source": "builtin", + "dependencies": { + "com.unity.modules.tilemap": "1.0.0", + "com.unity.modules.uielements": "1.0.0" + } + }, + "com.unity.2d.tilemap.extras": { + "version": "4.1.0", + "depth": 1, + "source": "registry", + "dependencies": { + "com.unity.2d.tilemap": "1.0.0", + "com.unity.modules.tilemap": "1.0.0", + "com.unity.modules.jsonserialize": "1.0.0" + }, + "url": "https://packages.unity.com" + }, + "com.unity.burst": { + "version": "1.8.24", + "depth": 3, + "source": "registry", + "dependencies": { + "com.unity.mathematics": "1.2.1", + "com.unity.modules.jsonserialize": "1.0.0" + }, + "url": "https://packages.unity.com" + }, + "com.unity.collab-proxy": { + "version": "2.10.0", + "depth": 0, + "source": "registry", + "dependencies": {}, + "url": "https://packages.unity.com" + }, + "com.unity.collections": { + "version": "2.5.1", + "depth": 2, + "source": "registry", + "dependencies": { + "com.unity.burst": "1.8.17", + "com.unity.test-framework": "1.4.5", + "com.unity.nuget.mono-cecil": "1.11.4", + "com.unity.test-framework.performance": "3.0.3" + }, + "url": "https://packages.unity.com" + }, + "com.unity.ext.nunit": { + "version": "2.0.5", + "depth": 1, + "source": "builtin", + "dependencies": {} + }, + "com.unity.feature.2d": { + "version": "2.0.1", + "depth": 0, + "source": "builtin", + "dependencies": { + "com.unity.2d.animation": "10.2.1", + "com.unity.2d.pixel-perfect": "5.0.3", + "com.unity.2d.psdimporter": "9.1.0", + "com.unity.2d.sprite": "1.0.0", + "com.unity.2d.spriteshape": "10.0.7", + "com.unity.2d.tilemap": "1.0.0", + "com.unity.2d.tilemap.extras": "4.1.0", + "com.unity.2d.aseprite": "1.1.10" + } + }, + "com.unity.ide.rider": { + "version": "3.0.38", + "depth": 0, + "source": "registry", + "dependencies": { + "com.unity.ext.nunit": "1.0.6" + }, + "url": "https://packages.unity.com" + }, + "com.unity.ide.visualstudio": { + "version": "2.0.23", + "depth": 0, + "source": "registry", + "dependencies": { + "com.unity.test-framework": "1.1.9" + }, + "url": "https://packages.unity.com" + }, + "com.unity.inputsystem": { + "version": "1.14.2", + "depth": 0, + "source": "registry", + "dependencies": { + "com.unity.modules.uielements": "1.0.0" + }, + "url": "https://packages.unity.com" + }, + "com.unity.mathematics": { + "version": "1.3.2", + "depth": 2, + "source": "registry", + "dependencies": {}, + "url": "https://packages.unity.com" + }, + "com.unity.multiplayer.center": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": { + "com.unity.modules.uielements": "1.0.0" + } + }, + "com.unity.nuget.mono-cecil": { + "version": "1.11.4", + "depth": 3, + "source": "registry", + "dependencies": {}, + "url": "https://packages.unity.com" + }, + "com.unity.nuget.newtonsoft-json": { + "version": "3.2.1", + "depth": 1, + "source": "registry", + "dependencies": {}, + "url": "https://packages.unity.com" + }, + "com.unity.sysroot": { + "version": "2.0.10", + "depth": 1, + "source": "registry", + "dependencies": {}, + "url": "https://packages.unity.com" + }, + "com.unity.sysroot.linux-x86_64": { + "version": "2.0.9", + "depth": 1, + "source": "registry", + "dependencies": { + "com.unity.sysroot": "2.0.10" + }, + "url": "https://packages.unity.com" + }, + "com.unity.test-framework": { + "version": "1.5.1", + "depth": 0, + "source": "builtin", + "dependencies": { + "com.unity.ext.nunit": "2.0.3", + "com.unity.modules.imgui": "1.0.0", + "com.unity.modules.jsonserialize": "1.0.0" + } + }, + "com.unity.test-framework.performance": { + "version": "3.1.0", + "depth": 3, + "source": "registry", + "dependencies": { + "com.unity.test-framework": "1.1.33", + "com.unity.modules.jsonserialize": "1.0.0" + }, + "url": "https://packages.unity.com" + }, + "com.unity.timeline": { + "version": "1.8.9", + "depth": 0, + "source": "registry", + "dependencies": { + "com.unity.modules.audio": "1.0.0", + "com.unity.modules.director": "1.0.0", + "com.unity.modules.animation": "1.0.0", + "com.unity.modules.particlesystem": "1.0.0" + }, + "url": "https://packages.unity.com" + }, + "com.unity.toolchain.linux-x86_64": { + "version": "2.0.10", + "depth": 0, + "source": "registry", + "dependencies": { + "com.unity.sysroot": "2.0.10", + "com.unity.sysroot.linux-x86_64": "2.0.9" + }, + "url": "https://packages.unity.com" + }, + "com.unity.ugui": { + "version": "2.0.0", + "depth": 0, + "source": "builtin", + "dependencies": { + "com.unity.modules.ui": "1.0.0", + "com.unity.modules.imgui": "1.0.0" + } + }, + "com.unity.visualscripting": { + "version": "1.9.7", + "depth": 0, + "source": "registry", + "dependencies": { + "com.unity.ugui": "1.0.0", + "com.unity.modules.jsonserialize": "1.0.0" + }, + "url": "https://packages.unity.com" + }, + "com.unity.modules.accessibility": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": {} + }, + "com.unity.modules.ai": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": {} + }, + "com.unity.modules.androidjni": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": {} + }, + "com.unity.modules.animation": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": {} + }, + "com.unity.modules.assetbundle": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": {} + }, + "com.unity.modules.audio": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": {} + }, + "com.unity.modules.cloth": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": { + "com.unity.modules.physics": "1.0.0" + } + }, + "com.unity.modules.director": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": { + "com.unity.modules.audio": "1.0.0", + "com.unity.modules.animation": "1.0.0" + } + }, + "com.unity.modules.hierarchycore": { + "version": "1.0.0", + "depth": 1, + "source": "builtin", + "dependencies": {} + }, + "com.unity.modules.imageconversion": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": {} + }, + "com.unity.modules.imgui": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": {} + }, + "com.unity.modules.jsonserialize": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": {} + }, + "com.unity.modules.particlesystem": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": {} + }, + "com.unity.modules.physics": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": {} + }, + "com.unity.modules.physics2d": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": {} + }, + "com.unity.modules.screencapture": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": { + "com.unity.modules.imageconversion": "1.0.0" + } + }, + "com.unity.modules.subsystems": { + "version": "1.0.0", + "depth": 1, + "source": "builtin", + "dependencies": { + "com.unity.modules.jsonserialize": "1.0.0" + } + }, + "com.unity.modules.terrain": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": {} + }, + "com.unity.modules.terrainphysics": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": { + "com.unity.modules.physics": "1.0.0", + "com.unity.modules.terrain": "1.0.0" + } + }, + "com.unity.modules.tilemap": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": { + "com.unity.modules.physics2d": "1.0.0" + } + }, + "com.unity.modules.ui": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": {} + }, + "com.unity.modules.uielements": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": { + "com.unity.modules.ui": "1.0.0", + "com.unity.modules.imgui": "1.0.0", + "com.unity.modules.jsonserialize": "1.0.0", + "com.unity.modules.hierarchycore": "1.0.0" + } + }, + "com.unity.modules.umbra": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": {} + }, + "com.unity.modules.unityanalytics": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": { + "com.unity.modules.unitywebrequest": "1.0.0", + "com.unity.modules.jsonserialize": "1.0.0" + } + }, + "com.unity.modules.unitywebrequest": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": {} + }, + "com.unity.modules.unitywebrequestassetbundle": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": { + "com.unity.modules.assetbundle": "1.0.0", + "com.unity.modules.unitywebrequest": "1.0.0" + } + }, + "com.unity.modules.unitywebrequestaudio": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": { + "com.unity.modules.unitywebrequest": "1.0.0", + "com.unity.modules.audio": "1.0.0" + } + }, + "com.unity.modules.unitywebrequesttexture": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": { + "com.unity.modules.unitywebrequest": "1.0.0", + "com.unity.modules.imageconversion": "1.0.0" + } + }, + "com.unity.modules.unitywebrequestwww": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": { + "com.unity.modules.unitywebrequest": "1.0.0", + "com.unity.modules.unitywebrequestassetbundle": "1.0.0", + "com.unity.modules.unitywebrequestaudio": "1.0.0", + "com.unity.modules.audio": "1.0.0", + "com.unity.modules.assetbundle": "1.0.0", + "com.unity.modules.imageconversion": "1.0.0" + } + }, + "com.unity.modules.vehicles": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": { + "com.unity.modules.physics": "1.0.0" + } + }, + "com.unity.modules.video": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": { + "com.unity.modules.audio": "1.0.0", + "com.unity.modules.ui": "1.0.0", + "com.unity.modules.unitywebrequest": "1.0.0" + } + }, + "com.unity.modules.vr": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": { + "com.unity.modules.jsonserialize": "1.0.0", + "com.unity.modules.physics": "1.0.0", + "com.unity.modules.xr": "1.0.0" + } + }, + "com.unity.modules.wind": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": {} + }, + "com.unity.modules.xr": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": { + "com.unity.modules.physics": "1.0.0", + "com.unity.modules.jsonserialize": "1.0.0", + "com.unity.modules.subsystems": "1.0.0" + } + } + } +} diff --git a/magisterka_2/ProjectSettings/AudioManager.asset b/magisterka_2/ProjectSettings/AudioManager.asset new file mode 100644 index 0000000..27287fe --- /dev/null +++ b/magisterka_2/ProjectSettings/AudioManager.asset @@ -0,0 +1,19 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!11 &1 +AudioManager: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Volume: 1 + Rolloff Scale: 1 + Doppler Factor: 1 + Default Speaker Mode: 2 + m_SampleRate: 0 + m_DSPBufferSize: 1024 + m_VirtualVoiceCount: 512 + m_RealVoiceCount: 32 + m_SpatializerPlugin: + m_AmbisonicDecoderPlugin: + m_DisableAudio: 0 + m_VirtualizeEffects: 1 + m_RequestedDSPBufferSize: 0 diff --git a/magisterka_2/ProjectSettings/ClusterInputManager.asset b/magisterka_2/ProjectSettings/ClusterInputManager.asset new file mode 100644 index 0000000..e7886b2 --- /dev/null +++ b/magisterka_2/ProjectSettings/ClusterInputManager.asset @@ -0,0 +1,6 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!236 &1 +ClusterInputManager: + m_ObjectHideFlags: 0 + m_Inputs: [] diff --git a/magisterka_2/ProjectSettings/DynamicsManager.asset b/magisterka_2/ProjectSettings/DynamicsManager.asset new file mode 100644 index 0000000..72d1430 --- /dev/null +++ b/magisterka_2/ProjectSettings/DynamicsManager.asset @@ -0,0 +1,37 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!55 &1 +PhysicsManager: + m_ObjectHideFlags: 0 + serializedVersion: 13 + m_Gravity: {x: 0, y: -9.81, z: 0} + m_DefaultMaterial: {fileID: 0} + m_BounceThreshold: 2 + m_DefaultMaxDepenetrationVelocity: 10 + m_SleepThreshold: 0.005 + m_DefaultContactOffset: 0.01 + m_DefaultSolverIterations: 6 + m_DefaultSolverVelocityIterations: 1 + m_QueriesHitBackfaces: 0 + m_QueriesHitTriggers: 1 + m_EnableAdaptiveForce: 0 + m_ClothInterCollisionDistance: 0.1 + m_ClothInterCollisionStiffness: 0.2 + m_ContactsGeneration: 1 + m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + m_AutoSimulation: 1 + m_AutoSyncTransforms: 0 + m_ReuseCollisionCallbacks: 1 + m_ClothInterCollisionSettingsToggle: 0 + m_ClothGravity: {x: 0, y: -9.81, z: 0} + m_ContactPairsMode: 0 + m_BroadphaseType: 0 + m_WorldBounds: + m_Center: {x: 0, y: 0, z: 0} + m_Extent: {x: 250, y: 250, z: 250} + m_WorldSubdivisions: 8 + m_FrictionType: 0 + m_EnableEnhancedDeterminism: 0 + m_EnableUnifiedHeightmaps: 1 + m_SolverType: 0 + m_DefaultMaxAngularSpeed: 50 diff --git a/magisterka_2/ProjectSettings/EditorBuildSettings.asset b/magisterka_2/ProjectSettings/EditorBuildSettings.asset new file mode 100644 index 0000000..f9f99a7 --- /dev/null +++ b/magisterka_2/ProjectSettings/EditorBuildSettings.asset @@ -0,0 +1,13 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1045 &1 +EditorBuildSettings: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Scenes: + - enabled: 1 + path: Assets/Scenes/SampleScene.unity + guid: 2cda990e2423bbf4892e6590ba056729 + m_configObjects: + com.unity.input.settings.actions: {fileID: -944628639613478452, guid: 3590b91b4603b465dbb4216d601bff33, type: 3} + m_UseUCBPForAssetBundles: 0 diff --git a/magisterka_2/ProjectSettings/EditorSettings.asset b/magisterka_2/ProjectSettings/EditorSettings.asset new file mode 100644 index 0000000..a8aa8d4 --- /dev/null +++ b/magisterka_2/ProjectSettings/EditorSettings.asset @@ -0,0 +1,49 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!159 &1 +EditorSettings: + m_ObjectHideFlags: 0 + serializedVersion: 14 + m_SerializationMode: 2 + m_LineEndingsForNewScripts: 0 + m_DefaultBehaviorMode: 1 + m_PrefabRegularEnvironment: {fileID: 0} + m_PrefabUIEnvironment: {fileID: 0} + m_SpritePackerMode: 5 + m_SpritePackerCacheSize: 10 + m_SpritePackerPaddingPower: 1 + m_Bc7TextureCompressor: 0 + m_EtcTextureCompressorBehavior: 1 + m_EtcTextureFastCompressor: 1 + m_EtcTextureNormalCompressor: 2 + m_EtcTextureBestCompressor: 4 + m_ProjectGenerationIncludedExtensions: txt;xml;fnt;cd;asmdef;asmref;rsp + m_ProjectGenerationRootNamespace: + m_EnableTextureStreamingInEditMode: 1 + m_EnableTextureStreamingInPlayMode: 1 + m_EnableEditorAsyncCPUTextureLoading: 0 + m_AsyncShaderCompilation: 1 + m_PrefabModeAllowAutoSave: 1 + m_EnterPlayModeOptionsEnabled: 1 + m_EnterPlayModeOptions: 0 + m_GameObjectNamingDigits: 1 + m_GameObjectNamingScheme: 0 + m_AssetNamingUsesSpace: 1 + m_InspectorUseIMGUIDefaultInspector: 0 + m_UseLegacyProbeSampleCount: 0 + m_SerializeInlineMappingsOnOneLine: 1 + m_DisableCookiesInLightmapper: 1 + m_ShadowmaskStitching: 0 + m_AssetPipelineMode: 1 + m_RefreshImportMode: 0 + m_CacheServerMode: 0 + m_CacheServerEndpoint: + m_CacheServerNamespacePrefix: default + m_CacheServerEnableDownload: 1 + m_CacheServerEnableUpload: 1 + m_CacheServerEnableAuth: 0 + m_CacheServerEnableTls: 0 + m_CacheServerValidationMode: 2 + m_CacheServerDownloadBatchSize: 128 + m_EnableEnlightenBakedGI: 0 + m_ReferencedClipsExactNaming: 1 diff --git a/magisterka_2/ProjectSettings/GraphicsSettings.asset b/magisterka_2/ProjectSettings/GraphicsSettings.asset new file mode 100644 index 0000000..c165afb --- /dev/null +++ b/magisterka_2/ProjectSettings/GraphicsSettings.asset @@ -0,0 +1,64 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!30 &1 +GraphicsSettings: + m_ObjectHideFlags: 0 + serializedVersion: 13 + m_Deferred: + m_Mode: 1 + m_Shader: {fileID: 69, guid: 0000000000000000f000000000000000, type: 0} + m_DeferredReflections: + m_Mode: 1 + m_Shader: {fileID: 74, guid: 0000000000000000f000000000000000, type: 0} + m_ScreenSpaceShadows: + m_Mode: 1 + m_Shader: {fileID: 64, guid: 0000000000000000f000000000000000, type: 0} + m_LegacyDeferred: + m_Mode: 1 + m_Shader: {fileID: 63, guid: 0000000000000000f000000000000000, type: 0} + m_DepthNormals: + m_Mode: 1 + m_Shader: {fileID: 62, guid: 0000000000000000f000000000000000, type: 0} + m_MotionVectors: + m_Mode: 1 + m_Shader: {fileID: 75, guid: 0000000000000000f000000000000000, type: 0} + m_LightHalo: + m_Mode: 1 + m_Shader: {fileID: 105, guid: 0000000000000000f000000000000000, type: 0} + m_LensFlare: + m_Mode: 1 + m_Shader: {fileID: 102, guid: 0000000000000000f000000000000000, type: 0} + m_VideoShadersIncludeMode: 2 + m_AlwaysIncludedShaders: + - {fileID: 7, guid: 0000000000000000f000000000000000, type: 0} + - {fileID: 15104, guid: 0000000000000000f000000000000000, type: 0} + - {fileID: 15105, guid: 0000000000000000f000000000000000, type: 0} + - {fileID: 15106, guid: 0000000000000000f000000000000000, type: 0} + - {fileID: 10753, guid: 0000000000000000f000000000000000, type: 0} + - {fileID: 10770, guid: 0000000000000000f000000000000000, type: 0} + - {fileID: 10783, guid: 0000000000000000f000000000000000, type: 0} + m_PreloadedShaders: [] + m_SpritesDefaultMaterial: {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} + m_CustomRenderPipeline: {fileID: 0} + m_TransparencySortMode: 0 + m_TransparencySortAxis: {x: 0, y: 0, z: 1} + m_DefaultRenderingPath: 1 + m_DefaultMobileRenderingPath: 1 + m_TierSettings: [] + m_LightmapStripping: 0 + m_FogStripping: 0 + m_InstancingStripping: 0 + m_LightmapKeepPlain: 1 + m_LightmapKeepDirCombined: 1 + m_LightmapKeepDynamicPlain: 1 + m_LightmapKeepDynamicDirCombined: 1 + m_LightmapKeepShadowMask: 1 + m_LightmapKeepSubtractive: 1 + m_FogKeepLinear: 1 + m_FogKeepExp: 1 + m_FogKeepExp2: 1 + m_AlbedoSwatchInfos: [] + m_LightsUseLinearIntensity: 0 + m_LightsUseColorTemperature: 0 + m_DefaultRenderingLayerMask: 1 + m_LogWhenShaderIsCompiled: 0 diff --git a/magisterka_2/ProjectSettings/InputManager.asset b/magisterka_2/ProjectSettings/InputManager.asset new file mode 100644 index 0000000..b16147e --- /dev/null +++ b/magisterka_2/ProjectSettings/InputManager.asset @@ -0,0 +1,487 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!13 &1 +InputManager: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Axes: + - serializedVersion: 3 + m_Name: Horizontal + descriptiveName: + descriptiveNegativeName: + negativeButton: left + positiveButton: right + altNegativeButton: a + altPositiveButton: d + gravity: 3 + dead: 0.001 + sensitivity: 3 + snap: 1 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Vertical + descriptiveName: + descriptiveNegativeName: + negativeButton: down + positiveButton: up + altNegativeButton: s + altPositiveButton: w + gravity: 3 + dead: 0.001 + sensitivity: 3 + snap: 1 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Fire1 + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: left ctrl + altNegativeButton: + altPositiveButton: mouse 0 + gravity: 1000 + dead: 0.001 + sensitivity: 1000 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Fire2 + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: left alt + altNegativeButton: + altPositiveButton: mouse 1 + gravity: 1000 + dead: 0.001 + sensitivity: 1000 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Fire3 + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: left shift + altNegativeButton: + altPositiveButton: mouse 2 + gravity: 1000 + dead: 0.001 + sensitivity: 1000 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Jump + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: space + altNegativeButton: + altPositiveButton: + gravity: 1000 + dead: 0.001 + sensitivity: 1000 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Mouse X + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: + altNegativeButton: + altPositiveButton: + gravity: 0 + dead: 0 + sensitivity: 0.1 + snap: 0 + invert: 0 + type: 1 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Mouse Y + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: + altNegativeButton: + altPositiveButton: + gravity: 0 + dead: 0 + sensitivity: 0.1 + snap: 0 + invert: 0 + type: 1 + axis: 1 + joyNum: 0 + - serializedVersion: 3 + m_Name: Mouse ScrollWheel + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: + altNegativeButton: + altPositiveButton: + gravity: 0 + dead: 0 + sensitivity: 0.1 + snap: 0 + invert: 0 + type: 1 + axis: 2 + joyNum: 0 + - serializedVersion: 3 + m_Name: Horizontal + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: + altNegativeButton: + altPositiveButton: + gravity: 0 + dead: 0.19 + sensitivity: 1 + snap: 0 + invert: 0 + type: 2 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Vertical + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: + altNegativeButton: + altPositiveButton: + gravity: 0 + dead: 0.19 + sensitivity: 1 + snap: 0 + invert: 1 + type: 2 + axis: 1 + joyNum: 0 + - serializedVersion: 3 + m_Name: Fire1 + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: joystick button 0 + altNegativeButton: + altPositiveButton: + gravity: 1000 + dead: 0.001 + sensitivity: 1000 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Fire2 + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: joystick button 1 + altNegativeButton: + altPositiveButton: + gravity: 1000 + dead: 0.001 + sensitivity: 1000 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Fire3 + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: joystick button 2 + altNegativeButton: + altPositiveButton: + gravity: 1000 + dead: 0.001 + sensitivity: 1000 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Jump + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: joystick button 3 + altNegativeButton: + altPositiveButton: + gravity: 1000 + dead: 0.001 + sensitivity: 1000 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Submit + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: return + altNegativeButton: + altPositiveButton: joystick button 0 + gravity: 1000 + dead: 0.001 + sensitivity: 1000 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Submit + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: enter + altNegativeButton: + altPositiveButton: space + gravity: 1000 + dead: 0.001 + sensitivity: 1000 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Cancel + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: escape + altNegativeButton: + altPositiveButton: joystick button 1 + gravity: 1000 + dead: 0.001 + sensitivity: 1000 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Enable Debug Button 1 + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: left ctrl + altNegativeButton: + altPositiveButton: joystick button 8 + gravity: 0 + dead: 0 + sensitivity: 0 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Enable Debug Button 2 + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: backspace + altNegativeButton: + altPositiveButton: joystick button 9 + gravity: 0 + dead: 0 + sensitivity: 0 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Debug Reset + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: left alt + altNegativeButton: + altPositiveButton: joystick button 1 + gravity: 0 + dead: 0 + sensitivity: 0 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Debug Next + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: page down + altNegativeButton: + altPositiveButton: joystick button 5 + gravity: 0 + dead: 0 + sensitivity: 0 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Debug Previous + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: page up + altNegativeButton: + altPositiveButton: joystick button 4 + gravity: 0 + dead: 0 + sensitivity: 0 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Debug Validate + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: return + altNegativeButton: + altPositiveButton: joystick button 0 + gravity: 0 + dead: 0 + sensitivity: 0 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Debug Persistent + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: right shift + altNegativeButton: + altPositiveButton: joystick button 2 + gravity: 0 + dead: 0 + sensitivity: 0 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Debug Multiplier + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: left shift + altNegativeButton: + altPositiveButton: joystick button 3 + gravity: 0 + dead: 0 + sensitivity: 0 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Debug Horizontal + descriptiveName: + descriptiveNegativeName: + negativeButton: left + positiveButton: right + altNegativeButton: + altPositiveButton: + gravity: 1000 + dead: 0.001 + sensitivity: 1000 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Debug Vertical + descriptiveName: + descriptiveNegativeName: + negativeButton: down + positiveButton: up + altNegativeButton: + altPositiveButton: + gravity: 1000 + dead: 0.001 + sensitivity: 1000 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Debug Vertical + descriptiveName: + descriptiveNegativeName: + negativeButton: down + positiveButton: up + altNegativeButton: + altPositiveButton: + gravity: 1000 + dead: 0.001 + sensitivity: 1000 + snap: 0 + invert: 0 + type: 2 + axis: 6 + joyNum: 0 + - serializedVersion: 3 + m_Name: Debug Horizontal + descriptiveName: + descriptiveNegativeName: + negativeButton: left + positiveButton: right + altNegativeButton: + altPositiveButton: + gravity: 1000 + dead: 0.001 + sensitivity: 1000 + snap: 0 + invert: 0 + type: 2 + axis: 5 + joyNum: 0 diff --git a/magisterka_2/ProjectSettings/MemorySettings.asset b/magisterka_2/ProjectSettings/MemorySettings.asset new file mode 100644 index 0000000..5b5face --- /dev/null +++ b/magisterka_2/ProjectSettings/MemorySettings.asset @@ -0,0 +1,35 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!387306366 &1 +MemorySettings: + m_ObjectHideFlags: 0 + m_EditorMemorySettings: + m_MainAllocatorBlockSize: -1 + m_ThreadAllocatorBlockSize: -1 + m_MainGfxBlockSize: -1 + m_ThreadGfxBlockSize: -1 + m_CacheBlockSize: -1 + m_TypetreeBlockSize: -1 + m_ProfilerBlockSize: -1 + m_ProfilerEditorBlockSize: -1 + m_BucketAllocatorGranularity: -1 + m_BucketAllocatorBucketsCount: -1 + m_BucketAllocatorBlockSize: -1 + m_BucketAllocatorBlockCount: -1 + m_ProfilerBucketAllocatorGranularity: -1 + m_ProfilerBucketAllocatorBucketsCount: -1 + m_ProfilerBucketAllocatorBlockSize: -1 + m_ProfilerBucketAllocatorBlockCount: -1 + m_TempAllocatorSizeMain: -1 + m_JobTempAllocatorBlockSize: -1 + m_BackgroundJobTempAllocatorBlockSize: -1 + m_JobTempAllocatorReducedBlockSize: -1 + m_TempAllocatorSizeGIBakingWorker: -1 + m_TempAllocatorSizeNavMeshWorker: -1 + m_TempAllocatorSizeAudioWorker: -1 + m_TempAllocatorSizeCloudWorker: -1 + m_TempAllocatorSizeGfx: -1 + m_TempAllocatorSizeJobWorker: -1 + m_TempAllocatorSizeBackgroundWorker: -1 + m_TempAllocatorSizePreloadManager: -1 + m_PlatformMemorySettings: {} diff --git a/magisterka_2/ProjectSettings/MultiplayerManager.asset b/magisterka_2/ProjectSettings/MultiplayerManager.asset new file mode 100644 index 0000000..2a93664 --- /dev/null +++ b/magisterka_2/ProjectSettings/MultiplayerManager.asset @@ -0,0 +1,7 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!655991488 &1 +MultiplayerManager: + m_ObjectHideFlags: 0 + m_EnableMultiplayerRoles: 0 + m_StrippingTypes: {} diff --git a/magisterka_2/ProjectSettings/NavMeshAreas.asset b/magisterka_2/ProjectSettings/NavMeshAreas.asset new file mode 100644 index 0000000..ad2654e --- /dev/null +++ b/magisterka_2/ProjectSettings/NavMeshAreas.asset @@ -0,0 +1,93 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!126 &1 +NavMeshProjectSettings: + m_ObjectHideFlags: 0 + serializedVersion: 2 + areas: + - name: Walkable + cost: 1 + - name: Not Walkable + cost: 1 + - name: Jump + cost: 2 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + m_LastAgentTypeID: -887442657 + m_Settings: + - serializedVersion: 2 + agentTypeID: 0 + agentRadius: 0.5 + agentHeight: 2 + agentSlope: 45 + agentClimb: 0.75 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + minRegionArea: 2 + manualCellSize: 0 + cellSize: 0.16666667 + manualTileSize: 0 + tileSize: 256 + accuratePlacement: 0 + maxJobWorkers: 0 + preserveTilesOutsideBounds: 0 + debug: + m_Flags: 0 + m_SettingNames: + - Humanoid diff --git a/magisterka_2/ProjectSettings/NetworkManager.asset b/magisterka_2/ProjectSettings/NetworkManager.asset new file mode 100644 index 0000000..5dc6a83 --- /dev/null +++ b/magisterka_2/ProjectSettings/NetworkManager.asset @@ -0,0 +1,8 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!149 &1 +NetworkManager: + m_ObjectHideFlags: 0 + m_DebugLevel: 0 + m_Sendrate: 15 + m_AssetToPrefab: {} diff --git a/magisterka_2/ProjectSettings/PackageManagerSettings.asset b/magisterka_2/ProjectSettings/PackageManagerSettings.asset new file mode 100644 index 0000000..b3a65dd --- /dev/null +++ b/magisterka_2/ProjectSettings/PackageManagerSettings.asset @@ -0,0 +1,44 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &1 +MonoBehaviour: + m_ObjectHideFlags: 61 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 13964, guid: 0000000000000000e000000000000000, type: 0} + m_Name: + m_EditorClassIdentifier: + m_EnablePreReleasePackages: 0 + m_EnablePackageDependencies: 0 + m_AdvancedSettingsExpanded: 1 + m_ScopedRegistriesSettingsExpanded: 1 + m_SeeAllPackageVersions: 0 + oneTimeWarningShown: 0 + m_Registries: + - m_Id: main + m_Name: + m_Url: https://packages.unity.com + m_Scopes: [] + m_IsDefault: 1 + m_Capabilities: 7 + m_UserSelectedRegistryName: + m_UserAddingNewScopedRegistry: 0 + m_RegistryInfoDraft: + m_ErrorMessage: + m_Original: + m_Id: + m_Name: + m_Url: + m_Scopes: [] + m_IsDefault: 0 + m_Capabilities: 0 + m_Modified: 0 + m_Name: + m_Url: + m_Scopes: + - + m_SelectedScopeIndex: 0 diff --git a/magisterka_2/ProjectSettings/Physics2DSettings.asset b/magisterka_2/ProjectSettings/Physics2DSettings.asset new file mode 100644 index 0000000..6cfcdda --- /dev/null +++ b/magisterka_2/ProjectSettings/Physics2DSettings.asset @@ -0,0 +1,56 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!19 &1 +Physics2DSettings: + m_ObjectHideFlags: 0 + serializedVersion: 5 + m_Gravity: {x: 0, y: -9.81} + m_DefaultMaterial: {fileID: 0} + m_VelocityIterations: 8 + m_PositionIterations: 3 + m_VelocityThreshold: 1 + m_MaxLinearCorrection: 0.2 + m_MaxAngularCorrection: 8 + m_MaxTranslationSpeed: 100 + m_MaxRotationSpeed: 360 + m_BaumgarteScale: 0.2 + m_BaumgarteTimeOfImpactScale: 0.75 + m_TimeToSleep: 0.5 + m_LinearSleepTolerance: 0.01 + m_AngularSleepTolerance: 2 + m_DefaultContactOffset: 0.01 + m_JobOptions: + serializedVersion: 2 + useMultithreading: 0 + useConsistencySorting: 0 + m_InterpolationPosesPerJob: 100 + m_NewContactsPerJob: 30 + m_CollideContactsPerJob: 100 + m_ClearFlagsPerJob: 200 + m_ClearBodyForcesPerJob: 200 + m_SyncDiscreteFixturesPerJob: 50 + m_SyncContinuousFixturesPerJob: 50 + m_FindNearestContactsPerJob: 100 + m_UpdateTriggerContactsPerJob: 100 + m_IslandSolverCostThreshold: 100 + m_IslandSolverBodyCostScale: 1 + m_IslandSolverContactCostScale: 10 + m_IslandSolverJointCostScale: 10 + m_IslandSolverBodiesPerJob: 50 + m_IslandSolverContactsPerJob: 50 + m_SimulationMode: 0 + m_QueriesHitTriggers: 1 + m_QueriesStartInColliders: 1 + m_CallbacksOnDisable: 1 + m_ReuseCollisionCallbacks: 1 + m_AutoSyncTransforms: 0 + m_AlwaysShowColliders: 0 + m_ShowColliderSleep: 1 + m_ShowColliderContacts: 0 + m_ShowColliderAABB: 0 + m_ContactArrowScale: 0.2 + m_ColliderAwakeColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.7529412} + m_ColliderAsleepColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.36078432} + m_ColliderContactColor: {r: 1, g: 0, b: 1, a: 0.6862745} + m_ColliderAABBColor: {r: 1, g: 1, b: 0, a: 0.2509804} + m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff diff --git a/magisterka_2/ProjectSettings/PresetManager.asset b/magisterka_2/ProjectSettings/PresetManager.asset new file mode 100644 index 0000000..67a94da --- /dev/null +++ b/magisterka_2/ProjectSettings/PresetManager.asset @@ -0,0 +1,7 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1386491679 &1 +PresetManager: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_DefaultPresets: {} diff --git a/magisterka_2/ProjectSettings/ProjectSettings.asset b/magisterka_2/ProjectSettings/ProjectSettings.asset new file mode 100644 index 0000000..afdf269 --- /dev/null +++ b/magisterka_2/ProjectSettings/ProjectSettings.asset @@ -0,0 +1,924 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!129 &1 +PlayerSettings: + m_ObjectHideFlags: 0 + serializedVersion: 28 + productGUID: 18465d8ea06b60469941152ee9cdb4bd + AndroidProfiler: 0 + AndroidFilterTouchesWhenObscured: 0 + AndroidEnableSustainedPerformanceMode: 0 + defaultScreenOrientation: 4 + targetDevice: 2 + useOnDemandResources: 0 + accelerometerFrequency: 60 + companyName: DefaultCompany + productName: magisterka_2 + defaultCursor: {fileID: 0} + cursorHotspot: {x: 0, y: 0} + m_SplashScreenBackgroundColor: {r: 0.13725491, g: 0.12156863, b: 0.1254902, a: 1} + m_ShowUnitySplashScreen: 1 + m_ShowUnitySplashLogo: 1 + m_SplashScreenOverlayOpacity: 1 + m_SplashScreenAnimation: 1 + m_SplashScreenLogoStyle: 1 + m_SplashScreenDrawMode: 0 + m_SplashScreenBackgroundAnimationZoom: 1 + m_SplashScreenLogoAnimationZoom: 1 + m_SplashScreenBackgroundLandscapeAspect: 1 + m_SplashScreenBackgroundPortraitAspect: 1 + m_SplashScreenBackgroundLandscapeUvs: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + m_SplashScreenBackgroundPortraitUvs: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + m_SplashScreenLogos: [] + m_VirtualRealitySplashScreen: {fileID: 0} + m_HolographicTrackingLossScreen: {fileID: 0} + defaultScreenWidth: 1920 + defaultScreenHeight: 1080 + defaultScreenWidthWeb: 960 + defaultScreenHeightWeb: 600 + m_StereoRenderingPath: 0 + m_ActiveColorSpace: 1 + unsupportedMSAAFallback: 0 + m_SpriteBatchMaxVertexCount: 65535 + m_SpriteBatchVertexThreshold: 300 + m_MTRendering: 1 + mipStripping: 0 + numberOfMipsStripped: 0 + numberOfMipsStrippedPerMipmapLimitGroup: {} + m_StackTraceTypes: 010000000100000001000000010000000100000001000000 + iosShowActivityIndicatorOnLoading: -1 + androidShowActivityIndicatorOnLoading: -1 + iosUseCustomAppBackgroundBehavior: 0 + allowedAutorotateToPortrait: 1 + allowedAutorotateToPortraitUpsideDown: 1 + allowedAutorotateToLandscapeRight: 1 + allowedAutorotateToLandscapeLeft: 1 + useOSAutorotation: 1 + use32BitDisplayBuffer: 1 + preserveFramebufferAlpha: 0 + disableDepthAndStencilBuffers: 0 + androidStartInFullscreen: 1 + androidRenderOutsideSafeArea: 1 + androidUseSwappy: 1 + androidBlitType: 0 + androidResizeableActivity: 1 + androidDefaultWindowWidth: 1920 + androidDefaultWindowHeight: 1080 + androidMinimumWindowWidth: 400 + androidMinimumWindowHeight: 300 + androidFullscreenMode: 1 + androidAutoRotationBehavior: 1 + androidPredictiveBackSupport: 0 + androidApplicationEntry: 2 + defaultIsNativeResolution: 1 + macRetinaSupport: 1 + runInBackground: 0 + muteOtherAudioSources: 0 + Prepare IOS For Recording: 0 + Force IOS Speakers When Recording: 0 + audioSpatialExperience: 0 + deferSystemGesturesMode: 0 + hideHomeButton: 0 + submitAnalytics: 1 + usePlayerLog: 1 + dedicatedServerOptimizations: 1 + bakeCollisionMeshes: 0 + forceSingleInstance: 0 + useFlipModelSwapchain: 1 + resizableWindow: 0 + useMacAppStoreValidation: 0 + macAppStoreCategory: public.app-category.games + gpuSkinning: 0 + meshDeformation: 0 + xboxPIXTextureCapture: 0 + xboxEnableAvatar: 0 + xboxEnableKinect: 0 + xboxEnableKinectAutoTracking: 0 + xboxEnableFitness: 0 + visibleInBackground: 1 + allowFullscreenSwitch: 1 + fullscreenMode: 1 + xboxSpeechDB: 0 + xboxEnableHeadOrientation: 0 + xboxEnableGuest: 0 + xboxEnablePIXSampling: 0 + metalFramebufferOnly: 0 + xboxOneResolution: 0 + xboxOneSResolution: 0 + xboxOneXResolution: 3 + xboxOneMonoLoggingLevel: 0 + xboxOneLoggingLevel: 1 + xboxOneDisableEsram: 0 + xboxOneEnableTypeOptimization: 0 + xboxOnePresentImmediateThreshold: 0 + switchQueueCommandMemory: 1048576 + switchQueueControlMemory: 16384 + switchQueueComputeMemory: 262144 + switchNVNShaderPoolsGranularity: 33554432 + switchNVNDefaultPoolsGranularity: 16777216 + switchNVNOtherPoolsGranularity: 16777216 + switchGpuScratchPoolGranularity: 2097152 + switchAllowGpuScratchShrinking: 0 + switchNVNMaxPublicTextureIDCount: 0 + switchNVNMaxPublicSamplerIDCount: 0 + switchMaxWorkerMultiple: 8 + switchNVNGraphicsFirmwareMemory: 32 + vulkanNumSwapchainBuffers: 3 + vulkanEnableSetSRGBWrite: 0 + vulkanEnablePreTransform: 0 + vulkanEnableLateAcquireNextImage: 0 + vulkanEnableCommandBufferRecycling: 1 + loadStoreDebugModeEnabled: 0 + visionOSBundleVersion: 1.0 + tvOSBundleVersion: 1.0 + bundleVersion: 1.0 + preloadedAssets: [] + metroInputSource: 0 + wsaTransparentSwapchain: 0 + m_HolographicPauseOnTrackingLoss: 1 + xboxOneDisableKinectGpuReservation: 1 + xboxOneEnable7thCore: 1 + vrSettings: + enable360StereoCapture: 0 + isWsaHolographicRemotingEnabled: 0 + enableFrameTimingStats: 0 + enableOpenGLProfilerGPURecorders: 1 + allowHDRDisplaySupport: 0 + useHDRDisplay: 0 + hdrBitDepth: 0 + m_ColorGamuts: 00000000 + targetPixelDensity: 30 + resolutionScalingMode: 0 + resetResolutionOnWindowResize: 0 + androidSupportedAspectRatio: 1 + androidMaxAspectRatio: 2.4 + androidMinAspectRatio: 1 + applicationIdentifier: + Standalone: com.DefaultCompany.2D-Project + buildNumber: + Standalone: 0 + VisionOS: 0 + iPhone: 0 + tvOS: 0 + overrideDefaultApplicationIdentifier: 1 + AndroidBundleVersionCode: 1 + AndroidMinSdkVersion: 23 + AndroidTargetSdkVersion: 0 + AndroidPreferredInstallLocation: 1 + aotOptions: + stripEngineCode: 1 + iPhoneStrippingLevel: 0 + iPhoneScriptCallOptimization: 0 + ForceInternetPermission: 0 + ForceSDCardPermission: 0 + CreateWallpaper: 0 + androidSplitApplicationBinary: 0 + keepLoadedShadersAlive: 0 + StripUnusedMeshComponents: 0 + strictShaderVariantMatching: 0 + VertexChannelCompressionMask: 4054 + iPhoneSdkVersion: 988 + iOSSimulatorArchitecture: 0 + iOSTargetOSVersionString: 13.0 + tvOSSdkVersion: 0 + tvOSSimulatorArchitecture: 0 + tvOSRequireExtendedGameController: 0 + tvOSTargetOSVersionString: 13.0 + VisionOSSdkVersion: 0 + VisionOSTargetOSVersionString: 1.0 + uIPrerenderedIcon: 0 + uIRequiresPersistentWiFi: 0 + uIRequiresFullScreen: 1 + uIStatusBarHidden: 1 + uIExitOnSuspend: 0 + uIStatusBarStyle: 0 + appleTVSplashScreen: {fileID: 0} + appleTVSplashScreen2x: {fileID: 0} + tvOSSmallIconLayers: [] + tvOSSmallIconLayers2x: [] + tvOSLargeIconLayers: [] + tvOSLargeIconLayers2x: [] + tvOSTopShelfImageLayers: [] + tvOSTopShelfImageLayers2x: [] + tvOSTopShelfImageWideLayers: [] + tvOSTopShelfImageWideLayers2x: [] + iOSLaunchScreenType: 0 + iOSLaunchScreenPortrait: {fileID: 0} + iOSLaunchScreenLandscape: {fileID: 0} + iOSLaunchScreenBackgroundColor: + serializedVersion: 2 + rgba: 0 + iOSLaunchScreenFillPct: 100 + iOSLaunchScreenSize: 100 + iOSLaunchScreeniPadType: 0 + iOSLaunchScreeniPadImage: {fileID: 0} + iOSLaunchScreeniPadBackgroundColor: + serializedVersion: 2 + rgba: 0 + iOSLaunchScreeniPadFillPct: 100 + iOSLaunchScreeniPadSize: 100 + iOSLaunchScreenCustomStoryboardPath: + iOSLaunchScreeniPadCustomStoryboardPath: + iOSDeviceRequirements: [] + iOSURLSchemes: [] + macOSURLSchemes: [] + iOSBackgroundModes: 0 + iOSMetalForceHardShadows: 0 + metalEditorSupport: 1 + metalAPIValidation: 1 + metalCompileShaderBinary: 0 + iOSRenderExtraFrameOnPause: 0 + iosCopyPluginsCodeInsteadOfSymlink: 0 + appleDeveloperTeamID: + iOSManualSigningProvisioningProfileID: + tvOSManualSigningProvisioningProfileID: + VisionOSManualSigningProvisioningProfileID: + iOSManualSigningProvisioningProfileType: 0 + tvOSManualSigningProvisioningProfileType: 0 + VisionOSManualSigningProvisioningProfileType: 0 + appleEnableAutomaticSigning: 0 + iOSRequireARKit: 0 + iOSAutomaticallyDetectAndAddCapabilities: 1 + appleEnableProMotion: 0 + shaderPrecisionModel: 0 + clonedFromGUID: 10ad67313f4034357812315f3c407484 + templatePackageId: com.unity.template.2d@10.1.0 + templateDefaultScene: Assets/Scenes/SampleScene.unity + useCustomMainManifest: 0 + useCustomLauncherManifest: 0 + useCustomMainGradleTemplate: 0 + useCustomLauncherGradleManifest: 0 + useCustomBaseGradleTemplate: 0 + useCustomGradlePropertiesTemplate: 0 + useCustomGradleSettingsTemplate: 0 + useCustomProguardFile: 0 + AndroidTargetArchitectures: 2 + AndroidSplashScreenScale: 0 + androidSplashScreen: {fileID: 0} + AndroidKeystoreName: + AndroidKeyaliasName: + AndroidEnableArmv9SecurityFeatures: 0 + AndroidEnableArm64MTE: 0 + AndroidBuildApkPerCpuArchitecture: 0 + AndroidTVCompatibility: 0 + AndroidIsGame: 1 + androidAppCategory: 3 + useAndroidAppCategory: 1 + androidAppCategoryOther: + AndroidEnableTango: 0 + androidEnableBanner: 1 + androidUseLowAccuracyLocation: 0 + androidUseCustomKeystore: 0 + m_AndroidBanners: + - width: 320 + height: 180 + banner: {fileID: 0} + androidGamepadSupportLevel: 0 + AndroidMinifyRelease: 0 + AndroidMinifyDebug: 0 + AndroidValidateAppBundleSize: 1 + AndroidAppBundleSizeToValidate: 150 + AndroidReportGooglePlayAppDependencies: 1 + androidSymbolsSizeThreshold: 800 + m_BuildTargetIcons: [] + m_BuildTargetPlatformIcons: + - m_BuildTarget: iPhone + m_Icons: + - m_Textures: [] + m_Width: 180 + m_Height: 180 + m_Kind: 0 + m_SubKind: iPhone + - m_Textures: [] + m_Width: 120 + m_Height: 120 + m_Kind: 0 + m_SubKind: iPhone + - m_Textures: [] + m_Width: 167 + m_Height: 167 + m_Kind: 0 + m_SubKind: iPad + - m_Textures: [] + m_Width: 152 + m_Height: 152 + m_Kind: 0 + m_SubKind: iPad + - m_Textures: [] + m_Width: 76 + m_Height: 76 + m_Kind: 0 + m_SubKind: iPad + - m_Textures: [] + m_Width: 120 + m_Height: 120 + m_Kind: 3 + m_SubKind: iPhone + - m_Textures: [] + m_Width: 80 + m_Height: 80 + m_Kind: 3 + m_SubKind: iPhone + - m_Textures: [] + m_Width: 80 + m_Height: 80 + m_Kind: 3 + m_SubKind: iPad + - m_Textures: [] + m_Width: 40 + m_Height: 40 + m_Kind: 3 + m_SubKind: iPad + - m_Textures: [] + m_Width: 87 + m_Height: 87 + m_Kind: 1 + m_SubKind: iPhone + - m_Textures: [] + m_Width: 58 + m_Height: 58 + m_Kind: 1 + m_SubKind: iPhone + - m_Textures: [] + m_Width: 29 + m_Height: 29 + m_Kind: 1 + m_SubKind: iPhone + - m_Textures: [] + m_Width: 58 + m_Height: 58 + m_Kind: 1 + m_SubKind: iPad + - m_Textures: [] + m_Width: 29 + m_Height: 29 + m_Kind: 1 + m_SubKind: iPad + - m_Textures: [] + m_Width: 60 + m_Height: 60 + m_Kind: 2 + m_SubKind: iPhone + - m_Textures: [] + m_Width: 40 + m_Height: 40 + m_Kind: 2 + m_SubKind: iPhone + - m_Textures: [] + m_Width: 40 + m_Height: 40 + m_Kind: 2 + m_SubKind: iPad + - m_Textures: [] + m_Width: 20 + m_Height: 20 + m_Kind: 2 + m_SubKind: iPad + - m_Textures: [] + m_Width: 1024 + m_Height: 1024 + m_Kind: 4 + m_SubKind: App Store + - m_BuildTarget: Android + m_Icons: + - m_Textures: [] + m_Width: 432 + m_Height: 432 + m_Kind: 2 + m_SubKind: + - m_Textures: [] + m_Width: 324 + m_Height: 324 + m_Kind: 2 + m_SubKind: + - m_Textures: [] + m_Width: 216 + m_Height: 216 + m_Kind: 2 + m_SubKind: + - m_Textures: [] + m_Width: 162 + m_Height: 162 + m_Kind: 2 + m_SubKind: + - m_Textures: [] + m_Width: 108 + m_Height: 108 + m_Kind: 2 + m_SubKind: + - m_Textures: [] + m_Width: 81 + m_Height: 81 + m_Kind: 2 + m_SubKind: + - m_Textures: [] + m_Width: 192 + m_Height: 192 + m_Kind: 1 + m_SubKind: + - m_Textures: [] + m_Width: 144 + m_Height: 144 + m_Kind: 1 + m_SubKind: + - m_Textures: [] + m_Width: 96 + m_Height: 96 + m_Kind: 1 + m_SubKind: + - m_Textures: [] + m_Width: 72 + m_Height: 72 + m_Kind: 1 + m_SubKind: + - m_Textures: [] + m_Width: 48 + m_Height: 48 + m_Kind: 1 + m_SubKind: + - m_Textures: [] + m_Width: 36 + m_Height: 36 + m_Kind: 1 + m_SubKind: + - m_Textures: [] + m_Width: 192 + m_Height: 192 + m_Kind: 0 + m_SubKind: + - m_Textures: [] + m_Width: 144 + m_Height: 144 + m_Kind: 0 + m_SubKind: + - m_Textures: [] + m_Width: 96 + m_Height: 96 + m_Kind: 0 + m_SubKind: + - m_Textures: [] + m_Width: 72 + m_Height: 72 + m_Kind: 0 + m_SubKind: + - m_Textures: [] + m_Width: 48 + m_Height: 48 + m_Kind: 0 + m_SubKind: + - m_Textures: [] + m_Width: 36 + m_Height: 36 + m_Kind: 0 + m_SubKind: + - m_BuildTarget: VisionOS + m_Icons: + - m_Textures: [] + m_Width: 1024 + m_Height: 1024 + m_Kind: 0 + m_SubKind: + m_BuildTargetBatching: [] + m_BuildTargetShaderSettings: [] + m_BuildTargetGraphicsJobs: + - m_BuildTarget: MacStandaloneSupport + m_GraphicsJobs: 0 + - m_BuildTarget: Switch + m_GraphicsJobs: 0 + - m_BuildTarget: MetroSupport + m_GraphicsJobs: 0 + - m_BuildTarget: AppleTVSupport + m_GraphicsJobs: 0 + - m_BuildTarget: BJMSupport + m_GraphicsJobs: 0 + - m_BuildTarget: LinuxStandaloneSupport + m_GraphicsJobs: 0 + - m_BuildTarget: PS4Player + m_GraphicsJobs: 0 + - m_BuildTarget: iOSSupport + m_GraphicsJobs: 0 + - m_BuildTarget: WindowsStandaloneSupport + m_GraphicsJobs: 0 + - m_BuildTarget: XboxOnePlayer + m_GraphicsJobs: 0 + - m_BuildTarget: LuminSupport + m_GraphicsJobs: 0 + - m_BuildTarget: AndroidPlayer + m_GraphicsJobs: 0 + - m_BuildTarget: WebGLSupport + m_GraphicsJobs: 0 + m_BuildTargetGraphicsJobMode: [] + m_BuildTargetGraphicsAPIs: + - m_BuildTarget: AndroidPlayer + m_APIs: 150000000b000000 + m_Automatic: 1 + - m_BuildTarget: iOSSupport + m_APIs: 10000000 + m_Automatic: 1 + m_BuildTargetVRSettings: [] + m_DefaultShaderChunkSizeInMB: 16 + m_DefaultShaderChunkCount: 0 + openGLRequireES31: 0 + openGLRequireES31AEP: 0 + openGLRequireES32: 0 + m_TemplateCustomTags: {} + mobileMTRendering: + Android: 1 + iPhone: 1 + tvOS: 1 + m_BuildTargetGroupLightmapEncodingQuality: [] + m_BuildTargetGroupHDRCubemapEncodingQuality: [] + m_BuildTargetGroupLightmapSettings: [] + m_BuildTargetGroupLoadStoreDebugModeSettings: [] + m_BuildTargetNormalMapEncoding: [] + m_BuildTargetDefaultTextureCompressionFormat: + - serializedVersion: 3 + m_BuildTarget: Android + m_Formats: 03000000 + playModeTestRunnerEnabled: 0 + runPlayModeTestAsEditModeTest: 0 + actionOnDotNetUnhandledException: 1 + editorGfxJobOverride: 1 + enableInternalProfiler: 0 + logObjCUncaughtExceptions: 1 + enableCrashReportAPI: 0 + cameraUsageDescription: + locationUsageDescription: + microphoneUsageDescription: + bluetoothUsageDescription: + macOSTargetOSVersion: 11.0 + switchNMETAOverride: + switchNetLibKey: + switchSocketMemoryPoolSize: 6144 + switchSocketAllocatorPoolSize: 128 + switchSocketConcurrencyLimit: 14 + switchScreenResolutionBehavior: 2 + switchUseCPUProfiler: 0 + switchEnableFileSystemTrace: 0 + switchLTOSetting: 0 + switchApplicationID: 0x01004b9000490000 + switchNSODependencies: + switchCompilerFlags: + switchTitleNames_0: + switchTitleNames_1: + switchTitleNames_2: + switchTitleNames_3: + switchTitleNames_4: + switchTitleNames_5: + switchTitleNames_6: + switchTitleNames_7: + switchTitleNames_8: + switchTitleNames_9: + switchTitleNames_10: + switchTitleNames_11: + switchTitleNames_12: + switchTitleNames_13: + switchTitleNames_14: + switchTitleNames_15: + switchPublisherNames_0: + switchPublisherNames_1: + switchPublisherNames_2: + switchPublisherNames_3: + switchPublisherNames_4: + switchPublisherNames_5: + switchPublisherNames_6: + switchPublisherNames_7: + switchPublisherNames_8: + switchPublisherNames_9: + switchPublisherNames_10: + switchPublisherNames_11: + switchPublisherNames_12: + switchPublisherNames_13: + switchPublisherNames_14: + switchPublisherNames_15: + switchIcons_0: {fileID: 0} + switchIcons_1: {fileID: 0} + switchIcons_2: {fileID: 0} + switchIcons_3: {fileID: 0} + switchIcons_4: {fileID: 0} + switchIcons_5: {fileID: 0} + switchIcons_6: {fileID: 0} + switchIcons_7: {fileID: 0} + switchIcons_8: {fileID: 0} + switchIcons_9: {fileID: 0} + switchIcons_10: {fileID: 0} + switchIcons_11: {fileID: 0} + switchIcons_12: {fileID: 0} + switchIcons_13: {fileID: 0} + switchIcons_14: {fileID: 0} + switchIcons_15: {fileID: 0} + switchSmallIcons_0: {fileID: 0} + switchSmallIcons_1: {fileID: 0} + switchSmallIcons_2: {fileID: 0} + switchSmallIcons_3: {fileID: 0} + switchSmallIcons_4: {fileID: 0} + switchSmallIcons_5: {fileID: 0} + switchSmallIcons_6: {fileID: 0} + switchSmallIcons_7: {fileID: 0} + switchSmallIcons_8: {fileID: 0} + switchSmallIcons_9: {fileID: 0} + switchSmallIcons_10: {fileID: 0} + switchSmallIcons_11: {fileID: 0} + switchSmallIcons_12: {fileID: 0} + switchSmallIcons_13: {fileID: 0} + switchSmallIcons_14: {fileID: 0} + switchSmallIcons_15: {fileID: 0} + switchManualHTML: + switchAccessibleURLs: + switchLegalInformation: + switchMainThreadStackSize: 1048576 + switchPresenceGroupId: + switchLogoHandling: 0 + switchReleaseVersion: 0 + switchDisplayVersion: 1.0.0 + switchStartupUserAccount: 0 + switchSupportedLanguagesMask: 0 + switchLogoType: 0 + switchApplicationErrorCodeCategory: + switchUserAccountSaveDataSize: 0 + switchUserAccountSaveDataJournalSize: 0 + switchApplicationAttribute: 0 + switchCardSpecSize: -1 + switchCardSpecClock: -1 + switchRatingsMask: 0 + switchRatingsInt_0: 0 + switchRatingsInt_1: 0 + switchRatingsInt_2: 0 + switchRatingsInt_3: 0 + switchRatingsInt_4: 0 + switchRatingsInt_5: 0 + switchRatingsInt_6: 0 + switchRatingsInt_7: 0 + switchRatingsInt_8: 0 + switchRatingsInt_9: 0 + switchRatingsInt_10: 0 + switchRatingsInt_11: 0 + switchRatingsInt_12: 0 + switchLocalCommunicationIds_0: + switchLocalCommunicationIds_1: + switchLocalCommunicationIds_2: + switchLocalCommunicationIds_3: + switchLocalCommunicationIds_4: + switchLocalCommunicationIds_5: + switchLocalCommunicationIds_6: + switchLocalCommunicationIds_7: + switchParentalControl: 0 + switchAllowsScreenshot: 1 + switchAllowsVideoCapturing: 1 + switchAllowsRuntimeAddOnContentInstall: 0 + switchDataLossConfirmation: 0 + switchUserAccountLockEnabled: 0 + switchSystemResourceMemory: 16777216 + switchSupportedNpadStyles: 22 + switchNativeFsCacheSize: 32 + switchIsHoldTypeHorizontal: 0 + switchSupportedNpadCount: 8 + switchEnableTouchScreen: 1 + switchSocketConfigEnabled: 0 + switchTcpInitialSendBufferSize: 32 + switchTcpInitialReceiveBufferSize: 64 + switchTcpAutoSendBufferSizeMax: 256 + switchTcpAutoReceiveBufferSizeMax: 256 + switchUdpSendBufferSize: 9 + switchUdpReceiveBufferSize: 42 + switchSocketBufferEfficiency: 4 + switchSocketInitializeEnabled: 1 + switchNetworkInterfaceManagerInitializeEnabled: 1 + switchDisableHTCSPlayerConnection: 0 + switchUseNewStyleFilepaths: 0 + switchUseLegacyFmodPriorities: 0 + switchUseMicroSleepForYield: 1 + switchEnableRamDiskSupport: 0 + switchMicroSleepForYieldTime: 25 + switchRamDiskSpaceSize: 12 + switchUpgradedPlayerSettingsToNMETA: 0 + ps4NPAgeRating: 12 + ps4NPTitleSecret: + ps4NPTrophyPackPath: + ps4ParentalLevel: 11 + ps4ContentID: ED1633-NPXX51362_00-0000000000000000 + ps4Category: 0 + ps4MasterVersion: 01.00 + ps4AppVersion: 01.00 + ps4AppType: 0 + ps4ParamSfxPath: + ps4VideoOutPixelFormat: 0 + ps4VideoOutInitialWidth: 1920 + ps4VideoOutBaseModeInitialWidth: 1920 + ps4VideoOutReprojectionRate: 60 + ps4PronunciationXMLPath: + ps4PronunciationSIGPath: + ps4BackgroundImagePath: + ps4StartupImagePath: + ps4StartupImagesFolder: + ps4IconImagesFolder: + ps4SaveDataImagePath: + ps4SdkOverride: + ps4BGMPath: + ps4ShareFilePath: + ps4ShareOverlayImagePath: + ps4PrivacyGuardImagePath: + ps4ExtraSceSysFile: + ps4NPtitleDatPath: + ps4RemotePlayKeyAssignment: -1 + ps4RemotePlayKeyMappingDir: + ps4PlayTogetherPlayerCount: 0 + ps4EnterButtonAssignment: 2 + ps4ApplicationParam1: 0 + ps4ApplicationParam2: 0 + ps4ApplicationParam3: 0 + ps4ApplicationParam4: 0 + ps4DownloadDataSize: 0 + ps4GarlicHeapSize: 2048 + ps4ProGarlicHeapSize: 2560 + playerPrefsMaxSize: 32768 + ps4Passcode: 2nShdVIdSuseGopOYddcjmN1a8azrPFr + ps4pnSessions: 1 + ps4pnPresence: 1 + ps4pnFriends: 1 + ps4pnGameCustomData: 1 + playerPrefsSupport: 0 + enableApplicationExit: 0 + resetTempFolder: 1 + restrictedAudioUsageRights: 0 + ps4UseResolutionFallback: 0 + ps4ReprojectionSupport: 0 + ps4UseAudio3dBackend: 0 + ps4UseLowGarlicFragmentationMode: 1 + ps4SocialScreenEnabled: 0 + ps4ScriptOptimizationLevel: 2 + ps4Audio3dVirtualSpeakerCount: 14 + ps4attribCpuUsage: 0 + ps4PatchPkgPath: + ps4PatchLatestPkgPath: + ps4PatchChangeinfoPath: + ps4PatchDayOne: 0 + ps4attribUserManagement: 0 + ps4attribMoveSupport: 0 + ps4attrib3DSupport: 0 + ps4attribShareSupport: 0 + ps4attribExclusiveVR: 0 + ps4disableAutoHideSplash: 0 + ps4videoRecordingFeaturesUsed: 0 + ps4contentSearchFeaturesUsed: 0 + ps4CompatibilityPS5: 0 + ps4AllowPS5Detection: 0 + ps4GPU800MHz: 1 + ps4attribEyeToEyeDistanceSettingVR: 0 + ps4IncludedModules: [] + ps4attribVROutputEnabled: 0 + monoEnv: + splashScreenBackgroundSourceLandscape: {fileID: 0} + splashScreenBackgroundSourcePortrait: {fileID: 0} + blurSplashScreenBackground: 1 + spritePackerPolicy: + webGLMemorySize: 32 + webGLExceptionSupport: 1 + webGLNameFilesAsHashes: 0 + webGLShowDiagnostics: 0 + webGLDataCaching: 1 + webGLDebugSymbols: 0 + webGLEmscriptenArgs: + webGLModulesDirectory: + webGLTemplate: APPLICATION:Default + webGLAnalyzeBuildSize: 0 + webGLUseEmbeddedResources: 0 + webGLCompressionFormat: 0 + webGLWasmArithmeticExceptions: 0 + webGLLinkerTarget: 1 + webGLThreadsSupport: 0 + webGLDecompressionFallback: 0 + webGLInitialMemorySize: 32 + webGLMaximumMemorySize: 2048 + webGLMemoryGrowthMode: 2 + webGLMemoryLinearGrowthStep: 16 + webGLMemoryGeometricGrowthStep: 0.2 + webGLMemoryGeometricGrowthCap: 96 + webGLEnableWebGPU: 0 + webGLPowerPreference: 2 + webGLWebAssemblyTable: 0 + webGLWebAssemblyBigInt: 0 + webGLCloseOnQuit: 0 + webWasm2023: 0 + scriptingDefineSymbols: {} + additionalCompilerArguments: {} + platformArchitecture: {} + scriptingBackend: + Android: 1 + il2cppCompilerConfiguration: {} + il2cppCodeGeneration: {} + il2cppStacktraceInformation: {} + managedStrippingLevel: {} + incrementalIl2cppBuild: {} + suppressCommonWarnings: 1 + allowUnsafeCode: 0 + useDeterministicCompilation: 1 + additionalIl2CppArgs: + scriptingRuntimeVersion: 1 + gcIncremental: 1 + gcWBarrierValidation: 0 + apiCompatibilityLevelPerPlatform: {} + editorAssembliesCompatibilityLevel: 1 + m_RenderingPath: 1 + m_MobileRenderingPath: 1 + metroPackageName: magisterka_2 + metroPackageVersion: + metroCertificatePath: + metroCertificatePassword: + metroCertificateSubject: + metroCertificateIssuer: + metroCertificateNotAfter: 0000000000000000 + metroApplicationDescription: magisterka_2 + wsaImages: {} + metroTileShortName: + metroTileShowName: 0 + metroMediumTileShowName: 0 + metroLargeTileShowName: 0 + metroWideTileShowName: 0 + metroSupportStreamingInstall: 0 + metroLastRequiredScene: 0 + metroDefaultTileSize: 1 + metroTileForegroundText: 2 + metroTileBackgroundColor: {r: 0.13333334, g: 0.17254902, b: 0.21568628, a: 0} + metroSplashScreenBackgroundColor: {r: 0.12941177, g: 0.17254902, b: 0.21568628, a: 1} + metroSplashScreenUseBackgroundColor: 0 + syncCapabilities: 0 + platformCapabilities: {} + metroTargetDeviceFamilies: {} + metroFTAName: + metroFTAFileTypes: [] + metroProtocolName: + vcxProjDefaultLanguage: + XboxOneProductId: + XboxOneUpdateKey: + XboxOneSandboxId: + XboxOneContentId: + XboxOneTitleId: + XboxOneSCId: + XboxOneGameOsOverridePath: + XboxOnePackagingOverridePath: + XboxOneAppManifestOverridePath: + XboxOneVersion: 1.0.0.0 + XboxOnePackageEncryption: 0 + XboxOnePackageUpdateGranularity: 2 + XboxOneDescription: + XboxOneLanguage: + - enus + XboxOneCapability: [] + XboxOneGameRating: {} + XboxOneIsContentPackage: 0 + XboxOneEnhancedXboxCompatibilityMode: 0 + XboxOneEnableGPUVariability: 1 + XboxOneSockets: {} + XboxOneSplashScreen: {fileID: 0} + XboxOneAllowedProductIds: [] + XboxOnePersistentLocalStorageSize: 0 + XboxOneXTitleMemory: 8 + XboxOneOverrideIdentityName: + XboxOneOverrideIdentityPublisher: + vrEditorSettings: {} + cloudServicesEnabled: {} + luminIcon: + m_Name: + m_ModelFolderPath: + m_PortalFolderPath: + luminCert: + m_CertPath: + m_SignPackage: 1 + luminIsChannelApp: 0 + luminVersion: + m_VersionCode: 1 + m_VersionName: + hmiPlayerDataPath: + hmiForceSRGBBlit: 0 + embeddedLinuxEnableGamepadInput: 0 + hmiCpuConfiguration: + hmiLogStartupTiming: 0 + qnxGraphicConfPath: + apiCompatibilityLevel: 6 + captureStartupLogs: {} + activeInputHandler: 2 + windowsGamepadBackendHint: 0 + cloudProjectId: 424ab3b9-f2d0-44ca-85f6-f84e7f82202d + framebufferDepthMemorylessMode: 0 + qualitySettingsNames: [] + projectName: magisterka_2 + organizationId: nightmarekiller69 + cloudEnabled: 0 + legacyClampBlendShapeWeights: 0 + hmiLoadingImage: {fileID: 0} + platformRequiresReadableAssets: 0 + virtualTexturingSupportEnabled: 0 + insecureHttpOption: 0 + androidVulkanDenyFilterList: [] + androidVulkanAllowFilterList: [] diff --git a/magisterka_2/ProjectSettings/ProjectVersion.txt b/magisterka_2/ProjectSettings/ProjectVersion.txt new file mode 100644 index 0000000..0faef8d --- /dev/null +++ b/magisterka_2/ProjectSettings/ProjectVersion.txt @@ -0,0 +1,2 @@ +m_EditorVersion: 6000.0.58f2 +m_EditorVersionWithRevision: 6000.0.58f2 (92dee566b325) diff --git a/magisterka_2/ProjectSettings/QualitySettings.asset b/magisterka_2/ProjectSettings/QualitySettings.asset new file mode 100644 index 0000000..bcd6706 --- /dev/null +++ b/magisterka_2/ProjectSettings/QualitySettings.asset @@ -0,0 +1,239 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!47 &1 +QualitySettings: + m_ObjectHideFlags: 0 + serializedVersion: 5 + m_CurrentQuality: 5 + m_QualitySettings: + - serializedVersion: 2 + name: Very Low + pixelLightCount: 0 + shadows: 0 + shadowResolution: 0 + shadowProjection: 1 + shadowCascades: 1 + shadowDistance: 15 + shadowNearPlaneOffset: 3 + shadowCascade2Split: 0.33333334 + shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} + shadowmaskMode: 0 + skinWeights: 1 + textureQuality: 1 + anisotropicTextures: 0 + antiAliasing: 0 + softParticles: 0 + softVegetation: 0 + realtimeReflectionProbes: 0 + billboardsFaceCameraPosition: 0 + vSyncCount: 0 + lodBias: 0.3 + maximumLODLevel: 0 + streamingMipmapsActive: 0 + streamingMipmapsAddAllCameras: 1 + streamingMipmapsMemoryBudget: 512 + streamingMipmapsRenderersPerFrame: 512 + streamingMipmapsMaxLevelReduction: 2 + streamingMipmapsMaxFileIORequests: 1024 + particleRaycastBudget: 4 + asyncUploadTimeSlice: 2 + asyncUploadBufferSize: 16 + asyncUploadPersistentBuffer: 1 + resolutionScalingFixedDPIFactor: 1 + customRenderPipeline: {fileID: 0} + excludedTargetPlatforms: [] + - serializedVersion: 2 + name: Low + pixelLightCount: 0 + shadows: 0 + shadowResolution: 0 + shadowProjection: 1 + shadowCascades: 1 + shadowDistance: 20 + shadowNearPlaneOffset: 3 + shadowCascade2Split: 0.33333334 + shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} + shadowmaskMode: 0 + skinWeights: 2 + textureQuality: 0 + anisotropicTextures: 0 + antiAliasing: 0 + softParticles: 0 + softVegetation: 0 + realtimeReflectionProbes: 0 + billboardsFaceCameraPosition: 0 + vSyncCount: 0 + lodBias: 0.4 + maximumLODLevel: 0 + streamingMipmapsActive: 0 + streamingMipmapsAddAllCameras: 1 + streamingMipmapsMemoryBudget: 512 + streamingMipmapsRenderersPerFrame: 512 + streamingMipmapsMaxLevelReduction: 2 + streamingMipmapsMaxFileIORequests: 1024 + particleRaycastBudget: 16 + asyncUploadTimeSlice: 2 + asyncUploadBufferSize: 16 + asyncUploadPersistentBuffer: 1 + resolutionScalingFixedDPIFactor: 1 + customRenderPipeline: {fileID: 0} + excludedTargetPlatforms: [] + - serializedVersion: 2 + name: Medium + pixelLightCount: 1 + shadows: 1 + shadowResolution: 0 + shadowProjection: 1 + shadowCascades: 1 + shadowDistance: 20 + shadowNearPlaneOffset: 3 + shadowCascade2Split: 0.33333334 + shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} + shadowmaskMode: 0 + skinWeights: 2 + textureQuality: 0 + anisotropicTextures: 1 + antiAliasing: 0 + softParticles: 0 + softVegetation: 0 + realtimeReflectionProbes: 0 + billboardsFaceCameraPosition: 0 + vSyncCount: 1 + lodBias: 0.7 + maximumLODLevel: 0 + streamingMipmapsActive: 0 + streamingMipmapsAddAllCameras: 1 + streamingMipmapsMemoryBudget: 512 + streamingMipmapsRenderersPerFrame: 512 + streamingMipmapsMaxLevelReduction: 2 + streamingMipmapsMaxFileIORequests: 1024 + particleRaycastBudget: 64 + asyncUploadTimeSlice: 2 + asyncUploadBufferSize: 16 + asyncUploadPersistentBuffer: 1 + resolutionScalingFixedDPIFactor: 1 + customRenderPipeline: {fileID: 0} + excludedTargetPlatforms: [] + - serializedVersion: 2 + name: High + pixelLightCount: 2 + shadows: 2 + shadowResolution: 1 + shadowProjection: 1 + shadowCascades: 2 + shadowDistance: 40 + shadowNearPlaneOffset: 3 + shadowCascade2Split: 0.33333334 + shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} + shadowmaskMode: 1 + skinWeights: 2 + textureQuality: 0 + anisotropicTextures: 1 + antiAliasing: 0 + softParticles: 0 + softVegetation: 1 + realtimeReflectionProbes: 1 + billboardsFaceCameraPosition: 1 + vSyncCount: 1 + lodBias: 1 + maximumLODLevel: 0 + streamingMipmapsActive: 0 + streamingMipmapsAddAllCameras: 1 + streamingMipmapsMemoryBudget: 512 + streamingMipmapsRenderersPerFrame: 512 + streamingMipmapsMaxLevelReduction: 2 + streamingMipmapsMaxFileIORequests: 1024 + particleRaycastBudget: 256 + asyncUploadTimeSlice: 2 + asyncUploadBufferSize: 16 + asyncUploadPersistentBuffer: 1 + resolutionScalingFixedDPIFactor: 1 + customRenderPipeline: {fileID: 0} + excludedTargetPlatforms: [] + - serializedVersion: 2 + name: Very High + pixelLightCount: 3 + shadows: 2 + shadowResolution: 2 + shadowProjection: 1 + shadowCascades: 2 + shadowDistance: 70 + shadowNearPlaneOffset: 3 + shadowCascade2Split: 0.33333334 + shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} + shadowmaskMode: 1 + skinWeights: 4 + textureQuality: 0 + anisotropicTextures: 2 + antiAliasing: 2 + softParticles: 1 + softVegetation: 1 + realtimeReflectionProbes: 1 + billboardsFaceCameraPosition: 1 + vSyncCount: 1 + lodBias: 1.5 + maximumLODLevel: 0 + streamingMipmapsActive: 0 + streamingMipmapsAddAllCameras: 1 + streamingMipmapsMemoryBudget: 512 + streamingMipmapsRenderersPerFrame: 512 + streamingMipmapsMaxLevelReduction: 2 + streamingMipmapsMaxFileIORequests: 1024 + particleRaycastBudget: 1024 + asyncUploadTimeSlice: 2 + asyncUploadBufferSize: 16 + asyncUploadPersistentBuffer: 1 + resolutionScalingFixedDPIFactor: 1 + customRenderPipeline: {fileID: 0} + excludedTargetPlatforms: [] + - serializedVersion: 2 + name: Ultra + pixelLightCount: 4 + shadows: 2 + shadowResolution: 2 + shadowProjection: 1 + shadowCascades: 4 + shadowDistance: 150 + shadowNearPlaneOffset: 3 + shadowCascade2Split: 0.33333334 + shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} + shadowmaskMode: 1 + skinWeights: 255 + textureQuality: 0 + anisotropicTextures: 2 + antiAliasing: 2 + softParticles: 1 + softVegetation: 1 + realtimeReflectionProbes: 1 + billboardsFaceCameraPosition: 1 + vSyncCount: 1 + lodBias: 2 + maximumLODLevel: 0 + streamingMipmapsActive: 0 + streamingMipmapsAddAllCameras: 1 + streamingMipmapsMemoryBudget: 512 + streamingMipmapsRenderersPerFrame: 512 + streamingMipmapsMaxLevelReduction: 2 + streamingMipmapsMaxFileIORequests: 1024 + particleRaycastBudget: 4096 + asyncUploadTimeSlice: 2 + asyncUploadBufferSize: 16 + asyncUploadPersistentBuffer: 1 + resolutionScalingFixedDPIFactor: 1 + customRenderPipeline: {fileID: 0} + excludedTargetPlatforms: [] + m_PerPlatformDefaultQuality: + Android: 2 + Lumin: 5 + GameCoreScarlett: 5 + GameCoreXboxOne: 5 + Nintendo Switch: 5 + PS4: 5 + PS5: 5 + Stadia: 5 + Standalone: 5 + WebGL: 3 + Windows Store Apps: 5 + XboxOne: 5 + iPhone: 2 + tvOS: 2 diff --git a/magisterka_2/ProjectSettings/TagManager.asset b/magisterka_2/ProjectSettings/TagManager.asset new file mode 100644 index 0000000..1c92a78 --- /dev/null +++ b/magisterka_2/ProjectSettings/TagManager.asset @@ -0,0 +1,43 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!78 &1 +TagManager: + serializedVersion: 2 + tags: [] + layers: + - Default + - TransparentFX + - Ignore Raycast + - + - Water + - UI + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + m_SortingLayers: + - name: Default + uniqueID: 0 + locked: 0 diff --git a/magisterka_2/ProjectSettings/TimeManager.asset b/magisterka_2/ProjectSettings/TimeManager.asset new file mode 100644 index 0000000..558a017 --- /dev/null +++ b/magisterka_2/ProjectSettings/TimeManager.asset @@ -0,0 +1,9 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!5 &1 +TimeManager: + m_ObjectHideFlags: 0 + Fixed Timestep: 0.02 + Maximum Allowed Timestep: 0.33333334 + m_TimeScale: 1 + Maximum Particle Timestep: 0.03 diff --git a/magisterka_2/ProjectSettings/UnityConnectSettings.asset b/magisterka_2/ProjectSettings/UnityConnectSettings.asset new file mode 100644 index 0000000..a88bee0 --- /dev/null +++ b/magisterka_2/ProjectSettings/UnityConnectSettings.asset @@ -0,0 +1,36 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!310 &1 +UnityConnectSettings: + m_ObjectHideFlags: 0 + serializedVersion: 1 + m_Enabled: 0 + m_TestMode: 0 + m_EventOldUrl: https://api.uca.cloud.unity3d.com/v1/events + m_EventUrl: https://cdp.cloud.unity3d.com/v1/events + m_ConfigUrl: https://config.uca.cloud.unity3d.com + m_DashboardUrl: https://dashboard.unity3d.com + m_TestInitMode: 0 + CrashReportingSettings: + m_EventUrl: https://perf-events.cloud.unity3d.com + m_Enabled: 0 + m_LogBufferSize: 10 + m_CaptureEditorExceptions: 1 + UnityPurchasingSettings: + m_Enabled: 0 + m_TestMode: 0 + UnityAnalyticsSettings: + m_Enabled: 0 + m_TestMode: 0 + m_InitializeOnStartup: 1 + m_PackageRequiringCoreStatsPresent: 0 + UnityAdsSettings: + m_Enabled: 0 + m_InitializeOnStartup: 1 + m_TestMode: 0 + m_IosGameId: + m_AndroidGameId: + m_GameIds: {} + m_GameId: + PerformanceReportingSettings: + m_Enabled: 0 diff --git a/magisterka_2/ProjectSettings/VFXManager.asset b/magisterka_2/ProjectSettings/VFXManager.asset new file mode 100644 index 0000000..46f38e1 --- /dev/null +++ b/magisterka_2/ProjectSettings/VFXManager.asset @@ -0,0 +1,14 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!937362698 &1 +VFXManager: + m_ObjectHideFlags: 0 + m_IndirectShader: {fileID: 0} + m_CopyBufferShader: {fileID: 0} + m_SortShader: {fileID: 0} + m_StripUpdateShader: {fileID: 0} + m_RenderPipeSettingsPath: + m_FixedTimeStep: 0.016666668 + m_MaxDeltaTime: 0.05 + m_CompiledVersion: 0 + m_RuntimeVersion: 0 diff --git a/magisterka_2/ProjectSettings/VersionControlSettings.asset b/magisterka_2/ProjectSettings/VersionControlSettings.asset new file mode 100644 index 0000000..dca2881 --- /dev/null +++ b/magisterka_2/ProjectSettings/VersionControlSettings.asset @@ -0,0 +1,8 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!890905787 &1 +VersionControlSettings: + m_ObjectHideFlags: 0 + m_Mode: Visible Meta Files + m_CollabEditorSettings: + inProgressEnabled: 1 diff --git a/magisterka_2/ProjectSettings/XRSettings.asset b/magisterka_2/ProjectSettings/XRSettings.asset new file mode 100644 index 0000000..482590c --- /dev/null +++ b/magisterka_2/ProjectSettings/XRSettings.asset @@ -0,0 +1,10 @@ +{ + "m_SettingKeys": [ + "VR Device Disabled", + "VR Device User Alert" + ], + "m_SettingValues": [ + "False", + "False" + ] +} \ No newline at end of file