• Tidak ada hasil yang ditemukan

Tampilan Splash Screen

Dalam dokumen BAB IV IMPLEMENTASI DAN PENGUJIAN (Halaman 26-37)

4.3.2 Implementasi Pemodelan Animasi Objek

4.3.3.1. Tampilan Splash Screen

Berikut adalah penulisan kode pada halaman menu utama, yang merupakan halaman pertama saat kita membuka aplikasi ini. Tampilan splash screen ini di buat dalam scene yang diberi nama splash screen. Kode dibawah dapat dijelaskan bagaimana scenetampilan splash screen hanya berjalan selama 5 detik saja. Ketika waktu yang berhitung mundur berjalan sudah mencapai detik ke-0, maka aplikasi akan melanjutkan ke scene selanjutnya. Halaman tersebut ditampilkan secara popup dengan tipe slideshow. Berikut merupakan potongan kode program pada scene splash screen :

//Kode membuat tampilan splash screen

public class SplashScreen : MonoBehaviour { public int DelayTime;

public string NextLevel; void Start ()

{

// Mengatur lebar dan tinggi gambar

guiTexture.pixelInset = new Rect (-400, 0, Screen.width, Screen.height); StartCoroutine (LoadNextScene ()); } void Update () { } IEnumerator LoadNextScene () {

// Memanggil fungsi delay selama beberapa detik

yield return new WaitForSeconds (DelayTime); if (NextLevel != "")

{

// Memanggil scene lain dalam sebuah project Application.LoadLevel(1);

} }

Gambar 4.30Tampilan Splash Screen 4.3.3.2. Tampilan Menu Utama

Pada scene menu utama terdapat empat buah menu pilihan yaitu play

game, countinue, about, dan quit. Sceneini merupakan scene utama

darikeseluruhan scene, karena semua scene yang dibuka dapat kembali ke scene menu utama ini. Kode di bawah merupakan kode yang menggambarkan bagaimana akibat dari aktivitas yang dilakukan oleh user pada menu utama. Seperti ketika button play gamedi tekan maka scene akan berpindah ke scene 2 yaituscene halaman game labirin level satu. Lalu ketika tombol countinue di tekan makan aplikasi akan menampilkan halaman yang tadi dimainkan. Ketika button

about atau di tekan maka akan menampilkan slideshow berisi informasi mengenai

aplikasi dan pembuat aplikasi tersebut. Dan ketika button quit di sentuh maka akan keluar dari aplikasi

//Kode Membuat Menu Utama

Public class MainMenu : MonoBehaviour { public GUISkin skin;

public GUITexture myguiTexture; void OnGUI()

{

GUI.skin = skin;

// Mengatur lebar dan tinggi gambar

myguiTexture.pixelInset = new Rect (-400, 0, Screen.width, Screen.height);

// Mengatur lebar dan tinggi tombol button Play Game

// Jika play game ditekan maka akan menampilkan halaman permainan labirin GUI.Label (new Rect (10, 10, 150, 50), "");

if (GUI.Button (new Rect (10, 200, 300, 50), "Play Game")) { PlayerPrefs.SetInt("Level Completed", 0); Application.LoadLevel (2); } if(PlayerPrefs.GetInt("Level Completed") > 0) {

// Mengatur lebar dan tinggi tombol button Continue

// Jika continue ditekan maka akan menampilkan halaman permainan if (GUI.Button(new Rect(10,270,300,50), "Continue"))

{

Application.LoadLevel(PlayerPrefs.GetInt("Level Completed")); }

}

// Mengatur lebar dan tinggi tombol button About

// Jika about ditekan maka akan menampilkan halaman about if (GUI.Button (new Rect (10, 350, 300, 50), "About"))

{

PlayerPrefs.SetInt("Level Completed", 0); Application.LoadLevel (5);

}

// Mengatur lebar dan tinggi tombol button Quit // Jika quit ditekan maka akan keluar dari aplikasi

if (GUI.Button(new Rect(10,650,200,50), "Quit")) {

Application.Quit(); }

} }

Gambar 4.31 Tampilan Menu Utama 4.3.3.3. Tampilan Scene Game Labirin

Halaman ini dapat di akses ketika memilih menu play game yang ada pada halaman menu utama. Halaman game labirin ini berisi karakter utama, karakter musuh, objek labirin, objek rintangan dan objek hadia. Game labirin ini terdiri dari tiga level yang berbeda. Kode di bawah merupakan kode yang menggambarkan bagaimana akibat dari aktivitas yang dilakukan oleh user pada saat memainkan permainan. Kode dibawah ini menjelaskan bagaimana semua objek bekerja.

Gambar 4.32 Scene Game Labirin level 1 // kode membuat musuh atau karakter musuh bergerak public class Bergerak : MonoBehaviour {

public Transform[] TitikBergerak; public float KecepatanBergerak; private int currentPoint; void Start ()

{

transform.position = TitikBergerak [0].position; currentPoint = 0; } void Update () { if(transform.position == TitikBergerak[currentPoint].position) { currentPoint ++; } if (currentPoint >= TitikBergerak.Length) { currentPoint = 0; } transform.position = Vector3.MoveTowards (transform.position, TitikBergerak [currentPoint].position, KecepatanBergerak * Time.deltaTime);

// kode membuat pemain atau karakter utama bergerak dan merespon sesuatu public class Player : MonoBehaviour {

public GameManager manager;

public GameObject KembangApi; public float KecepatanBergerak; private float maxSpeed = 5f; private Vector3 input; private Vector3 spawn; public AudioClip[] audioClip; // Use this for initialization void Start ()

{

spawn = transform.position;

manager = manager.GetComponent <GameManager> (); }

void FixedUpdate () {

// Fungsi mengatur kecepatan bergerak karakter utama

input = new Vector3 (Input.GetAxisRaw ("Horizontal"), 0, Input.GetAxisRaw ("Vertical"));

if (rigidbody.velocity.magnitude < maxSpeed) {

rigidbody.AddForce (input * KecepatanBergerak); } if (transform.position.y < -2) { die(); } }

void OnCollisionEnter(Collision other) {

// Fungsi ketika karakter utama menyentuh objek musuh if (other.transform.tag == "Musuh") {

die(); }

}

void OnTriggerEnter(Collider other) {

// Fungsi ketika karakter utama menyentuh objek musuh if (other.transform.tag == "Musuh") {

die (); }

//Fungsi ketika karakter utama menyentuh objek finish if (other.transform.tag == "Masuk") { PlaySound (1); Time.timeScale = 0f; manager.CompleteLevel (); } }

// Fungsi memainkan suara void PlaySound(int clip) {

audio.clip = audioClip [clip]; audio.Play ();

}

// Fungsi reaksi ketika karakter utama menyentuh objek musuh atau objek rintangan

void die () { Instantiate(KembangApi, transform.position, Quaternion.Euler(270,0,0)); transform.position = spawn ; } }

// kode membuat objek rintangan bergerak public class Rintangan : MonoBehaviour {

public float DelayTime; void Start () { StartCoroutine (Go ()); } IEnumerator Go() { while (true) { animation.Play();

//Kode Game Manager

public class GameManager : MonoBehaviour {

//Pengaturan Hadia

public int currentScore; public int highscore; public int HadiaCount;

private int TotalHadiaCount; public GameObject HadiaParent;

public int currentLevel = 0; public int unlockedLevel;

//Pengaturan Waktu public Rect timerRect;

public Color warningColorTime; public Color defaultColorTime; public float startTime;

private string currentTime;

//Pengaturan GUI Skin public GUISkin skin;

private bool Completed = false; private bool ShowWinScreen = false;

public int winScreenWidth, winScreenHight; void Update ()

{

if (!Completed) {

startTime -= Time.deltaTime;

currentTime = string.Format ("{0:0.0}", startTime); if (startTime <= 0)

void Start() {

TotalHadiaCount = HadiaParent.transform.childCount;

if (PlayerPrefs.GetInt ("Level Completed") > 0) {

currentLevel = PlayerPrefs.GetInt ("Level Completed"); } else { currentLevel = 2; } }

public void CompleteLevel() { ShowWinScreen = true; Completed = true; } void LoadNextLevel() { Time.timeScale = 1f; if (currentLevel < 4) { currentLevel += 1; print (currentLevel); SaveGame(); Application.LoadLevel (currentLevel); } else {

print ("Selamat Kamu Memenangkan Permainan.."); }

}

void SaveGame() {

PlayerPrefs.SetInt("Level Completed", currentLevel); PlayerPrefs.SetInt("Level " + currentLevel.ToString() + " score", currentScore);

{

GUI.skin = skin; if (startTime < 5f) {

skin.GetStyle ("Timer").normal.textColor = warningColorTime; } else { skin.GetStyle ("Timer").normal.textColor = defaultColorTime; }

GUI.Label (timerRect, currentTime, skin.GetStyle("Timer")); GUI.Label (new Rect (45, 100, 200, 200), HadiaCount.ToString() + "/" + TotalHadiaCount.ToString ());

if (ShowWinScreen) {

Rect winScreenRect = new Rect(Screen.width/2 -

(Screen.width *.5f/2), Screen.height/2 - (Screen.height *.5f/2), Screen.width *.5f, Screen.height *.5f);

GUI.Box(winScreenRect, "Kamu Mau Lanjut ?"); int gameTime = (int)startTime;

currentScore = HadiaCount * gameTime; if (GUI.Button(new Rect (winScreenRect.x +

winScreenRect.width - 170, winScreenRect.y + winScreenRect.height - 60, 150,40), "Continue"))

{

LoadNextLevel(); }

if (GUI.Button(new Rect (winScreenRect.x + 20, winScreenRect.y + winScreenRect.height - 60, 100,40), "Quit"))

{

Application.LoadLevel(1); Time.timeScale = 1f; }

GUI.Label(new Rect(winScreenRect.x + 20, winScreenRect.y + 40,300,50), currentScore.ToString() + " Score");

GUI.Label(new Rect(winScreenRect.x + 20, winScreenRect.y + 60,300,50), "Completed Level " + currentLevel);

} }

Dalam dokumen BAB IV IMPLEMENTASI DAN PENGUJIAN (Halaman 26-37)

Dokumen terkait