Scriptul "CarController.
cs" si descrierea liniilor de cod folosite:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class CarController : MonoBehaviour {
// Declararea publica a unei componente Rigidbody2D aferente masinutei jucatorului.
public Rigidbody2D rb;
// Initializarea privata a variabilelor ajutatoare.
bool move = false;
bool isGrounded = false;
int direction = 1;
// Declararea publica a vitezelor de miscare, respectiv de rotatie.
public float speed = 25f;
public float rotationSpeed = 7f;
// Verificarea apasarii tastelor necesare miscarii sau rotirii masinutei.
void Update ()
{
if(Input.GetKey(KeyCode.D))
{
move = true;
direction = 1;
}
else if (Input.GetKey(KeyCode.A))
{
move = true;
direction = -1;
}
else
{
move = false;
}
// Functia de miscare si de rotire a masinutei.
private void FixedUpdate()
{
if(move==true)
{
if (isGrounded)
{
rb.AddForce(direction * transform.right * speed * Time.fixedDeltaTime * 100f,
ForceMode2D.Force);
}
else
{
rb.AddTorque(-direction * rotationSpeed * Time.fixedDeltaTime * 100f);
}
}
}
// Functiile de verificare a coliziunii cu suprafatele de miscare .
private void OnCollisionEnter2D()
{
isGrounded = true;
}
private void OnCollisionExit2D()
{
isGrounded = false;
}
}
Scriptul "CameraController.cs" si descrierea liniilor de cod folosite:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class CameraController : MonoBehaviour {
// Componenta Transform a masinutei, preluata printr-o declarare publica.
public Transform target;
// Vectorul cu 3 dimensiuni declarat public ce ajuta la gasirea unei valori potrivite privind
pozitia camerei.
public Vector3 offset;
// Functia de miscare a camerei astfel incat aceasta sa urmareasca masinuta .
private void LateUpdate()
{
Vector3 newPos = target.position + offset;
newPos.z = transform.position.z;
transform.position = newPos;
}
}
Scriptul "Options.cs" si descrierea liniilor de cod folosite:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
using UnityEngine.UI;
using System;
public class Options : MonoBehaviour {
// Declararea variabilelor publice.
public GameObject pauseMenu;
public Text timerText;
// Declararea valorilor ajutatoare.
private bool isGamePaused = false;
private bool isFinished = false;
private void Start()
{
// Ascunderea cursorului la pornirea jocului.
Cursor.visible = false;
// Initializarea valorilor ajutatoare.
isGamePaused = false;
isFinished = false;
Time.timeScale = 1f;
}
void Update () {
// Cronometrul.
TimeSpan timeSpan = TimeSpan.FromSeconds(Time.timeSinceLevelLoad);
timerText.text = string.Format("{0:D2}:{1:D2}:{2:D3}", timeSpan.Minutes,
timeSpan.Seconds, timeSpan.Milliseconds);
// Restart.
if (Input.GetKeyDown(KeyCode.R))
{
if (isGamePaused == true)
if(isFinished==false)
Resume();
else
{
isFinished = false;
Resume();
}
SceneManager.LoadScene("Main");
}
// Pauza/reluare.
if(Input.GetKeyDown(KeyCode.Space))
{
if(isGamePaused)
{
Resume();
}
else
{
Pause();
}
// Exit
if(Input.GetKeyDown(KeyCode.Escape))
{
Application.Quit();
}
}
// Functia propriu-zisa de pauza.
public void Pause()
{
pauseMenu.SetActive(true);
Time.timeScale = 0f;
isGamePaused = true;
}
// Functia propriu-zisa de reluare.
void Resume()
{
if (isFinished == false)
{
pauseMenu.SetActive(false);
Time.timeScale = 1f;
isGamePaused = false;
}
}
// Functia apelata in "FinishLineScript.cs" la contactul jucatorului cu triggerul .
public void Finish()
{
pauseMenu.SetActive(true);
Time.timeScale = 0f;
isGamePaused = true;
isFinished = true;
}
}
Scriptul "Death.cs" si descrierea liniilor de cod folosite:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
public class Death : MonoBehaviour {
// Verificarea coliziunii masinutei cu un trigger invizibil ce determina daca masinuta a
cazut de pe traseu.
private void OnTriggerEnter2D(Collider2D collision)
{
// Resetarea nivelului in cazul in care jucatorul a cazut de pe traseu.
SceneManager.LoadScene("Main");
Scriptul "FinishLine.cs" si descrierea liniilor de cod folosite:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class FinishLineScript : MonoBehaviour {
// Declararea obiectului ce va contine scriptul "Options.cs".
private Options opts;
void Start()
{
// Cautarea scriptului "Options.cs"
opts = FindObjectOfType<Options>();
}
// Apelarea functiei Finish din scriptul "Options.cs" la contactul jucatorului cu triggerul .
private void OnTriggerEnter2D(Collider2D collision)
{
opts.Finish();
}
}