From 11f98eab1083dc2e26a1324ba4f559560fa4e190 Mon Sep 17 00:00:00 2001 From: czbalint <62812514+czbalint@users.noreply.github.com> Date: Thu, 12 Aug 2021 20:06:24 +0200 Subject: [PATCH] na igy jo --- Assets/Scripts/Bosses/EnemySpawnController.cs | 42 +++++++ .../Bosses/EnemySpawnController.cs.meta | 11 ++ Assets/Scripts/Camera.meta | 8 ++ Assets/Scripts/Camera/BackgroundInstance.cs | 49 ++++++++ .../Scripts/Camera/BackgroundInstance.cs.meta | 11 ++ Assets/Scripts/Camera/BackgroundRoller.cs | 70 ++++++++++++ .../Scripts/Camera/BackgroundRoller.cs.meta | 11 ++ Assets/Scripts/Camera/CameraController.cs | 30 +++++ .../Scripts/Camera/CameraController.cs.meta | 11 ++ Assets/Scripts/Camera/FellOffController.cs | 39 +++++++ .../Scripts/Camera/FellOffController.cs.meta | 11 ++ Assets/Scripts/Items/ItemDestroyer.cs | 28 +++++ Assets/Scripts/Items/ItemDestroyer.cs.meta | 11 ++ Assets/Scripts/Items/ItemSpawner.cs | 105 ++++++++++++++++++ Assets/Scripts/Items/ItemSpawner.cs.meta | 11 ++ Assets/Scripts/Menu.meta | 8 ++ Assets/Scripts/Menu/MenuController.cs | 32 ++++++ Assets/Scripts/Menu/MenuController.cs.meta | 11 ++ Assets/Scripts/Menu/menuButtons.cs | 17 +++ Assets/Scripts/Menu/menuButtons.cs.meta | 11 ++ .../Scripts/Platforms/OnkoltsegController.cs | 95 ++++++++++++++++ .../Platforms/OnkoltsegController.cs.meta | 11 ++ Assets/Scripts/Player/ScoreController.cs | 52 +++++++++ Assets/Scripts/Player/ScoreController.cs.meta | 11 ++ 24 files changed, 696 insertions(+) create mode 100644 Assets/Scripts/Bosses/EnemySpawnController.cs create mode 100644 Assets/Scripts/Bosses/EnemySpawnController.cs.meta create mode 100644 Assets/Scripts/Camera.meta create mode 100644 Assets/Scripts/Camera/BackgroundInstance.cs create mode 100644 Assets/Scripts/Camera/BackgroundInstance.cs.meta create mode 100644 Assets/Scripts/Camera/BackgroundRoller.cs create mode 100644 Assets/Scripts/Camera/BackgroundRoller.cs.meta create mode 100644 Assets/Scripts/Camera/CameraController.cs create mode 100644 Assets/Scripts/Camera/CameraController.cs.meta create mode 100644 Assets/Scripts/Camera/FellOffController.cs create mode 100644 Assets/Scripts/Camera/FellOffController.cs.meta create mode 100644 Assets/Scripts/Items/ItemDestroyer.cs create mode 100644 Assets/Scripts/Items/ItemDestroyer.cs.meta create mode 100644 Assets/Scripts/Items/ItemSpawner.cs create mode 100644 Assets/Scripts/Items/ItemSpawner.cs.meta create mode 100644 Assets/Scripts/Menu.meta create mode 100644 Assets/Scripts/Menu/MenuController.cs create mode 100644 Assets/Scripts/Menu/MenuController.cs.meta create mode 100644 Assets/Scripts/Menu/menuButtons.cs create mode 100644 Assets/Scripts/Menu/menuButtons.cs.meta create mode 100644 Assets/Scripts/Platforms/OnkoltsegController.cs create mode 100644 Assets/Scripts/Platforms/OnkoltsegController.cs.meta create mode 100644 Assets/Scripts/Player/ScoreController.cs create mode 100644 Assets/Scripts/Player/ScoreController.cs.meta diff --git a/Assets/Scripts/Bosses/EnemySpawnController.cs b/Assets/Scripts/Bosses/EnemySpawnController.cs new file mode 100644 index 0000000..53e435d --- /dev/null +++ b/Assets/Scripts/Bosses/EnemySpawnController.cs @@ -0,0 +1,42 @@ +using UnityEngine; +using UnityEngine.Serialization; +using Random = System.Random; + +public class EnemySpawnController : MonoBehaviour{ + private Main_camera _cameraScript; + private Player _player; + private Vector3 _newPos; + + [FormerlySerializedAs("OwlPrefab")] [SerializeField] private GameObject owlPrefab; + [FormerlySerializedAs("EnemySpawningOffset")] [SerializeField] private double enemySpawningOffset; + [SerializeField] private float ySpawningOffset; + + private static readonly Random Random = new Random(); + private void Start(){ + _cameraScript = GameManager.Instance.MainCamera.GetComponent(); + _player = GameManager.Instance.Player; + _cameraScript.CameraMoved += CameraMove; + _newPos = _player.transform.position; + enemySpawningOffset = _cameraScript.ColliderSize.y * enemySpawningOffset; + } + + private void CameraMove(){ + var position = _player.transform.position; + var tmpPos = new Vector3(position.x, position.y + _cameraScript.ColliderSize.y * 2, position.z); + if (tmpPos.y - _newPos.y > enemySpawningOffset){ + _newPos = tmpPos; + var tmpRoute1 = new Vector3(-GameManager.Instance.x_offset, (float) (_newPos.y + GetRandomNumber(-ySpawningOffset, ySpawningOffset)), _newPos.z); + var tmpRoute2 = new Vector3(GameManager.Instance.x_offset, (float) (_newPos.y + GetRandomNumber(-ySpawningOffset, ySpawningOffset)), _newPos.z); + var newEnemy = Instantiate(owlPrefab, _newPos, Quaternion.identity); + newEnemy.GetComponent().AddWayponts(new []{tmpRoute1, tmpRoute2}); + } + } + + private static double GetRandomNumber(double minValue, double maxValue) + { + var next = Random.NextDouble(); + var output = minValue + (next * (maxValue - minValue)); + print(output); + return output; + } +} diff --git a/Assets/Scripts/Bosses/EnemySpawnController.cs.meta b/Assets/Scripts/Bosses/EnemySpawnController.cs.meta new file mode 100644 index 0000000..391dbc2 --- /dev/null +++ b/Assets/Scripts/Bosses/EnemySpawnController.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 76e401c1083713d4891fdd07806c39d8 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Camera.meta b/Assets/Scripts/Camera.meta new file mode 100644 index 0000000..d23a474 --- /dev/null +++ b/Assets/Scripts/Camera.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: ce5d65d9e579b36458d835f2d8c3fead +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Camera/BackgroundInstance.cs b/Assets/Scripts/Camera/BackgroundInstance.cs new file mode 100644 index 0000000..875f706 --- /dev/null +++ b/Assets/Scripts/Camera/BackgroundInstance.cs @@ -0,0 +1,49 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +[RequireComponent(typeof(BoxCollider2D))] + +public class BackgroundInstance : MonoBehaviour +{ + // Start is called before the first frame update + public BackgroundRoller roller; + bool flaggedForDelete = false; + + private void OnTriggerExit2D(Collider2D collision) + { + + if (collision.gameObject.CompareTag("MainCamera")) + { + Debug.Log("whoosh"); + + if(!flaggedForDelete) + { + flaggedForDelete = true; + StartCoroutine(DestroyCountdown()); + } + + + } + } + private void OnTriggerEnter2D(Collider2D collision) + { + if(collision.gameObject.CompareTag("MainCamera")) + { + Debug.Log("meow"); + roller.SetCurrentBgInstance(this.gameObject); + flaggedForDelete = false; + } + } + + private IEnumerator DestroyCountdown() + { + yield return new WaitForSeconds(10); + if(flaggedForDelete && gameObject!=null) + { + Debug.Log("Oh no we're doomed"); + Destroy(gameObject); + + } + } +} diff --git a/Assets/Scripts/Camera/BackgroundInstance.cs.meta b/Assets/Scripts/Camera/BackgroundInstance.cs.meta new file mode 100644 index 0000000..3136b39 --- /dev/null +++ b/Assets/Scripts/Camera/BackgroundInstance.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 677803316bfc6c0408bf86ba89f7cdf1 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Camera/BackgroundRoller.cs b/Assets/Scripts/Camera/BackgroundRoller.cs new file mode 100644 index 0000000..dfbb816 --- /dev/null +++ b/Assets/Scripts/Camera/BackgroundRoller.cs @@ -0,0 +1,70 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class BackgroundRoller : MonoBehaviour +{ + //rolls with constant speed now, could be adjusted to the movement speed of the platforms or the offset of the player + + + + private Camera camera; + public List bgSprites; + private int currentSprite = 0; + public GameObject currentBackgroundInstance; + public GameObject upcomingBackgroundInstance; + private BoxCollider2D bgCollider; + + public GameObject backgroundInstancePrefab; + + + void Start() + { + camera = Camera.main; + bgCollider = currentBackgroundInstance.GetComponent(); + settUpBackgroundInstance(currentBackgroundInstance); + } + + // Update is called once per frame + void Update() + { + Debug.Log("current spire" + currentSprite); + + if (currentSprite >= bgSprites.Count - 1) + { + currentSprite = -1; //never do this at home kids + } + + //if there are sprites left & we are over half the height, we instantiate another sprite at the top + if (currentSprite < bgSprites.Count - 1 && + camera.transform.position.y > currentBackgroundInstance.transform.position.y + bgCollider.size.y / 2 - camera.orthographicSize && + upcomingBackgroundInstance == null) + { + upcomingBackgroundInstance = Instantiate(backgroundInstancePrefab); + settUpBackgroundInstance(upcomingBackgroundInstance); + upcomingBackgroundInstance.transform.position = new Vector3(0, currentBackgroundInstance.transform.position.y + bgCollider.size.y * currentBackgroundInstance.transform.localScale.y, 0.1f); + + } + + + } + + public void SetCurrentBgInstance(GameObject bg) + { + currentBackgroundInstance = bg.gameObject; + upcomingBackgroundInstance = null; + bgCollider = bg.GetComponent(); + + } + + public void settUpBackgroundInstance(GameObject upcomingBackgroundInstance) + { + //https://answers.unity.com/questions/890148/scale-and-place-gameobject-as-a-background-of-the.html + //source + upcomingBackgroundInstance.transform.localScale = new Vector2((Camera.main.orthographicSize * 2 * Screen.width * 0.28f) / Screen.height, Camera.main.orthographicSize * 2 * 0.28f); + upcomingBackgroundInstance.transform.SetParent(transform); + upcomingBackgroundInstance.GetComponent().sprite = bgSprites[currentSprite]; + upcomingBackgroundInstance.GetComponent().roller = this; + currentSprite++; + } +} diff --git a/Assets/Scripts/Camera/BackgroundRoller.cs.meta b/Assets/Scripts/Camera/BackgroundRoller.cs.meta new file mode 100644 index 0000000..1f4421d --- /dev/null +++ b/Assets/Scripts/Camera/BackgroundRoller.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 721bec2f5f1e48d4784acc70c548e367 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Camera/CameraController.cs b/Assets/Scripts/Camera/CameraController.cs new file mode 100644 index 0000000..1a41706 --- /dev/null +++ b/Assets/Scripts/Camera/CameraController.cs @@ -0,0 +1,30 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +[RequireComponent(typeof(BoxCollider2D))] +public class CameraController : MonoBehaviour +{ + //this script literally just sets the camera collider size to the size of the viewport + //put here any new camera functionality + public Transform playerTransform; + private Transform cameraTransform; + private int cameraSpeed; + public Vector3 velocity = Vector3.zero; + public float smoothTime = 0.2f; + void Start() + { + GetComponent().size = new Vector2(Camera.main.orthographicSize * Camera.main.aspect * 2, Camera.main.orthographicSize*2); //width, height + cameraTransform = Camera.main.transform; + } + + private void FixedUpdate() + { + if(playerTransform.position.y-cameraTransform.position.y>0.01)//if the player is higher than the middle of the camera + { + Vector3 targetPosition = new Vector3(cameraTransform.position.x, playerTransform.position.y, cameraTransform.position.z); + cameraTransform.position = Vector3.SmoothDamp(transform.position, targetPosition, ref velocity, smoothTime); + } + } + +} diff --git a/Assets/Scripts/Camera/CameraController.cs.meta b/Assets/Scripts/Camera/CameraController.cs.meta new file mode 100644 index 0000000..df555f8 --- /dev/null +++ b/Assets/Scripts/Camera/CameraController.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 5a4449b2421c89a42b923468217fbf76 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Camera/FellOffController.cs b/Assets/Scripts/Camera/FellOffController.cs new file mode 100644 index 0000000..2820e50 --- /dev/null +++ b/Assets/Scripts/Camera/FellOffController.cs @@ -0,0 +1,39 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class FellOffController : MonoBehaviour { + private Transform mainCameraTransform; + private Collider2D mainCameraCollider2D; + private Collider2D myCollider; + private bool falled = false; + + // Start is called before the first frame update + void Start() { + mainCameraTransform = GameManager.Instance.MainCamera.transform; + mainCameraCollider2D = GameManager.Instance.MainCamera.GetComponent(); + myCollider = GetComponent(); + + GetComponent().size = new Vector2(Camera.main.orthographicSize * Camera.main.aspect * 4, 1); + Vector2 nPos = mainCameraTransform.position; + nPos.y -= (mainCameraCollider2D.bounds.size.y / 2 + myCollider.bounds.size.y / 2); + transform.position = nPos; + } + + private void OnTriggerEnter2D(Collider2D other) { + if (other.CompareTag("Player")) { + if (!falled) + GameManager.Instance.FellDown(); + } + } + + private void OnTriggerExit2D(Collider2D other) { + if (falled) + GameManager.Instance.Player.hurt(); + } + + public void Fallen() { + falled = true; + } +} \ No newline at end of file diff --git a/Assets/Scripts/Camera/FellOffController.cs.meta b/Assets/Scripts/Camera/FellOffController.cs.meta new file mode 100644 index 0000000..d1eba2a --- /dev/null +++ b/Assets/Scripts/Camera/FellOffController.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 2c337c71b0ca81d4cabc0efcf6a32922 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Items/ItemDestroyer.cs b/Assets/Scripts/Items/ItemDestroyer.cs new file mode 100644 index 0000000..b843267 --- /dev/null +++ b/Assets/Scripts/Items/ItemDestroyer.cs @@ -0,0 +1,28 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class ItemDestroyer : MonoBehaviour { + private List colliders = new List(); + private void OnTriggerExit2D(Collider2D col) { + // Ha platformmal talazunk + if (col.gameObject.CompareTag("Coin") && !colliders.Contains(col)) { + // Toroljuk azt aki lent volt + colliders.Add(col); + col.GetComponent().DestroyItem(); + ItemSpawner.Instance.DecreaseCoinNum(); + } + + if (col.gameObject.CompareTag("SpecialItem") && !colliders.Contains(col)) { + // Toroljuk azt aki lent volt + colliders.Add(col); + col.GetComponent().DestroyItem(); + ItemSpawner.Instance.DecreaseSpecialNum(); + } + } + + private void Update() { + colliders.Clear(); + } +} diff --git a/Assets/Scripts/Items/ItemDestroyer.cs.meta b/Assets/Scripts/Items/ItemDestroyer.cs.meta new file mode 100644 index 0000000..c97e806 --- /dev/null +++ b/Assets/Scripts/Items/ItemDestroyer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 62fff5dd8f0ce9a4ea3cc2832ef5e8a3 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Items/ItemSpawner.cs b/Assets/Scripts/Items/ItemSpawner.cs new file mode 100644 index 0000000..25cdb04 --- /dev/null +++ b/Assets/Scripts/Items/ItemSpawner.cs @@ -0,0 +1,105 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEditorInternal; +using UnityEngine; +using Random = UnityEngine.Random; + +public class ItemSpawner : MonoBehaviour { + public static ItemSpawner Instance { get; private set; } + private float width; + private float height; + + [Header("Special")] + [SerializeField] private float chanceToSpawnSpecial = 0.4f; + [SerializeField] private int maxSpecialNum = 3; + [SerializeField] private int minSpecialNum = 0; + [SerializeField] private BaseItemEffect[] specialItems; + private int specialNum; + + [Header("Coin")] + [SerializeField] private float chanceToSpawnCoin = 0.8f; + [SerializeField] private int maxCoinNum = 5; + [SerializeField] private int minCoinNum = 1; + [SerializeField] private Coin coinPrefab; + [SerializeField] private int minCoinValue = 50; + [SerializeField] private int maxCoinValue = 500; + private int coinNum; + + private float lastY; + private float m_PlayerY; + void Start() { + if (Instance != null) + Destroy(gameObject); + else + Instance = this; + + width = Camera.main.orthographicSize * Camera.main.aspect; + height = Camera.main.orthographicSize * 2; + m_PlayerY = GameManager.Instance.Player.transform.position.y; + + coinNum = 0; + specialNum = 0; + + lastY = m_PlayerY; + + SpawnItems(); + } + void Update() { + SpawnItems(); + } + private void SpawnItems() { + if (coinNum <= minCoinNum) { + for (int i = 0; i < (maxCoinNum - coinNum); ++i) { + if (Random.Range(0.0f, 1.0f) < chanceToSpawnCoin) { + SpawnCoin(); + } + } + + while (coinNum < minCoinNum) { + SpawnCoin(); + } + + lastY += height / 2; + } + + if (specialNum <= minSpecialNum) { + for (int i = 0; i < (maxSpecialNum - specialNum); ++i) { + if (Random.Range(0.0f, 1.0f) < chanceToSpawnSpecial) { + SpawnSpecial(); + } + } + + while (specialNum < minSpecialNum) { + SpawnSpecial(); + } + + lastY += height / 2; + } + } + private void SpawnCoin() { + var tmp = GenerateNextItemPos(); + Coin coin = Instantiate(coinPrefab, tmp, Quaternion.identity); + coin.coinBonusLowerBound = minCoinValue; + coin.coinBonusUpperBound = maxCoinValue; + coinNum++; + } + private void SpawnSpecial() { + var tmp = GenerateNextItemPos(); + Instantiate(specialItems[Random.Range(0, specialItems.Length)], tmp, Quaternion.identity); + specialNum++; + } + private Vector2 GenerateNextItemPos() { + + float x = Random.Range(-width / 2, width / 2); + float y = Mathf.Max(lastY, m_PlayerY) + Random.Range(0.2f, height / 2); + Vector2 tmp = new Vector2(x, y); + lastY = y; + return tmp; + } + public void DecreaseCoinNum() { + coinNum--; + } + public void DecreaseSpecialNum() { + specialNum--; + } +} \ No newline at end of file diff --git a/Assets/Scripts/Items/ItemSpawner.cs.meta b/Assets/Scripts/Items/ItemSpawner.cs.meta new file mode 100644 index 0000000..2246c9d --- /dev/null +++ b/Assets/Scripts/Items/ItemSpawner.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 616440c7c868257439ec39a2ac72a4b9 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Menu.meta b/Assets/Scripts/Menu.meta new file mode 100644 index 0000000..0c2fd24 --- /dev/null +++ b/Assets/Scripts/Menu.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 55d7353e71a6515419d853d81ebe8b74 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Menu/MenuController.cs b/Assets/Scripts/Menu/MenuController.cs new file mode 100644 index 0000000..ce48b58 --- /dev/null +++ b/Assets/Scripts/Menu/MenuController.cs @@ -0,0 +1,32 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class MenuController : MonoBehaviour { + [SerializeField] private Animator mainMenuAnimator; + [SerializeField] private Animator optionAnimator; + [SerializeField] private Animator leaderboardAnimator; + + public void OptionButton() { + mainMenuAnimator.Play("MainOut"); + optionAnimator.Play("OptionIn"); + } + + public void BackButton() { + mainMenuAnimator.Play("MenuIn"); + optionAnimator.Play("OptionOut"); + } + + public void leaderboardButton() + { + mainMenuAnimator.Play("MainOut"); + leaderboardAnimator.Play("LeaderboardIn"); + } + + public void backButtonLeaderboard() + { + mainMenuAnimator.Play("MenuIn"); + leaderboardAnimator.Play("LeaderboardOut"); + } +} \ No newline at end of file diff --git a/Assets/Scripts/Menu/MenuController.cs.meta b/Assets/Scripts/Menu/MenuController.cs.meta new file mode 100644 index 0000000..6972fd2 --- /dev/null +++ b/Assets/Scripts/Menu/MenuController.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: bc687a0428b1c9249907e57f5201647e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Menu/menuButtons.cs b/Assets/Scripts/Menu/menuButtons.cs new file mode 100644 index 0000000..263fafa --- /dev/null +++ b/Assets/Scripts/Menu/menuButtons.cs @@ -0,0 +1,17 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.SceneManagement; + +public class menuButtons : MonoBehaviour +{ + public void playButtonPress() + { + SceneManager.LoadScene(1); + } + public void quitButtonPress() + { + Application.Quit(); + } +} + diff --git a/Assets/Scripts/Menu/menuButtons.cs.meta b/Assets/Scripts/Menu/menuButtons.cs.meta new file mode 100644 index 0000000..f83c0bd --- /dev/null +++ b/Assets/Scripts/Menu/menuButtons.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 34767b4c9fb8a964581d2cbf1e9288e8 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Platforms/OnkoltsegController.cs b/Assets/Scripts/Platforms/OnkoltsegController.cs new file mode 100644 index 0000000..3cf72bc --- /dev/null +++ b/Assets/Scripts/Platforms/OnkoltsegController.cs @@ -0,0 +1,95 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class OnkoltsegController : MonoBehaviour { + [SerializeField] private float waitingTime = 3; + [SerializeField] private float raisingSpeed = 2; + + public float RaisingSpeed { + get => raisingSpeed; + set { + if (value <= 0) { + throw new ArgumentException("Onkoltseg Speed Cannot be zero or less."); + } + + raisingSpeed = value; + } + } + + public float WaitingTime { + get => waitingTime; + set { + if (value <= 0) { + throw new ArgumentException("Onkoltseg Time Cannot be zero or less."); + } + + waitingTime = value; + } + } + + public bool Enable{ get; set; } + + private Rigidbody2D _rb; + private float tmpWaitingTime; + private Transform mainCameraTransform; + private Collider2D mainCameraCollider2D; + private Collider2D myCollider; + + private bool moving; + + private bool end = false; + // Start is called before the first frame update + void Start(){ + Enable = false; + tmpWaitingTime = waitingTime; + moving = false; + _rb = GetComponent(); + myCollider = GetComponent(); + mainCameraTransform = GameManager.Instance.MainCamera.transform; + mainCameraCollider2D = GameManager.Instance.MainCamera.GetComponent(); + } + + public void ResetTimer() { + tmpWaitingTime = waitingTime; + if (moving) + _rb.velocity = Vector2.zero; + + moving = false; + } + + private void StartMoving() { + if (!Enable) return; + Vector2 nPos = mainCameraTransform.position; + nPos.y -= (mainCameraCollider2D.bounds.size.y / 2 + myCollider.bounds.size.y / 2); + transform.position = nPos; + moving = true; + + _rb.velocity = Vector2.up * raisingSpeed; + } + + private void Update() { + if (!Enable) return; + if (tmpWaitingTime <= 0 && !moving && !end) + StartMoving(); + else if (!moving && !end) + tmpWaitingTime -= Time.deltaTime; + } + + private void OnTriggerEnter2D(Collider2D other) { + // Elkerjuk az utkozestol az enemyt + Player player = other.GetComponent(); + // Megnezzuk, hogy tenyleg egy ellenseggel utkoztunk e + if (player) { + player.hurt(); + } + } + + public void GameEnd() { + end = true; + Vector2 nPos = mainCameraTransform.position; + nPos.y += (mainCameraCollider2D.bounds.size.y / 2 + myCollider.bounds.size.y / 2); + transform.position = nPos; + } +} \ No newline at end of file diff --git a/Assets/Scripts/Platforms/OnkoltsegController.cs.meta b/Assets/Scripts/Platforms/OnkoltsegController.cs.meta new file mode 100644 index 0000000..48d9d78 --- /dev/null +++ b/Assets/Scripts/Platforms/OnkoltsegController.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 3bc2e633913ded64886a4669a8dc1934 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Player/ScoreController.cs b/Assets/Scripts/Player/ScoreController.cs new file mode 100644 index 0000000..e585467 --- /dev/null +++ b/Assets/Scripts/Player/ScoreController.cs @@ -0,0 +1,52 @@ +using System; +using UnityEngine; +using UnityEngine.UI; + +public class ScoreController : MonoBehaviour{ + private Player _player; + private int _start_pos; + private Text scoreText; + public double multiplier; + private double score; + + public string ScoreText{ + set => scoreText.text = value; + get => scoreText.text; + } + + public double BoostMultiplier{ + set{ + if (value > 0) + multiplier = value; + } + + get => multiplier; + } + + [SerializeField] private int pointDiffToHarden = 50; + private double pointToHarden; + public event Action HardenTheLevel; + + void Start() { + pointToHarden = pointDiffToHarden; + _player = GameManager.Instance.Player; + _start_pos = (int)_player.gameObject.transform.position.y; + scoreText = GetComponentInChildren(); + BoostMultiplier = 1; + score = 0; + } + + void Update(){ + var position = _player.gameObject.transform.position; + var scoreTmp = (int) position.y - _start_pos; + _start_pos = Math.Max((int)position.y, _start_pos); + if (scoreTmp > 0){ + score += scoreTmp * multiplier; + if (score / pointToHarden >= 1) { + pointToHarden += pointDiffToHarden; + HardenTheLevel?.Invoke(); + } + ScoreText = score.ToString(); + } + } +} diff --git a/Assets/Scripts/Player/ScoreController.cs.meta b/Assets/Scripts/Player/ScoreController.cs.meta new file mode 100644 index 0000000..3a204b6 --- /dev/null +++ b/Assets/Scripts/Player/ScoreController.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d67a4f3940499a1459177d175a88673e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: -- GitLab