From fdb88788d3e562dd57e50a8efbdce0e529b0ea96 Mon Sep 17 00:00:00 2001 From: Erno Lokkila <eolokk@utu.fi> Date: Sun, 3 Mar 2019 17:51:25 +0200 Subject: [PATCH] Game win now possible --- Assets/Prefab/GameWin.prefab | 32 +++++++++++ Assets/Prefab/GameWin.prefab.meta | 7 +++ Assets/Scripts/GameEnd.meta | 8 +++ Assets/Scripts/GameEnd/MoveRandomly.cs | 29 ++++++++++ Assets/Scripts/GameEnd/MoveRandomly.cs.meta | 11 ++++ Assets/Scripts/GameEnd/WinGame.cs | 60 ++++++++++++++++++++ Assets/Scripts/GameEnd/WinGame.cs.meta | 11 ++++ Assets/Sprites/Ground.xcf | Bin 479166 -> 532985 bytes 8 files changed, 158 insertions(+) create mode 100644 Assets/Prefab/GameWin.prefab create mode 100644 Assets/Prefab/GameWin.prefab.meta create mode 100644 Assets/Scripts/GameEnd.meta create mode 100644 Assets/Scripts/GameEnd/MoveRandomly.cs create mode 100644 Assets/Scripts/GameEnd/MoveRandomly.cs.meta create mode 100644 Assets/Scripts/GameEnd/WinGame.cs create mode 100644 Assets/Scripts/GameEnd/WinGame.cs.meta diff --git a/Assets/Prefab/GameWin.prefab b/Assets/Prefab/GameWin.prefab new file mode 100644 index 0000000..ab55e89 --- /dev/null +++ b/Assets/Prefab/GameWin.prefab @@ -0,0 +1,32 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &4334850820553036048 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2388334960364419616} + m_Layer: 0 + m_Name: GameWin + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2388334960364419616 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4334850820553036048} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 4.5898275, y: 3.887589, z: 0.94433594} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} diff --git a/Assets/Prefab/GameWin.prefab.meta b/Assets/Prefab/GameWin.prefab.meta new file mode 100644 index 0000000..d3c5c32 --- /dev/null +++ b/Assets/Prefab/GameWin.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 80a61f8911aa37046a2d5e13d579c221 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/GameEnd.meta b/Assets/Scripts/GameEnd.meta new file mode 100644 index 0000000..c8eeb41 --- /dev/null +++ b/Assets/Scripts/GameEnd.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: cf62eacc43e8a40469118b61f12a5364 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/GameEnd/MoveRandomly.cs b/Assets/Scripts/GameEnd/MoveRandomly.cs new file mode 100644 index 0000000..9db50ad --- /dev/null +++ b/Assets/Scripts/GameEnd/MoveRandomly.cs @@ -0,0 +1,29 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class MoveRandomly : MonoBehaviour +{ + // Start is called before the first frame update + void Start() + { + StartCoroutine("moveAround"); + } + + private IEnumerator moveAround() { + while (true) + { + float moveTime = Random.value * 2; + float timeSpent = 0; + Vector3 direction = new Vector3(Random.value*2-1,Random.value*2-1, 0); + + while (timeSpent < moveTime) + { + transform.position = transform.position + direction*0.01f; + yield return null; + timeSpent += Time.deltaTime; + + } + } + } +} diff --git a/Assets/Scripts/GameEnd/MoveRandomly.cs.meta b/Assets/Scripts/GameEnd/MoveRandomly.cs.meta new file mode 100644 index 0000000..bd2dc1b --- /dev/null +++ b/Assets/Scripts/GameEnd/MoveRandomly.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d3063605b31636c4e9998676be17db5d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/GameEnd/WinGame.cs b/Assets/Scripts/GameEnd/WinGame.cs new file mode 100644 index 0000000..519f1da --- /dev/null +++ b/Assets/Scripts/GameEnd/WinGame.cs @@ -0,0 +1,60 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class WinGame : MonoBehaviour +{ + [SerializeField] + private GameObject housePrefab = null; + [SerializeField] + private GameObject workerPrefab = null; + + private List<GameObject> houses = new List<GameObject>(); + + void Start() + { + StartCoroutine("MoveCamera"); + StartCoroutine("EndGame"); + } + private IEnumerator MoveCamera() + { + while (Camera.main.orthographicSize < 9f) { + Camera.main.orthographicSize += 0.01f; + yield return null; + } + } + + private IEnumerator EndGame() + { + float spawnRate = 5f; + int count = 0; + while (count < 9) + { + GameObject go = Instantiate<GameObject>(housePrefab); + houses.Add(go); + go.transform.position = new Vector3(Random.Range(1f, 14f), Random.Range(1f, 14f),-5); + spawnRate -= 0.5f; + yield return new WaitForSeconds(spawnRate); + count++; + } + for (int i = 0; i < 3; i++) { + GameObject go = Instantiate<GameObject>(housePrefab); + houses.Add(go); + go.transform.position = new Vector3(Random.Range(1f, 14f), Random.Range(1f, 14f), -5); + yield return new WaitForSeconds(spawnRate); + } + count = 0; + while (count < 150) + { + GameObject go = Instantiate<GameObject>(workerPrefab); + int index = Random.Range(0, houses.Count); + go.transform.position = houses[index].transform.position; + go.AddComponent<MoveRandomly>(); + Destroy(go.GetComponent<Collector>()); + Destroy(go.GetComponent<Rigidbody2D>()); + yield return new WaitForSeconds(0.1f); + count++; + } + } + +} diff --git a/Assets/Scripts/GameEnd/WinGame.cs.meta b/Assets/Scripts/GameEnd/WinGame.cs.meta new file mode 100644 index 0000000..a6fa2a8 --- /dev/null +++ b/Assets/Scripts/GameEnd/WinGame.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d3674a5cdecf6e14abe5d88e6f0f7618 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Sprites/Ground.xcf b/Assets/Sprites/Ground.xcf index ff8d57744e11c2991942ea87d2013b2a9293f804..202a670723728f5954a0a05ee868edc8b82fbadb 100644 GIT binary patch delta 40226 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 VAuKu-Zjh3Fyi@lT9}bV}@PA-HH75W7 delta 847 zcmbu*T}YEr7zgnGdA~DUAuM#X8M}}iWwOXZYQ~~a;eCY_8D$c?5F4^Bqg}Y@4TFk8 z`*_J|gx<vRA__lXeMl4$l?g%^U93W)uIj40K4AT~i%`1s!0(*Hd7cNJ=lp!W;mMfy zYDg#(P2HmW0nnF1ap~rq)41SOB;K7*;Y#O^Xm`v#RZf0kwJpU<IS^-20tJu;SsS5F ziY<@J0if&z;5rIa7=ZgUP}KtX_*V0n-cX*t(Qjb$2(YaHG-T)w<>)1_lX=YvG@;q% z<qD0_eZWcr9YG2co9KvAFA((t#|MC(S|Bk2oaA}x^VIEkJzFNXs!DFo5M8dRi?#i7 zCg~BIGK+>Vva5uYyR}{<>TRT%UtCKEO}FrK#%Y?Kmcswy>94?De&B}!M0pZo*CIsx z5X9&Ui1`B$g^!TxTOl3GL%P-u>DdgVAJvfkLy-6TAfFqCJY5O-%QzJGn%z+L4ns+~ zp=57BdGCj+--Eg%1hxAW)R73(*Yi++)j<n9f_7v(w95~n%><!+ABFDqT$nWlNhFg( zDrvb{Q;)s1b<0{Znt*P_p|{<nEKM#OO>ZmXn~N%F9eKz{eyX7W)lrZdsF6YxrhU{( z7DebF9k#i3Qk1$VM#TntDMfvBhWhC|U7|s{PD91!?6oMYfVq<5|7tS>)yBrZ`C-r^ -- GitLab