using UnityEngine;
using System.Collections;
public enum GameState { playing, gameover };
public class GameControl : MonoBehaviour {
public Transform platformPrefab;
public static GameState gameState;
private Transform playerTrans;
private float platformsSpawnedUpTo = 0.0f;
private ArrayList platforms;
private float nextPlatformCheck = 0.0f;
void Awake () {
playerTrans = GameObject.FindGameObjectWithTag(“Player”).transform;
platforms = new ArrayList();
SpawnPlatforms(25.0f);
StartGame();
}
void StartGame()
{
Time.timeScale = 1.0f;
gameState = GameState.playing;
}
void GameOver()
{
Time.timeScale = 0.0f; //Pause the game
gameState = GameState.gameover;
GameGUI.SP.CheckHighscore();
}
void Update () {
//Do we need to spawn new platforms yet? (we do this every X meters we climb)
float playerHeight = playerTrans.position.y;
if (playerHeight > nextPlatformCheck)
{
PlatformMaintenaince(); //Spawn new platforms
}
//Update camera position if the player has climbed and if the player is too low: Set gameover.
float currentCameraHeight = transform.position.y;
float newHeight = Mathf.Lerp(currentCameraHeight, playerHeight, Time.deltaTime * 10);
if (playerTrans.position.y > currentCameraHeight)
{
transform.position = new Vector3(transform.position.x, newHeight, transform.position.z);
}else{
//Player is lower…maybe below the cameras view?
if (playerHeight < (currentCameraHeight - 10))
{
GameOver();
}
}
//Have we reached a new score yet?
if (playerHeight > GameGUI.score)
{
GameGUI.score = (int)playerHeight;
}
}
void PlatformMaintenaince()
{
nextPlatformCheck = playerTrans.position.y + 10;
//Delete all platforms below us (save performance)
for(int i = platforms.Count-1;i>=0;i–)
{
Transform plat = (Transform)platforms*;*
if (plat.position.y < (transform.position.y - 10))
{
Destroy(plat.gameObject);
platforms.RemoveAt(i);
}
}
//Spawn new platforms, 25 units in advance
SpawnPlatforms(nextPlatformCheck + 25);
}
void SpawnPlatforms(float upTo)
{
float spawnHeight = platformsSpawnedUpTo;
while (spawnHeight <= upTo)
{
float x = Random.Range(-10.0f, 10.0f);
Vector3 pos = new Vector3(x, spawnHeight, 12.0f);
Transform plat = (Transform)Instantiate(platformPrefab, pos, Quaternion.identity);
platforms.Add(plat);
spawnHeight += Random.Range(5f, 2.5f);
}
platformsSpawnedUpTo = upTo;
}
}[/QUOTE]
[quote]
function OnTriggerEnter(other : Collider){
if (other.gameObject.tag == “Finish”)
{
Destroy(other.gameObject);
rigidbody.velocity = new Vector3(0, 0, 0);
rigidbody.AddForce(new Vector3(0, 700, 0), ForceMode.Force);
}
}
[/quote]