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



Gõ tìm kiếm nhanh...