You are on page 1of 22

Tehnička Škola

Maturski rad iz programiranja


Izrada igrice za android platformu

Mentor: Učenik:
Miodrag Vasić, prof Stefan Ćirić, IV-4

Pirot, Jun 2014. god.


SADRŽAJ
Strana
1. Uvod 3
1.1. Android 3
1.2. Želja 3
2. Opis Igre 4
2.1. "Mario All Over Again" 4
2.2. Cilj igre 4
2.3. Način igranja 4
3. Interfejs 5
3.1. Glavni meni 5
3.2. U
igri...............................................................................................................
...............6
4. Izrada igre 1 7
4.1. Tehnologija korišćena za izradu igre 7
4.1. Mali prikaz izrade igre u Unity Game Engine 7
5. Izrada igre 2 - Programiranje 8
5.1. Skripta - ParallaxPozadine 8
5.2. Skripta - Moving 9
5.3. Skripta - ESpawn 10
5.4. Skripta - MenuScript (jedno od mnogobrojnih dugmića) 11
5.5. Skripta - Done 12
5.6. Skripta – lik 13
5.7. Skripta - Score 14
5.8. Skripta - HS 15
6. Literatura 16
1. Uvod

Android

Android je operativni sistem zasnovan na Linuks jezgru


prvenstveno dizajniran za mobilne uređaje sa ekranom osetljivim
na dodir, kao što su pametni telefoni i tablet uređaji. Android je
razvila istoimena kompanija koju je kompanija Gugl finansijski
podržavala, a kasnije i kupila, 2005. godine. Android je
predstavljen 2007. godine zajedno sa osnivanjem udruženja Open
Handset Alajans (OHA) (Open Handset Alliance, OHA):
konzorcijuma hardverskih, softverskih i telekomunikacionih
kompanija posvećenih razvoju otvorenih standarda za mobilne
uređaje. Prvi Android telefon je prodat u oktobru 2008. Godine.
Android poseduje veliki broj aplikacija drugih proizvođača, koje su
dostupne putem prodavnica aplikacija kao što su Gugl
plej ili Amazon Epstor, ili putem preuzimanja i instalacije APK
datoteka aplikacije sa veb-sajtova drugih proizvođača.

1.2. Želja

Pored toga što sam najviše svog vremena provodio igrajući igre na
mobilnom uređaju i računaru, jednog dana sam odlučio i da
probam da ih pravim. Te je tako nastao i ovaj maturski rad, uz
puno uloženog truda, vremena, mozganja i kucanja, ali i puno
ljubavi uz želju da jednog dana programiranje i realizovanje mojih
ideja bude moj posao.
2. Opis igre

2.1. "Mario All Over Again"

Mario, ponovo traga za princezom, ali ovoga puta u igri bez kraja
skupljajući novčiće radi poena. Ovoga puta Mario ima potpuno
nove i njemu nepoznate neprijatelje iz popularne igrice “Angry
Birds”. Iako su poznate ptice i prasići međusobni neprijatelji u igri
“Angry Birds” u ovoj igri su saveznici sa ciljem da zaustave Maria i
još niko nije otkrio razlog njihovog čudnog ponašanja.
2.2. Cilj igre

U igri, igrač kontroliše glavnog lika “Super Maria”. Jedini cilj koji
igra ima nije definisan u njoj. Zavisi od samog igrača i njegovog
takmičarskog duha, a to je “High Score” koji igrač postiže
skupljanjem novčića.
2.3. Način igranja

Igrač koristi svoj dodir prsta da bi time skočio Mario i to je sve što
je potrebno koristiti. Prilično lako. Igrač može svakog trenutka da
pauzira ili izađe iz igre a njegov trenutni skor će ostati zapamćen i
može nastaviti kasnije tamo gde je stao.
3. Interfejs

3.1. Glavni meni

Glavni meni igre se sastoji iz sledećih stavki (obeleženo na slici


ispod):
Dugmića:
“Play it now!” – Vodi u uvodni ekran sa kratkom pričom;
“Credits”
“Exit” – Vodi u izlazni ekran za izlazak iz igrice;
High Score
3.2. U igri

U samoj igri možemo videti:


Glavnog lika “Super Mario” kome igrač upravlja;
Neprijatelje: “Green Pig” i “Angry Bird”;
Novčić;
Trenutni “Score”;
I dugme “Meni”.
4. izrada igre 1
4.1. Tehnologija korišćena za izradu igre

Unity 3D je softverski sistem namenjen kreiranju i razvoju


računarskih igara i drugih interaktivnih multimedijalnih aplikacija
. Unity dolazi sa alatom koji omogućava kreiranje realističnih 3D
okruženja, tvz . " Unity Editor ". Da bi iskustvo bilo upotpunjeno ,
vašim kreacijama možete udahnuti život koristeći 3 raspoloživa
jezika .Zahvaljujući Mono sistemu , Unity omogućava izvršavanje
skripti sa C# , JavaScript i Boo. Mono kompajler ima mogućnost
prevođenja vašeg izvornog koda za vreme rada aplikacije , a Unity
to u potpunosti iskorišćava. Trenutno je sa ovim Game-Enginom
moguće razvijati aplikacije za Windows , MacOS , iOS , Android i
Nintendo Wii, PlayStation 3 i Xbox 360. Osim klasičnih Standalone
aplikacija , zahvaljujući Unity veb plejeru omogućeno je pokretanja
vaše aplikacije direktno iz internet brauzera , bez potrebe za
direktnim preuzimanjem i instalacijom . Dovoljno je na računaru
imati instaliran Unity veb plejer .

4.2. Mali prikaz izrade igre u Unity Game Engine

Na slici ispod je prikaz izrade glavnog menija. Elementi obeleženi


brojem 1. su elementi iz glavnog menija. Elementi obeleženi brojem
2. su scene, odnosno Meni, UvodniEkran, Game, Credits i
ExitScreen.
5. Izrada igre 2 – programiranje

5.1. Skripta – ParallaxPozadine

-Pomeranje pozadine koje stvara utisak trčanja glavnog lika

using UnityEngine;
using System.Collections;

public class ParallaxPozadine : MonoBehaviour {

public float speed = 0;

// Update is called once per frame


void Update () {

renderer.material.mainTextureOffset = new Vector2


((Time.time * -speed)%1, 0f); //(-speed,speed)-Pravac

}
}
5.2. Skripta – Moving

- Kretanje GameObject-a na kome je prilepljena skripta u željenom


pravcu željenom brzinom. Uništavanje novčića pri sudaru sa
igračem i skupljanje poena.

using UnityEngine;
using System.Collections;
public class Moving: MonoBehaviour {

public Vector2 speed = new Vector2(10, 10);


public Vector2 direction = new Vector2(-1, 0);
private Vector2 movement;

void Update ()
{
movement = new Vector2 (
speed.x * direction.x,
speed.y * direction.y);

}
void FixedUpdate()
{
rigidbody2D.velocity = movement;
}

void OnTriggerEnter2D (Collider2D col){


if ((this.gameObject.name == "Coin" ||
this.gameObject.name == "Coin(Clone)") &&
col.gameObject.name=="22_20") {

PlayerPrefs.SetInt("Score",PlayerPrefs.GetInt("Score")+1);
Destroy(gameObject);

if(PlayerPrefs.GetInt("HS")<PlayerPrefs.GetInt("Score")){

PlayerPrefs.SetInt("HS",PlayerPrefs.GetInt("Score"));
}
}
}
}

5.3. Skripta – Espawn

- Random stvaranje neprijatelja i novčića u razmaku od 3 sekunde


na mestu praznog GameObject-a koristeći IEnumerator.

using UnityEngine;
using System.Collections;

public class ESpawn : MonoBehaviour {

public GameObject player;

// Use this for initialization


void Start () {
StartCoroutine (EnemySpawn ());

}
IEnumerator EnemySpawn()
{
while (true) {
Instantiate(player, transform.position,
Quaternion.identity);
yield return new
WaitForSeconds(Random.Range(2,5));
}
}

}
5.4. Skripta – MenuScript

- Jedno od mnogobrojnih dugmića za prelazak sa scene na scenu.

using UnityEngine;
using System.Collections;

public class MenuScript : MonoBehaviour


{

void OnGUI()
{

const int buttonWidth = 100;


const int buttonHeight = 60;

// Crtanje Start dugmeta


if (
GUI.Button(
// Center in X, 2/3 of the height in Y
new Rect(
Screen.width / 2 - (buttonWidth / 2),
(2 * Screen.height / 6) - (buttonHeight / 2),
buttonWidth,
buttonHeight
),
"Play it now!"
)
)
{
// Klik = Prelazimo na scenu
// "UvodniEkran",Scena na koju prelazimo
Application.LoadLevel("UvodniEkran");
}
}
}
5.5. Skripta – Done

-Kraj igre kada se igrač sudari sa neprijateljem i resetovanje skora.

using UnityEngine;
using System.Collections;

public class Done : MonoBehaviour {

// Use this for initialization


void Start () {

// Update is called once per frame


void Update () {

void OnCollisionEnter2D(Collision2D Enemy){


if(Enemy.gameObject.tag == "Enemy"){
PlayerPrefs.SetInt("Score",0);
Application.LoadLevel("Meni");
}
}
}
5.6. Skripta – lik

Realizovanje skoka lika.

using UnityEngine;
using System.Collections;

public class lik : MonoBehaviour {

private bool prizemljen =false;

// Update is called once per frame


void Update () {
if(Input.GetMouseButtonDown(0) &&
prizemljen==true){
rigidbody2D.AddForce(Vector2.up*3000);
prizemljen=false;
}
}
void OnCollisionEnter2D(Collision2D zemlja){
if(zemlja.gameObject.tag == "Zemlja"){
prizemljen=true;
}
}

}
Skripta – Score

Realizovanje sistema za skor.

using UnityEngine;
using System.Collections;

public class Score : MonoBehaviour {

// Use this for initialization


void Start () {

// Update is called once per frame


void Update () {
TextMesh x = gameObject.GetComponent ("TextMesh")
as TextMesh;
x.text = PlayerPrefs.GetInt ("Score").ToString();

}
}

Skripta – HS

Realizovanje High Scora-a.


using UnityEngine;
using System.Collections;

public class HS : MonoBehaviour {

// Use this for initialization


void Start () {
TextMesh x = gameObject.GetComponent ("TextMesh")
as TextMesh;
x.text = "HighScore: "+ (PlayerPrefs.GetInt
("HS").ToString());
}
}
6. Literatura

http://sr.wikipedia.org/sr/Android_(operativni_sistem)
http://wiki.unity3d.com/index.php/Scripts
http://answers.unity3d.com

http://docs.unity3d.com/ScriptReference/
Datum predaje: ______________

Komisija:
Predsednik _______________
Ispitivač _______________
Član _______________

Komentar:

Datum odbrane: _____________ Ocena__________


(___)

You might also like