1 using UnityEngine;
2 using System.Collections;
3 using UnityEngine.SceneManagement;
4
5 public class GameScript : MonoBehaviour {
6
7 //Drag Prefabs
8 public GameObject bridgeObstacle;
9 public GameObject bridgeObstacleAR;
10 private GameObject bridgeObstacleChoosen;
11 public GameObject hurdleObstacle;
12 public GameObject coinPoints;
13
14 GameObject runnerObj;
15 Animator animatorCat;
16
17 //Arrays
18 ArrayList arrBridges;
19 ArrayList arrHurdles;
20
21 float bridgeMoveSpeed = 2.5f;
22
23 //Game Over
24 int gameOverCounter = 0;
25 bool isGameOver = false;
26
27 //Audio
28 AudioSource[] audioSources;
29
30 int totalScore;
31
32 //Get text
33 GameObject endResult;
34
35 // Use this for initialization
36 void Start () {
37
38 //Initialize arrays
39 arrBridges = new ArrayList();
40 arrHurdles = new ArrayList();
41
42 //Get Cat Animator
43 animatorCat = GetComponent<Animator>();
44
45 //Get Runner Obj
46 runnerObj = GameObject.Find("KittenRunner");
47
48 //Get Sounds
49 audioSources = GameObject.Find("Sounds").GetComponents<AudioSource>();
50
51 //All Text
52 endResult = GameObject.Find("EndResult");
53 endResult.SetActive(false);
54
55 }
56
57 // Update is called once per frame
58 void Update () {
59
60 if (isGameOver == false)
61 {
62 if (Input.GetMouseButtonDown(0) || Input.GetKeyDown(KeyCode.Space))
63 {
64 animatorCat.SetTrigger("jump");
65 audioSources[1].Play();
66 }
67
68 //Add and Move Bridges
69 addBridges();
70 moveBridges();
71
72 //Add and Move Hurdles
73 addHurdles();
74 moveHurdles();
75 }
76
77 }
78
79 //Add bridges
80 void addBridges()
81 {
82 //Add Bridges in start
83 if (arrBridges.Count == 0)
84 {
85 for (int i = 0; i < 8; i++)
86 {
87 if (PlayerPrefs.GetString("GameMode") == "AR")
88 {
89 bridgeObstacleChoosen = bridgeObstacleAR;
90 }
91 else
92 {
93 bridgeObstacleChoosen = bridgeObstacle;
94 }
95
96 Vector3 bridgePosition = bridgeObstacleChoosen.transform.position;
97 bridgePosition.z = bridgeObstacleChoosen.transform.position.z + bridgeObstacleChoosen.GetComponent<BoxCollider>().size.z * i;
98 GameObject bridgeObj = Instantiate(bridgeObstacleChoosen, bridgePosition, bridgeObstacleChoosen.transform.rotation) as GameObject;
99 arrBridges.Add(bridgeObj);
100 }
101 }
102
103 //Add One Bridge
104 if (arrBridges.Count < 8)
105 {
106 if (PlayerPrefs.GetString("GameMode") == "AR")
107 {
108 bridgeObstacleChoosen = bridgeObstacleAR;
109 }
110 else
111 {
112 bridgeObstacleChoosen = bridgeObstacle;
113 }
114
115 GameObject lastBridgePositonObj = arrBridges[arrBridges.Count - 1] as GameObject;
116 Vector3 lastBridgePosition = lastBridgePositonObj.transform.position;
117 lastBridgePosition.z = lastBridgePositonObj.transform.position.z + bridgeObstacleChoosen.GetComponent<BoxCollider>().size.z;
118 GameObject singleBridgeObj = Instantiate(bridgeObstacleChoosen, lastBridgePosition, bridgeObstacleChoosen.transform.rotation) as GameObject;
119 arrBridges.Add(singleBridgeObj);
120 }
121
122 }
123
124 //Move Bridges
125 void moveBridges()
126 {
127 ArrayList arrTempBridges = new ArrayList(arrBridges);
128
129 foreach (GameObject item in arrBridges)
130 {
131 if (item.transform.position.z >= 190)
132 {
133 //Move
134 item.transform.position = new Vector3(item.transform.position.x, item.transform.position.y, item.transform.position.z - (bridgeMoveSpeed * Time.deltaTime));
135 }
136 else
137 {
138 arrTempBridges.Remove(item);
139 Destroy(item);
140 }
141 }
142
143 arrBridges = arrTempBridges;
144 }
145
146 //Add Hurdles
147 void addHurdles()
148 {
149 //Add Hurdles in start
150 if (arrHurdles.Count == 0)
151 {
152 for (int i = 0; i < 10; i++)
153 {
154 //Main container
155 GameObject mainContainerObj = new GameObject();
156
157 //Add Hurdle
158 Vector3 hurdlePosition = hurdleObstacle.transform.position;
159 hurdlePosition.z = hurdleObstacle.transform.position.z + i * 5;
160 GameObject hurdleObj = Instantiate(hurdleObstacle, hurdlePosition, hurdleObstacle.transform.rotation) as GameObject;
161
162 //Main container position
163 mainContainerObj.transform.position = hurdleObj.transform.position;
164
165 //Add hurdle in main container
166 hurdleObj.transform.SetParent(mainContainerObj.transform);
167
168 if (Random.Range(1, 100) > 50)
169 {
170 //Add coins
171 Vector3 coinsPosition = hurdleObj.transform.position;
172 coinsPosition.y = hurdleObj.GetComponent<BoxCollider>().size.y - hurdleObj.GetComponent<BoxCollider>().size.y / 2;
173 GameObject coinObj = Instantiate(coinPoints, coinsPosition, coinPoints.transform.rotation) as GameObject;
174 coinObj.transform.SetParent(mainContainerObj.transform);
175 }
176
177 //Add in array
178 arrHurdles.Add(mainContainerObj);
179 }
180 }
181
182 //Add One Hurdle
183 if (arrHurdles.Count < 10)
184 {
185 //Main container
186 GameObject mainContainerObj = new GameObject();
187
188 GameObject lastHurdlePositonObj = arrHurdles[arrHurdles.Count - 1] as GameObject;
189 Vector3 lastHurdlePosition = lastHurdlePositonObj.transform.position;
190 lastHurdlePosition.z = lastHurdlePositonObj.transform.position.z + gamePlayValue();
191 GameObject singleHurdleObj = Instantiate(hurdleObstacle, lastHurdlePosition, hurdleObstacle.transform.rotation) as GameObject;
192
193 //Main container position
194 mainContainerObj.transform.position = singleHurdleObj.transform.position;
195 //Add hurdle in main container
196 singleHurdleObj.transform.SetParent(mainContainerObj.transform);
197
198 //Coins
199 if (Random.Range(1, 100) > 50)
200 {
201 //Add coins
202 Vector3 coinsPosition = singleHurdleObj.transform.position;
203 coinsPosition.y = singleHurdleObj.GetComponent<BoxCollider>().size.y - singleHurdleObj.GetComponent<BoxCollider>().size.y / 2;
204 GameObject coinObj = Instantiate(coinPoints, coinsPosition, coinPoints.transform.rotation) as GameObject;
205 coinObj.transform.SetParent(mainContainerObj.transform);
206 }
207
208
209 //Add in array
210 arrHurdles.Add(mainContainerObj);
211 }
212 }
213
214 //Move Hurdles
215 void moveHurdles()
216 {
217 ArrayList arrTempHurdles = new ArrayList(arrHurdles);
218
219 foreach (GameObject item in arrHurdles)
220 {
221 if (item.transform.position.z >= 190)
222 {
223 //Move
224 item.transform.position = new Vector3(item.transform.position.x, item.transform.position.y, item.transform.position.z - (bridgeMoveSpeed * Time.deltaTime));
225 }
226 else
227 {
228 arrTempHurdles.Remove(item);
229 Destroy(item);
230 }
231 }
232
233 arrHurdles = arrTempHurdles;
234 }
235
236 float gamePlayValue()
237 {
238 float gameValue = 2.3f;
239
240 if (totalScore < 5)
241 {
242 gameValue = 3.0f;
243 }
244 else if (gameValue < 10)
245 {
246 gameValue = 2.7f;
247 }
248 else if (gameValue < 20)
249 {
250 gameValue = 2.5f;
251 }
252 else if (gameValue < 30)
253 {
254 gameValue = 2.4f;
255 }
256 else
257 {
258 gameValue = 2.3f;
259 }
260
261 return gameValue;
262 }
263
264 bool isHitWait = false;
265 void OnTriggerEnter(Collider other)
266 {
267
268 if (other.tag == "coin")
269 {
270 totalScore++;
271 audioSources[3].Play();
272 Destroy(other.gameObject);
273 }
274
275 if (other.tag == "hurdle")
276 {
277 if (!isHitWait)
278 {
279 Debug.Log("Hit");
280
281 //Hit Wait Logic
282 isHitWait = true;
283 Invoke("isHitWaitM", 1);
284
285 //Colide sound
286 audioSources[2].Play();
287
288 //Colide Animation
289 animatorCat.SetTrigger("hit");
290
291 gameOverCounter++;
292 if (gameOverCounter == 3)//Three Chance
293 {
294 isGameOver = true;
295
296 //GameOver Animation
297 animatorCat.SetTrigger("end");
298
299 gameOver();
300
301 }
302
303 }
304 }
305 }
306
307 void isHitWaitM()
308 {
309 if (isGameOver == false)
310 {
311 isHitWait = false;
312 }
313 }
314
315 void gameOver()
316 {
317 Debug.Log("Game Over");
318
319 //End Result UI
320 endResultUI();
321
322 }
323
324 void endResultUI()
325 {
326 //Set values
327 endResult.SetActive(true);
328 GameObject.Find("lblERScore").GetComponent<TextMesh>().text = "Score : " + totalScore;
329
330 }
331
332 }
Drag Prefabs
Arrays
Game Over
Audio
Get text
Use this for initialization
Initialize arrays
Get Cat Animator
Get Runner Obj
Get Sounds
All Text
Update is called once per frame
Add and Move Bridges
Add and Move Hurdles
Add bridges
Add Bridges in start
Add One Bridge
Move Bridges
Move
Add Hurdles
Add Hurdles in start
Main container
Add Hurdle
Main container position
Add hurdle in main container
Add coins
Add in array
Add One Hurdle
Main container
Main container position
Add hurdle in main container
Coins
Add coins
Add in array
Move Hurdles
Move
Hit Wait Logic
Colide sound
Colide Animation
if (gameOverCounter == 3)Three Chance
GameOver Animation
End Result UI
Set values