mirror of
https://github.com/kuhyx/praca_magisterska.git
synced 2026-07-04 13:43:05 +02:00
feat: long live unity
This commit is contained in:
parent
ea288f5b1f
commit
0e60cbd402
104
games/unity/.gitignore
vendored
104
games/unity/.gitignore
vendored
@ -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*
|
||||
21
games/unity/magisterka_1/Assets/AutoDestroy.cs
Normal file
21
games/unity/magisterka_1/Assets/AutoDestroy.cs
Normal file
@ -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);
|
||||
}
|
||||
}
|
||||
2
games/unity/magisterka_1/Assets/AutoDestroy.cs.meta
Normal file
2
games/unity/magisterka_1/Assets/AutoDestroy.cs.meta
Normal file
@ -0,0 +1,2 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 70d41ee73b19902cd8a62a320dbde7d9
|
||||
26
games/unity/magisterka_1/Assets/BackgroundScroller.cs
Normal file
26
games/unity/magisterka_1/Assets/BackgroundScroller.cs
Normal file
@ -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;
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,2 @@
|
||||
fileFormatVersion: 2
|
||||
guid: d043389e784a98769b85b475b19a08c3
|
||||
@ -1,23 +1,123 @@
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
public class Bullet : MonoBehaviour
|
||||
{
|
||||
public float speed = 10f;
|
||||
public static readonly List<Bullet> ActiveEnemyProjectiles = new List<Bullet>();
|
||||
|
||||
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<Enemy>() != null)
|
||||
float step = travelSpeed * Time.deltaTime;
|
||||
transform.position += (Vector3)(travelDirection * step);
|
||||
|
||||
remainingLifetime -= Time.deltaTime;
|
||||
if (remainingLifetime <= 0f)
|
||||
{
|
||||
Debug.Log("Enemy destroyed!");
|
||||
Destroy(other.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<PlayerController>();
|
||||
if (player != null)
|
||||
{
|
||||
SpawnImpact();
|
||||
player.TakeHit(damage, transform.position);
|
||||
Recycle();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
Enemy enemy = collision.GetComponent<Enemy>();
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,21 +1,168 @@
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
public class Enemy : MonoBehaviour
|
||||
{
|
||||
public float speed = 2f;
|
||||
public static readonly List<Enemy> ActiveEnemies = new List<Enemy>();
|
||||
|
||||
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<Player>() != null)
|
||||
ActiveEnemies.Remove(this);
|
||||
}
|
||||
|
||||
private void Update()
|
||||
{
|
||||
Destroy(other.gameObject);
|
||||
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)
|
||||
{
|
||||
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<PlayerController>();
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -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();
|
||||
}
|
||||
}
|
||||
67
games/unity/magisterka_1/Assets/GameDirector.cs
Normal file
67
games/unity/magisterka_1/Assets/GameDirector.cs
Normal file
@ -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<EnemySpawner>();
|
||||
}
|
||||
if (player == null)
|
||||
{
|
||||
player = FindObjectOfType<PlayerController>();
|
||||
}
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
2
games/unity/magisterka_1/Assets/GameDirector.cs.meta
Normal file
2
games/unity/magisterka_1/Assets/GameDirector.cs.meta
Normal file
@ -0,0 +1,2 @@
|
||||
fileFormatVersion: 2
|
||||
guid: ad1d35ccb49f4d6e8bdf15be87950a2d
|
||||
@ -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))
|
||||
{
|
||||
Instantiate(bulletPrefab, shootPoint.position, Quaternion.identity);
|
||||
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)
|
||||
{
|
||||
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();
|
||||
}
|
||||
}
|
||||
190
games/unity/magisterka_1/Assets/ScoreManager.cs
Normal file
190
games/unity/magisterka_1/Assets/ScoreManager.cs
Normal file
@ -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<Canvas>();
|
||||
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>();
|
||||
canvas.renderMode = RenderMode.ScreenSpaceOverlay;
|
||||
canvasObject.AddComponent<CanvasScaler>();
|
||||
canvasObject.AddComponent<GraphicRaycaster>();
|
||||
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>();
|
||||
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<Text>();
|
||||
label.font = Resources.GetBuiltinResource<Font>("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}";
|
||||
}
|
||||
}
|
||||
2
games/unity/magisterka_1/Assets/ScoreManager.cs.meta
Normal file
2
games/unity/magisterka_1/Assets/ScoreManager.cs.meta
Normal file
@ -0,0 +1,2 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 7ff9f2088103071c3bfaea5a72945157
|
||||
413
magisterka_2/.gitignore
vendored
Normal file
413
magisterka_2/.gitignore
vendored
Normal file
@ -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*
|
||||
1057
magisterka_2/Assets/InputSystem_Actions.inputactions
Normal file
1057
magisterka_2/Assets/InputSystem_Actions.inputactions
Normal file
File diff suppressed because it is too large
Load Diff
14
magisterka_2/Assets/InputSystem_Actions.inputactions.meta
Normal file
14
magisterka_2/Assets/InputSystem_Actions.inputactions.meta
Normal file
@ -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:
|
||||
8
magisterka_2/Assets/Scenes.meta
Normal file
8
magisterka_2/Assets/Scenes.meta
Normal file
@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 131a6b21c8605f84396be9f6751fb6e3
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
208
magisterka_2/Assets/Scenes/SampleScene.unity
Normal file
208
magisterka_2/Assets/Scenes/SampleScene.unity
Normal file
@ -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}
|
||||
7
magisterka_2/Assets/Scenes/SampleScene.unity.meta
Normal file
7
magisterka_2/Assets/Scenes/SampleScene.unity.meta
Normal file
@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 2cda990e2423bbf4892e6590ba056729
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
8
magisterka_2/Assets/Scripts.meta
Normal file
8
magisterka_2/Assets/Scripts.meta
Normal file
@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 9f525bd660d2799e485caa7557c7af1c
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
128
magisterka_2/Assets/Scripts/BackgroundScroller.cs
Normal file
128
magisterka_2/Assets/Scripts/BackgroundScroller.cs
Normal file
@ -0,0 +1,128 @@
|
||||
using UnityEngine;
|
||||
|
||||
namespace Magisterka.BulletHell
|
||||
{
|
||||
/// <summary>
|
||||
/// Builds a procedural starfield and scrolls it endlessly.
|
||||
/// </summary>
|
||||
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<BackgroundScroller>();
|
||||
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<SpriteRenderer>();
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
||||
2
magisterka_2/Assets/Scripts/BackgroundScroller.cs.meta
Normal file
2
magisterka_2/Assets/Scripts/BackgroundScroller.cs.meta
Normal file
@ -0,0 +1,2 @@
|
||||
fileFormatVersion: 2
|
||||
guid: e5314a501f1fb0551be9a8451c951864
|
||||
125
magisterka_2/Assets/Scripts/Bullet.cs
Normal file
125
magisterka_2/Assets/Scripts/Bullet.cs
Normal file
@ -0,0 +1,125 @@
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
namespace Magisterka.BulletHell
|
||||
{
|
||||
/// <summary>
|
||||
/// Handles individual bullet lifetime, movement, and collision dispatching.
|
||||
/// </summary>
|
||||
[RequireComponent(typeof(SpriteRenderer))]
|
||||
public class Bullet : MonoBehaviour
|
||||
{
|
||||
private static readonly Dictionary<Color, Sprite> SpriteCache = new Dictionary<Color, Sprite>();
|
||||
|
||||
[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>();
|
||||
bullet.Initialize(pool, tint, faction);
|
||||
return bullet;
|
||||
}
|
||||
|
||||
private void Initialize(BulletPool pool, Color tint, Faction faction)
|
||||
{
|
||||
_ownerPool = pool;
|
||||
_ownerFaction = faction;
|
||||
_spriteRenderer = GetComponent<SpriteRenderer>();
|
||||
_spriteRenderer.sprite = GetOrCreateSprite(tint);
|
||||
_spriteRenderer.color = tint;
|
||||
|
||||
_body = gameObject.AddComponent<Rigidbody2D>();
|
||||
_body.gravityScale = 0f;
|
||||
_body.isKinematic = true;
|
||||
_body.interpolation = RigidbodyInterpolation2D.Interpolate;
|
||||
|
||||
_collider = gameObject.AddComponent<CircleCollider2D>();
|
||||
_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;
|
||||
}
|
||||
}
|
||||
}
|
||||
2
magisterka_2/Assets/Scripts/Bullet.cs.meta
Normal file
2
magisterka_2/Assets/Scripts/Bullet.cs.meta
Normal file
@ -0,0 +1,2 @@
|
||||
fileFormatVersion: 2
|
||||
guid: cac8a93675d7419629b19696f280a652
|
||||
89
magisterka_2/Assets/Scripts/BulletPool.cs
Normal file
89
magisterka_2/Assets/Scripts/BulletPool.cs
Normal file
@ -0,0 +1,89 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using Magisterka.BulletHell;
|
||||
using UnityEngine;
|
||||
|
||||
namespace Magisterka.BulletHell
|
||||
{
|
||||
/// <summary>
|
||||
/// Runtime pool that keeps huge bullet counts without constant allocations.
|
||||
/// </summary>
|
||||
public class BulletPool : MonoBehaviour
|
||||
{
|
||||
[SerializeField] private Color bulletColor = Color.white;
|
||||
[SerializeField] private Faction faction = Faction.Player;
|
||||
[SerializeField] private int warmCapacity = 64;
|
||||
|
||||
private readonly Queue<Bullet> _pool = new Queue<Bullet>();
|
||||
private readonly HashSet<Bullet> _liveBullets = new HashSet<Bullet>();
|
||||
|
||||
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<BulletPool>();
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
2
magisterka_2/Assets/Scripts/BulletPool.cs.meta
Normal file
2
magisterka_2/Assets/Scripts/BulletPool.cs.meta
Normal file
@ -0,0 +1,2 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 2cf1222941636185f83028970675cdc0
|
||||
39
magisterka_2/Assets/Scripts/CameraShaker.cs
Normal file
39
magisterka_2/Assets/Scripts/CameraShaker.cs
Normal file
@ -0,0 +1,39 @@
|
||||
using UnityEngine;
|
||||
|
||||
namespace Magisterka.BulletHell
|
||||
{
|
||||
/// <summary>
|
||||
/// Quick camera shake helper for impactful effects.
|
||||
/// </summary>
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
||||
2
magisterka_2/Assets/Scripts/CameraShaker.cs.meta
Normal file
2
magisterka_2/Assets/Scripts/CameraShaker.cs.meta
Normal file
@ -0,0 +1,2 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 635828e8464adc769a94e3e091877b0e
|
||||
123
magisterka_2/Assets/Scripts/EffectManager.cs
Normal file
123
magisterka_2/Assets/Scripts/EffectManager.cs
Normal file
@ -0,0 +1,123 @@
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
namespace Magisterka.BulletHell
|
||||
{
|
||||
/// <summary>
|
||||
/// Lightweight visual feedback hub for hits, explosions, and screen-clears.
|
||||
/// </summary>
|
||||
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<EffectPulse> _pool = new Queue<EffectPulse>();
|
||||
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<CameraShaker>();
|
||||
if (_cameraShaker == null && Camera.main != null)
|
||||
{
|
||||
_cameraShaker = Camera.main.gameObject.AddComponent<CameraShaker>();
|
||||
}
|
||||
|
||||
_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<EffectPulse>();
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
||||
2
magisterka_2/Assets/Scripts/EffectManager.cs.meta
Normal file
2
magisterka_2/Assets/Scripts/EffectManager.cs.meta
Normal file
@ -0,0 +1,2 @@
|
||||
fileFormatVersion: 2
|
||||
guid: c0af68a7cbf92607891efec8c6733c7d
|
||||
102
magisterka_2/Assets/Scripts/EffectPulse.cs
Normal file
102
magisterka_2/Assets/Scripts/EffectPulse.cs
Normal file
@ -0,0 +1,102 @@
|
||||
using System;
|
||||
using UnityEngine;
|
||||
|
||||
namespace Magisterka.BulletHell
|
||||
{
|
||||
/// <summary>
|
||||
/// Simple animated sprite burst that scales and fades over a short lifetime.
|
||||
/// </summary>
|
||||
[RequireComponent(typeof(SpriteRenderer))]
|
||||
public class EffectPulse : MonoBehaviour
|
||||
{
|
||||
private SpriteRenderer _renderer;
|
||||
private Action<EffectPulse> _onComplete;
|
||||
private Vector3 _startScale;
|
||||
private Vector3 _endScale;
|
||||
private float _duration;
|
||||
private float _elapsed;
|
||||
private Color _baseColor;
|
||||
private bool _isActive;
|
||||
|
||||
private void Awake()
|
||||
{
|
||||
_renderer = GetComponent<SpriteRenderer>();
|
||||
_renderer.sprite = BuildPulseSprite();
|
||||
_renderer.sortingOrder = 50;
|
||||
_renderer.color = Color.white;
|
||||
}
|
||||
|
||||
public void Play(Vector2 position, Color color, float startSize, float endSize, float duration, Action<EffectPulse> 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);
|
||||
}
|
||||
}
|
||||
}
|
||||
2
magisterka_2/Assets/Scripts/EffectPulse.cs.meta
Normal file
2
magisterka_2/Assets/Scripts/EffectPulse.cs.meta
Normal file
@ -0,0 +1,2 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 201e8da9a92132ef7a9c53d0ab7e383c
|
||||
126
magisterka_2/Assets/Scripts/EnemyController.cs
Normal file
126
magisterka_2/Assets/Scripts/EnemyController.cs
Normal file
@ -0,0 +1,126 @@
|
||||
using System.Collections;
|
||||
using UnityEngine;
|
||||
|
||||
namespace Magisterka.BulletHell
|
||||
{
|
||||
/// <summary>
|
||||
/// Controls enemy motion, firing patterns, and death rewards.
|
||||
/// </summary>
|
||||
[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>();
|
||||
_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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
2
magisterka_2/Assets/Scripts/EnemyController.cs.meta
Normal file
2
magisterka_2/Assets/Scripts/EnemyController.cs.meta
Normal file
@ -0,0 +1,2 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 93ede0e90a8bf587dba308bd088a2e70
|
||||
176
magisterka_2/Assets/Scripts/EnemySpawner.cs
Normal file
176
magisterka_2/Assets/Scripts/EnemySpawner.cs
Normal file
@ -0,0 +1,176 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
namespace Magisterka.BulletHell
|
||||
{
|
||||
/// <summary>
|
||||
/// Spawns continuously escalating enemy waves for roughly five minutes.
|
||||
/// </summary>
|
||||
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<EnemyController> _liveEnemies = new List<EnemyController>();
|
||||
|
||||
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<SpriteRenderer>();
|
||||
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<CircleCollider2D>();
|
||||
collider.isTrigger = true;
|
||||
collider.radius = 0.7f;
|
||||
|
||||
var health = enemyGO.AddComponent<Health>();
|
||||
|
||||
var controller = enemyGO.AddComponent<EnemyController>();
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
||||
2
magisterka_2/Assets/Scripts/EnemySpawner.cs.meta
Normal file
2
magisterka_2/Assets/Scripts/EnemySpawner.cs.meta
Normal file
@ -0,0 +1,2 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 35145ffe5be7aea6782f360b36ae7d2a
|
||||
13
magisterka_2/Assets/Scripts/Faction.cs
Normal file
13
magisterka_2/Assets/Scripts/Faction.cs
Normal file
@ -0,0 +1,13 @@
|
||||
using System;
|
||||
|
||||
namespace Magisterka.BulletHell
|
||||
{
|
||||
/// <summary>
|
||||
/// Basic identifier for combat sides.
|
||||
/// </summary>
|
||||
public enum Faction
|
||||
{
|
||||
Player = 0,
|
||||
Enemy = 1
|
||||
}
|
||||
}
|
||||
2
magisterka_2/Assets/Scripts/Faction.cs.meta
Normal file
2
magisterka_2/Assets/Scripts/Faction.cs.meta
Normal file
@ -0,0 +1,2 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 3b8dd67ed3d0b4ed9bd25117ac55c8c6
|
||||
23
magisterka_2/Assets/Scripts/GameBootstrap.cs
Normal file
23
magisterka_2/Assets/Scripts/GameBootstrap.cs
Normal file
@ -0,0 +1,23 @@
|
||||
using UnityEngine;
|
||||
|
||||
namespace Magisterka.BulletHell
|
||||
{
|
||||
/// <summary>
|
||||
/// Ensures the runtime bootstrapper exists even if the scene is empty.
|
||||
/// </summary>
|
||||
public static class GameBootstrap
|
||||
{
|
||||
[RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.AfterSceneLoad)]
|
||||
private static void EnsureInitializer()
|
||||
{
|
||||
if (Object.FindFirstObjectByType<GameInitializer>() != null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
var go = new GameObject("GameInitializer");
|
||||
go.AddComponent<GameInitializer>();
|
||||
Object.DontDestroyOnLoad(go);
|
||||
}
|
||||
}
|
||||
}
|
||||
2
magisterka_2/Assets/Scripts/GameBootstrap.cs.meta
Normal file
2
magisterka_2/Assets/Scripts/GameBootstrap.cs.meta
Normal file
@ -0,0 +1,2 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 8a0bda5e5cb690368bcffabb28cc385b
|
||||
101
magisterka_2/Assets/Scripts/GameInitializer.cs
Normal file
101
magisterka_2/Assets/Scripts/GameInitializer.cs
Normal file
@ -0,0 +1,101 @@
|
||||
using Magisterka.BulletHell;
|
||||
using UnityEngine;
|
||||
using UnityEngine.UI;
|
||||
|
||||
namespace Magisterka.BulletHell
|
||||
{
|
||||
/// <summary>
|
||||
/// Bootstraps the benchmark bullet hell scene entirely at runtime.
|
||||
/// </summary>
|
||||
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<Camera>();
|
||||
}
|
||||
|
||||
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>();
|
||||
effectManager.Initialize(root);
|
||||
|
||||
var scoreManager = new GameObject("ScoreManager").AddComponent<ScoreManager>();
|
||||
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<EnemySpawner>();
|
||||
spawner.Initialize(cam, enemyPool, player, bounds);
|
||||
}
|
||||
|
||||
private Text CreateScoreUI()
|
||||
{
|
||||
var canvasGO = new GameObject("Canvas");
|
||||
var canvas = canvasGO.AddComponent<Canvas>();
|
||||
canvas.renderMode = RenderMode.ScreenSpaceOverlay;
|
||||
canvasGO.AddComponent<CanvasScaler>().uiScaleMode = CanvasScaler.ScaleMode.ScaleWithScreenSize;
|
||||
canvasGO.AddComponent<GraphicRaycaster>();
|
||||
|
||||
var textGO = new GameObject("ScoreLabel");
|
||||
textGO.transform.SetParent(canvasGO.transform, false);
|
||||
var label = textGO.AddComponent<Text>();
|
||||
label.font = Resources.GetBuiltinResource<Font>("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;
|
||||
}
|
||||
}
|
||||
}
|
||||
2
magisterka_2/Assets/Scripts/GameInitializer.cs.meta
Normal file
2
magisterka_2/Assets/Scripts/GameInitializer.cs.meta
Normal file
@ -0,0 +1,2 @@
|
||||
fileFormatVersion: 2
|
||||
guid: a62032d38411c5517a166d1d3804a9a7
|
||||
71
magisterka_2/Assets/Scripts/Health.cs
Normal file
71
magisterka_2/Assets/Scripts/Health.cs
Normal file
@ -0,0 +1,71 @@
|
||||
using System;
|
||||
using UnityEngine;
|
||||
|
||||
namespace Magisterka.BulletHell
|
||||
{
|
||||
/// <summary>
|
||||
/// Tracks hit points and dispatches simple death callbacks.
|
||||
/// </summary>
|
||||
public class Health : MonoBehaviour
|
||||
{
|
||||
[SerializeField] private Faction faction = Faction.Enemy;
|
||||
[SerializeField] private float maxHealth = 10f;
|
||||
|
||||
private float _current;
|
||||
|
||||
public event Action<Health> 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);
|
||||
}
|
||||
}
|
||||
}
|
||||
2
magisterka_2/Assets/Scripts/Health.cs.meta
Normal file
2
magisterka_2/Assets/Scripts/Health.cs.meta
Normal file
@ -0,0 +1,2 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 8ed2f8f5001acaaaba43718c23be1206
|
||||
288
magisterka_2/Assets/Scripts/PlayerController.cs
Normal file
288
magisterka_2/Assets/Scripts/PlayerController.cs
Normal file
@ -0,0 +1,288 @@
|
||||
using System.Collections;
|
||||
using UnityEngine;
|
||||
|
||||
namespace Magisterka.BulletHell
|
||||
{
|
||||
/// <summary>
|
||||
/// Handles user input, shooting, screen-clearing bomb, and respawn logic.
|
||||
/// </summary>
|
||||
[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>();
|
||||
_health.Configure(Faction.Player, 60f);
|
||||
_health.Died += HandleDeath;
|
||||
|
||||
_renderer = GetComponent<SpriteRenderer>();
|
||||
_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<SpriteRenderer>();
|
||||
renderer.sprite = BuildPlayerSprite();
|
||||
renderer.sortingOrder = 20;
|
||||
renderer.color = new Color(0.25f, 0.85f, 1f, 1f);
|
||||
|
||||
var collider = playerGO.AddComponent<CircleCollider2D>();
|
||||
collider.radius = 0.55f;
|
||||
collider.isTrigger = true;
|
||||
|
||||
var health = playerGO.AddComponent<Health>();
|
||||
|
||||
var controller = playerGO.AddComponent<PlayerController>();
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
||||
2
magisterka_2/Assets/Scripts/PlayerController.cs.meta
Normal file
2
magisterka_2/Assets/Scripts/PlayerController.cs.meta
Normal file
@ -0,0 +1,2 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 3ba67e64ec76c8988baad48f836ba579
|
||||
56
magisterka_2/Assets/Scripts/ScoreManager.cs
Normal file
56
magisterka_2/Assets/Scripts/ScoreManager.cs
Normal file
@ -0,0 +1,56 @@
|
||||
using UnityEngine;
|
||||
using UnityEngine.UI;
|
||||
|
||||
namespace Magisterka.BulletHell
|
||||
{
|
||||
/// <summary>
|
||||
/// Handles score accumulation and HUD updates.
|
||||
/// </summary>
|
||||
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}";
|
||||
}
|
||||
}
|
||||
}
|
||||
2
magisterka_2/Assets/Scripts/ScoreManager.cs.meta
Normal file
2
magisterka_2/Assets/Scripts/ScoreManager.cs.meta
Normal file
@ -0,0 +1,2 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 294e59ae91c5dc00298264594f7afe7d
|
||||
48
magisterka_2/Packages/manifest.json
Normal file
48
magisterka_2/Packages/manifest.json
Normal file
@ -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"
|
||||
}
|
||||
}
|
||||
544
magisterka_2/Packages/packages-lock.json
Normal file
544
magisterka_2/Packages/packages-lock.json
Normal file
@ -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"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
19
magisterka_2/ProjectSettings/AudioManager.asset
Normal file
19
magisterka_2/ProjectSettings/AudioManager.asset
Normal file
@ -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
|
||||
6
magisterka_2/ProjectSettings/ClusterInputManager.asset
Normal file
6
magisterka_2/ProjectSettings/ClusterInputManager.asset
Normal file
@ -0,0 +1,6 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!236 &1
|
||||
ClusterInputManager:
|
||||
m_ObjectHideFlags: 0
|
||||
m_Inputs: []
|
||||
37
magisterka_2/ProjectSettings/DynamicsManager.asset
Normal file
37
magisterka_2/ProjectSettings/DynamicsManager.asset
Normal file
@ -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
|
||||
13
magisterka_2/ProjectSettings/EditorBuildSettings.asset
Normal file
13
magisterka_2/ProjectSettings/EditorBuildSettings.asset
Normal file
@ -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
|
||||
49
magisterka_2/ProjectSettings/EditorSettings.asset
Normal file
49
magisterka_2/ProjectSettings/EditorSettings.asset
Normal file
@ -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
|
||||
64
magisterka_2/ProjectSettings/GraphicsSettings.asset
Normal file
64
magisterka_2/ProjectSettings/GraphicsSettings.asset
Normal file
@ -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
|
||||
487
magisterka_2/ProjectSettings/InputManager.asset
Normal file
487
magisterka_2/ProjectSettings/InputManager.asset
Normal file
@ -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
|
||||
35
magisterka_2/ProjectSettings/MemorySettings.asset
Normal file
35
magisterka_2/ProjectSettings/MemorySettings.asset
Normal file
@ -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: {}
|
||||
7
magisterka_2/ProjectSettings/MultiplayerManager.asset
Normal file
7
magisterka_2/ProjectSettings/MultiplayerManager.asset
Normal file
@ -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: {}
|
||||
93
magisterka_2/ProjectSettings/NavMeshAreas.asset
Normal file
93
magisterka_2/ProjectSettings/NavMeshAreas.asset
Normal file
@ -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
|
||||
8
magisterka_2/ProjectSettings/NetworkManager.asset
Normal file
8
magisterka_2/ProjectSettings/NetworkManager.asset
Normal file
@ -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: {}
|
||||
44
magisterka_2/ProjectSettings/PackageManagerSettings.asset
Normal file
44
magisterka_2/ProjectSettings/PackageManagerSettings.asset
Normal file
@ -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
|
||||
56
magisterka_2/ProjectSettings/Physics2DSettings.asset
Normal file
56
magisterka_2/ProjectSettings/Physics2DSettings.asset
Normal file
@ -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
|
||||
7
magisterka_2/ProjectSettings/PresetManager.asset
Normal file
7
magisterka_2/ProjectSettings/PresetManager.asset
Normal file
@ -0,0 +1,7 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!1386491679 &1
|
||||
PresetManager:
|
||||
m_ObjectHideFlags: 0
|
||||
serializedVersion: 2
|
||||
m_DefaultPresets: {}
|
||||
924
magisterka_2/ProjectSettings/ProjectSettings.asset
Normal file
924
magisterka_2/ProjectSettings/ProjectSettings.asset
Normal file
@ -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: []
|
||||
2
magisterka_2/ProjectSettings/ProjectVersion.txt
Normal file
2
magisterka_2/ProjectSettings/ProjectVersion.txt
Normal file
@ -0,0 +1,2 @@
|
||||
m_EditorVersion: 6000.0.58f2
|
||||
m_EditorVersionWithRevision: 6000.0.58f2 (92dee566b325)
|
||||
239
magisterka_2/ProjectSettings/QualitySettings.asset
Normal file
239
magisterka_2/ProjectSettings/QualitySettings.asset
Normal file
@ -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
|
||||
43
magisterka_2/ProjectSettings/TagManager.asset
Normal file
43
magisterka_2/ProjectSettings/TagManager.asset
Normal file
@ -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
|
||||
9
magisterka_2/ProjectSettings/TimeManager.asset
Normal file
9
magisterka_2/ProjectSettings/TimeManager.asset
Normal file
@ -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
|
||||
36
magisterka_2/ProjectSettings/UnityConnectSettings.asset
Normal file
36
magisterka_2/ProjectSettings/UnityConnectSettings.asset
Normal file
@ -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
|
||||
14
magisterka_2/ProjectSettings/VFXManager.asset
Normal file
14
magisterka_2/ProjectSettings/VFXManager.asset
Normal file
@ -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
|
||||
@ -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
|
||||
10
magisterka_2/ProjectSettings/XRSettings.asset
Normal file
10
magisterka_2/ProjectSettings/XRSettings.asset
Normal file
@ -0,0 +1,10 @@
|
||||
{
|
||||
"m_SettingKeys": [
|
||||
"VR Device Disabled",
|
||||
"VR Device User Alert"
|
||||
],
|
||||
"m_SettingValues": [
|
||||
"False",
|
||||
"False"
|
||||
]
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user