BAB IV. PEMBAHASAN - 13.07.0036 Hening Artdias BAB IV

BAB IV. PEMBAHASAN

4.1. Gameplay “Rare Animal”

  user friendly Animal Hide and Seek for Kids

  level user friendly

  2D Adventure Mengenalkan tubuh hewan next

  Animal Match-Up

  menarik

  level gamplay

  2D Adventure Mengasah kepekaan anak next

  Game “Rare Animal” adalah game edukasi pengenalan satwa langka guna memperkenalkan berbagai jenis satwa yang sedang kritis jumlahnya yang ada di Indonesia. Sumber utama pembuatan game tersebut menggunakan data dari Kementrian Kehutanan serta organisasi konservasi terbesar di dunia yaitu World wide Fund for Nature (WWF).

  Genre, art , serta reward game diambil dari analisa penulis meReview 15

  Animal Coloring Book

  menarik

  level gamplay

  2D adventure Menumbuhkan rasa kepedulian terhadap hewan next

  Reward Keunggulan Junggle Doctor

  Art Genre

Tujuan

Pembuatan

  

Table 4. 1 a.Tabel game dengan keyword "animal"

Nama Game

  game yang paling banyak diunduh pada google play dengan keywordAnimal”. Sebab google play adalah toko resmi terbesar dibuat oleh Google yang menyediakan berbagai macam aplikasi smartphone termasuk game pengguna OS android.

  2D Simulasi/game Belajar mewarnai hewan tidak ada Nama Game Art Genre

  

Tujuan

Pembuatan Reward Keunggulan

  art

  

Table 4. 2 b.Tabel game dengan keyword "animal"

  Berdasarkan Review 15 game dengan keyword animal, penulis menggambil kesimpulan bahwa game dengan genre simulasi adalah game yang paling diminati. Game tersebut mampu menggambarkan realita yang terjadi,

  art interaktif

  3D Simulasi/game Mengenalkan hewan yang ada di kebun binatang tidak ada

  art interaktif Zoo -AR

  3D Simulasi/game Mengetahui gerakan naga tidak ada

  art interaktif Dragon

  3D Simulasi/game Mengenalkan hewan menurut abjad tidak ada

  art interaktif AR Flashcar d

  3D Simulasi/game mewarnai + memvisualisasika n gambar yang sudah diwarnai tidak ada

  Quiver

  interaktif

  3D Simulasi/game Mengenalkan hewan menurut abjad tidak ada

  Suara Hewan

  4D+

  art interaktif Animal

  3D Simulasi/game Menghidupkan karakter tini wini biti dengan 3D tidak ada

  Dunia Tini Wini Biti

  art interaktif

  3D Simulasi/game Mengenalkan gerakan dan suara dinosaurus tidak ada

  art interaktif Dino On My Desk AR

  3D Simulasi/game Mewarnai + memvisualisasika n gambar yang sudah diwarnai tidak ada

  menarik Mewarna i

  gamplay

  2D RPG Penyelamatan satwa upgrad e item

  art interaktif Wonder Zoo

  2D Adventure Mengenalkan suara berbagai hewan tidak ada

1. Genre

  memberi kesan nyata pada palyer. Selain simulasi ditambahkan pula genre mini game agar tidak monoton dan membosankan player.

2. Art

  Yang mendominasi adalah dengan art tiga dimensi. Desain tiga dimensi mampu sinkorn dengan genre simulasi karena sama-sama bertujuan memberikan kesan nyata pada pemainnya. Pembutan karakter 3D agar lebih menarik minat pemain, serta mempertajam ingatan. Menurut penilitian oleh tim Neurobiologi di University of California menemukan hasil bahwa bermain game dengan grafis 3D mampu meningkatkan daya ingat[7]. Melihat dengan sudut pandang 360 derajat juga termasuk keunggulan dari desain tiga dimensi.

  3. Reward

  Reward terbanyak adalah menggunakan next level apabila mampu

  menyelesaikan suatu misi. Dengan data tersebut pemilihan next level menjadi acuan utama menggunakan reward next level.

  4. Alur cerita  Level ke-1 mengajarkan pembelajaran pada pemain bahwa satwa langka tidak seharusnya dikurung dan dimanfaatkan anggota tubuhnya. Karena penyebab utama krisinya jumlah badak Jawa dan badak Sumatra yaitu berburuan untuk dimanfaatkan cula dan dagingnya, sebab dipercaya mampu mengobati suatu macam penyakit.

   Level ke-2 menggambarkan kasus nyata kebekaran hutan kelapa sawit yang berada di Kalimantan. Tidak hanya manusia kebakaran tersebut mengikis keanekaragaman tumbuhan maupun hewan. Yang keberadaanya sangat kritis yaitu orangutan Kalimantan. Pada level ini pemain menghentikan api agar tidak membakar pohon sawit.

   Level ke-3 menceritakan kasus nyata pada karakter gajah Sumatra, hewan tersebut mengalami kepunahan karena penyebab utamnya yaitu pengambil ambil lahan yang menimbulkan konflik sehingga gajah Sumatra turun pada kawasan penduduk untuk mencari makan. Pada level ini player harus membantu pajah Sumatra untuk mendapatkan makanan agar tidak kepalaran.

   Level ke-4 memberikan pembelajaran kepada pemain bahwa membuang sampah sembarangan (terutama di laut) itu dapat mengancam kelangsungan habitat lain. Penyu hijau merupakan spesies prioritas yang terkena dampak tersebut. Oleh sebab itu, pada level ini player ditugaskan untukmengambil sampah guna menjaga kelangusngan habitat penyu hijau.

   Level ke-5 memberi edukasi tempat tinggal satwa tersebut. Sebagai wawasan terhadap pemain bahwa masih banyak satwa yang di Indonesia dalam spesies prioritas. Dari pulau Sumatra, Jawa, Nusa Tenggara, Papua, Maluku, Sulawesi dan Kalimantan. Satwa dalam soal, merupakan satwa dengan Score 100-90 prioritas kepunahan menurut Kementrian Perhutanan.

  Berdasarkan data Review 15 game dengan keyword animal 8 dari 15 game dengan art tiga dimensi rata-rata mempunyai genre game simulasi. Simulasi pada game tersebut hanya menampilkan 3D modeling saja, tidak ada aktifitas yang dilakukan untuk memperoleh Score maupun next level . Sehingga game “Rare Animal” mempunyai kelebihan tersendiri dari game-game di atas.

4.2. Perancangan 2D & 3D Asset

  Perancangan marker menggunakan adobe illustrator (AI), software tersebut mampu merancang bentuk 2D dengan berbagai macam tools sehingga cocok digunakan untuk pembuatan marker yang nantinya akan berbentuk print

  

out. Konsep marker dibuat dalam balutan flat design dan warna-warna yang cerah

  agar menarik mata pemain terutama anak-anak. Selain itu marker dibuat soalah alah atampak atas agar menyatu dengan bentuk 3D yang nantinya muncul saat melakukan scan gambar.

  Selain marker ada beberapa komponen dua dimensi lainnya yaitu karakter hewan, menu utama, tombol play, tombol replay, tombol home, tombol next, tombol back, edukasi satwa, tampilan menang, tampilan kalah, tutorial setiap menuju level berikutnya dan tampilan ketika tamat. Komponen tersebut juga dibuat dengan Adobe illustrator (AI) CS6.

  a. Marker pembukaan dan level 1 digunakan untuk memicu munculnya info hewan-hewan langka berserta informasi jumlah saat ini dan beberapa info lainnya berdasarkan data WWF-Indonesia dalam garis merah kepunahan. Selain untuk menampilkan beberapa informasi marker pertama digunakan sebagai pemicu game pertama yaitu badak Jawa dan badak Sumatra, berlatar tempat di hutan tanah yang lapang diambil view tampak atas.

  Disertai petunjuk bermain berupa text di sisi bawah agar model 3D tidak menutupi tulisan.

  Gambar 4. 1 M arker level 1 game “Rare Animal”

  b. Marker level 2 digunakan untuk memicu munculnya hutan kelapa sawit yang diceriatakan berada di Kalimantan, berlatar tempat hutan yang gundul disertai bebatuan dan semak-semak diambil view tampak atas. Ditambah petunjuk bermain berupa text di sisi samping kanan agar model 3D tidak menutupi tulisan.

  Gambar 4. 2 M arker level 2 game “Rare Animal” c. Marker level 3 digunakan untuk memicu munculnya gajah Sumatra, berlatar tempat di jalan berliku di perkebunan diambil view tampak atas.

  Disertai petunjuk bermain berupa text di sisi samping kanan agar model 3D tidak menutupi tulisan.

  

Gambar 4. 3 M arker level 3 game “Rare Animal”

  d. Marker level 4 digunakan untuk memicu munculnya sampah dan penyu hijau, berlatar tempat di pantai dengan air yang biru dan pasir pantai diambil view tampak atas. Disertai petunjuk bermain berupa text di sisi atas agar model 3D tidak menutupi tulisan.

  Gambar 4. 4 M arker level 4 game “Rare Animal” e. Marker level 5 digunakan untuk memicu munculnya pertanyaan, bergambarkan perta Indonesia guna memvisualisasi pemain dimana hewan tersebut tinggal diambil view tampak atas. Disertai petunjuk bermain berupa text di sisi atas agar model 3D tidak menutupi tulisan.

  Gambar 4. 5 M arker level 5 game “Rare Animal”

  f. Marker bonus by 3Djeebs dapat di download geratis pada link berikut ini http://github.com/maximrouf/RegionCapture

  Gambar 4. 6 Marker bonus game "Rare Animal" Tombol- tombol yang digunakan dalam game “Rare Animal” :

  

Table 4. 2 Table grapich user interface button game “Rare Animal”

  Tombol play berada pada tampilan awal digunakan untuk memulai game “Rare Animal” Tombol home untuk mengembalikan player ke menu awal saat memulai game. Tombol mengerti untuk memulai game setelah mengerti membaca petunjuk.

  Tombol next untuk menuju level berikutnya Tombol replay untuk bermain ulang saat game over. Untuk menunjang ketertarikan pemain dibuat berbagai macam karakter berwarna cerah serta menggambarkan kelucuan satwa liar dengan menggunakan

  

software Adobbe Illustrator (AI) CS6 . Ada pula karakter pemenang yang akan

  muncul pada ujung game “Rare Animal” untuk mengapresiasi pemain yang telah menyelesaikan game.

  Gambar 4. 7 karakter penunjang game "Rare Animal"

  Selain karakter penunjang background merupakan unsur penting pembutan game. Background dibuat simple berwarna cerah senada dengan marker yang dibuat dalam bentuk buku. Berupa 5 background untuk tutorial, 5

  

background untuk menampilkan edukasi sebelum bermain pada level terakhir, 1

background menu utama, 1 background tampilan menang, 1 background tampilan

  kalah dan yang terakhir background meneyelesaikan game

  

Gambar 4. 8 Background tutorial level 1 Gambar 4. 9 Background tutorial level 2

Gambar 4. 11 Background tutorial level 4 Gambar 4. 10 Background tutorial level 3

  Gambar 4. 12 Background tutorial level 5 Gambar 4. 13 Background menu utama Rare Animal Rare Animal

  Gambar 4. 15 Background menang Gambar 4. 14 Background kalah

  

Gambar 4. 16 Tampilan informasi 1 Gambar 4. 17 Tampilan informasi 2

Gambar 4. 18 Tampilan informasi 3 Gambar 4. 19 Tampilan informasi 4

  Gambar 4. 20 Tampilan informasi 5 Gambar 4. 21 Tampilan bonus

  Perancangan asset tiga dimensi menggunakan software 3Ds Max 2013, serta ditunjang dengan 3D modeling gratis yang dapat didownload

  

www.assetstore.unity3D.com dan archive3d.net. Ada 5

  karakter utama yang dibuat dalam bentuk tiga dimensi, yaitu:

  2. Badak Jawa Karakter tersebut dibuat menyerupai dengan Badak Jawa yang sesungguhnya dengan ciri-ciri bercula kecil, berwarna abu-abu, bibir meruncing guna untuk memakan rantai.

  Gambar 4. 22 Badak Jawa Gambar 4. 23 Badak Jawa modeling

  3. Badak Sumatra Karakter badak Sumatra dibuat menyerupai aslinya dengan ciri-ciri fisik mempunyai dua cula, berletinga agak besar, mempunyai warna kulit kemerah-merahan.

  Gambar 4. 25 Badak Sumatra modeling Gambar 4. 24 Badak Sumatra

  4. Gajah Sumatra Karakter gajah Sumatra lebih pendek dibandingan dengan spesies gajah lainnya, tingginya antara 1.7 meter sampai dengan 2,6 meter. Tidak ada ciri khusus dengan gajah lainnya.

  Gambar 4. 27 Gajah Sumatra modeling Gambar 4. 26 Gajah Sumatra

  5. Harimau Sumatra Karakter harimau Sumatra mempunyai ciri-ciri kulitnya yang lebih gelap dibandingkan dengan spesie harimau di dunia, warnanya orange kemerah- merahan dan tubuhnya kecil.

  Gambar 4. 28 Harimau Sumatra Gambar 4. 29 Harimau Sumatra modeling

  6. Penyu hijau Karakter penyu hijau ialah cangkangnya yang berwarna hijau, kepalanya tumpul, tubuhnya besar dan berat.

  Gambar 4. 31 Penyu hijau modeling Gambar 4. 30 Penyu hijau

  7. Asset Pelengkap Pada pembukaan ada beberapa modeling berupa batu, jamur, pagar kayu, 6 box, rumput, drum kayu, tanah dan material kaca untuk menampilkan informasi 5 satwa langka dan 5 box sebagai tombol untuk switch objek.

  Gambar 4. 33 Jamur Gambar 4. 32 Tombol switch objek Gambar 4. 35 Drum kayu Gambar 4. 34 Pagar kayu

  Gambar 4. 36 Texture tanah Gambar 4. 37 Batu-batuan

  Gambar 4. 8 Kayu Gambar 4. 39 Rerumputan

  Pada level 1 selain karakter utama terdapat modeling kurungan besi berjumlah 2 buah dan 4 kunci berwarna hijau dan 4 kunci berwarna silver yang terdapat di sekitar area karakter utama.

  

Gambar 4. 40 Kurungan besi Gambar 4. 42 Kunci hijau Gambar 4. 41 Kunci silver Pada level ke-2 terdapat modeling pohon sawit besar berjumlah 5 dan pohon sawit kecil yang berjumlah 4, serta 5 api yang nantinya akan bergerak merembet pada pohon.

  Gambar 4. 43 Pohon kelpa sawit muda Gambar 4. 44 Pohon kelpa sawit muda Gambar 4. 45 Api

  Pada level ke-3 ada dua item yaitu ranjau dan satu buah keranjang rotan yang berisi beberapa buah apel, beberapa buah pir, dan pisang. Ranjau berjumlah 4 dengan warna silver perak.

  Gambar 4. 46 Ranjau Gambar 4. 47 Makanan gajah Pada level ke-4 berisi 5 buah sampah, 3 buah sampah botol dan 2 buah sampah minuman kotak. Sampah tersebut yang nantinya digunakan untuk penentu menuju level berikutnya.

  

Gambar 4. 48 Sampah-sampah

Level terakhir terdapat rumput box yang berdampingan kanan dan kiri dan

  ditengahnya gambar satwa dalam texture kaca dan text 3D serta nama- nama pulau di Indonesia (Sumatra, Kalimantan, Sulawesi, Maluku, Papua, Nusa Tenggara, Jawa dan Bali).

  

Gambar 4. 49 Rumput box & soal

Gambar 4. 50 Nama-nama pulau 3D

4.4. Pemrograman

  Pemrograman dilakukan setelah semua asset siap diolah, pemograman game menggunakan bahasa c# dengan software MonoDevelop-Unity dan unity 5.4.1.

  build result

  1. Tombol Menu Utama digunakan untuk next scene menuju level awalan berupa edukasi satwa langka.

  using UnityEngine; using System.Collections; using UnityEngine.UI; public class next5 : MonoBehaviour { public void next ( string sceneName)

  { Application .LoadLevel (sceneName);

  } }

Script 4. 1 script menu utama play

2.

  Script AR Camera dapat diperoleh pada vuvoria.developher.com

  digunakan untuk menampilkan objek 3D muncul pada smartphone sehingga menjadikan bentuk Augmented Reality.

  using UnityEngine; namespace Vuforia {

public class VuforiaBehaviour : VuforiaAbstractBehaviour

  { protected override void Awake()

  { AddOSSpecificExternalDatasetSearchDirs();

gameObject.AddComponent< ComponentFactoryStarterBehav

our >(); base .Awake();

  } private static VuforiaBehaviour mVuforiaBehaviour= null ; public static VuforiaBehaviour Instance { get

  { if (mVuforiaBehaviour == null )

mVuforiaBehaviour = FindObjectOfType< VuforiaBehaviour >();

return mVuforiaBehaviour;

  } } private void AddOSSpecificExternalDatasetSearchDirs() { #if UNITY_ANDROID if ( Application .platform == RuntimePlatform .Android)

  { var databaseLoader = DatabaseLoadARController .Instance;

AndroidJavaClass jclassEnvironment = new AndroidJavaClass ( "android.os.

  Environment" );

AndroidJavaObject jobjFile = jclassEnvironment.CallStatic< AndroidJavaObj

ect >( "getExternalStorageDirectory" ); string externalStorageDirectory = jobjFile.Call< string >( "getAbsolutePath" );

AndroidJavaObject jobjActivity = new AndroidJavaClass ( "com.unity3d.playe

r.UnityPlayer" ).GetStatic< AndroidJavaObject >( "currentActivity" ); string packageName = jobjActivity.Call< string >( "getPackageName" );

databaseLoader.AddExternalDatasetSearchDir(externalStorageDirectory + "

/Android/data/" + packageName + "/files/" ); databaseLoader.AddExtern

alDatasetSearchDir(externalStorageDirectory + "/Android/data/" + packageN

ame + "/files/Vuforia/" );

databaseLoader.AddExternalDatasetSearchDir(externalStorageDirectory + "

/Android/data/" + packageName + "/files/QCAR/" ); } #endif } } }

  Script 4. 2 script AR camera

4.4.2. Level 1

  1. Tombol switch modeling digunakan untuk memunculkan objek secara bergantian sesuai tombol yang dipilih. Ada 5 tombol untuk menampilkan.

  a.

  Tombol 1 digunakan untuk menonaktifkan semua objek dan kecuali objek satu.

  using UnityEngine; using System.Collections; public class awal1 : MonoBehaviour { public GameObject satu ; public GameObject dua ; public GameObject tiga ; public GameObject empat ; public GameObject lima ; public GameObject enam ; // Use this for initialization void Start () {

  } // Update is called once per frame void OnMouseDown () { satu.SetActive ( true ); dua.SetActive ( false ); tiga.SetActive ( false ); empat.SetActive ( false ); lima.SetActive ( false ); enam.SetActive ( false ); } } b.

  Tombol 2 digunakan untuk menonaktifkan semua objek dan kecuali objek dua.

  using UnityEngine; using System.Collections; public class awal2 : MonoBehaviour { public GameObject satu ; public GameObject dua ; public GameObject tiga ; public GameObject empat ; public GameObject lima ; public GameObject enam ; // Use this for initialization void Start () {

  } // Update is called once per frame void OnMouseDown () { satu.SetActive ( false ); dua.SetActive ( true ); tiga.SetActive ( false ); empat.SetActive ( false ); lima.SetActive ( false ); enam.SetActive ( false ); } } c.

  Tombol 3 digunakan untuk menonaktifkan semua objek dan kecuali objek tiga.

  using UnityEngine; using System.Collections; public class awal3 : MonoBehaviour { public GameObject satu ; public GameObject dua ; public GameObject tiga ; public GameObject empat ; public GameObject lima ; public GameObject enam ; // Use this for initialization void Start () {

  } // Update is called once per frame void OnMouseDown () { satu.SetActive ( false ); dua.SetActive ( false ); tiga.SetActive ( true ); empat.SetActive ( false ); lima.SetActive ( false ); enam.SetActive ( false ); } } d.

  Tombol 4 digunakan untuk menonaktifkan semua objek dan kecuali objek empat.

  using UnityEngine; using System.Collections; public class awal4 : MonoBehaviour { public GameObject satu ; public GameObject dua ; public GameObject tiga ; public GameObject empat ; public GameObject lima ; public GameObject enam ; // Use this for initialization void Start () {

  } // Update is called once per frame void OnMouseDown () { satu.SetActive ( false ); dua.SetActive ( false ); tiga.SetActive ( false ); empat.SetActive ( true ); lima.SetActive ( false ); enam.SetActive ( false ); } } e.

  Tombol 5 digunakan untuk menonaktifkan semua objek dan kecuali objek lima.

  using UnityEngine; using System.Collections; public class awal5 : MonoBehaviour { public GameObject satu ; public GameObject dua ; public GameObject tiga ; public GameObject empat ; public GameObject lima ; public GameObject enam ; // Use this for initialization void Start () {

  } // Update is called once per frame void OnMouseDown () { satu.SetActive ( false ); dua.SetActive ( false ); tiga.SetActive ( false ); empat.SetActive ( false ); lima.SetActive ( true ); enam.SetActive ( false ); } }

  Script 4. 3 script switch karakter

  2. Nyawa level 1 digunakan untuk menyimpan nyawa serta membuat ruang canvas dan menampilkan tampilan salah ketika kunci benar dan menampilkan benar ketika kunci benar.

  using UnityEngine; using System.Collections; using UnityEngine.UI; public class nyawalevel1 : MonoBehaviour { public int hp= 3 ; public int kunci=

  6 ; public Text text; public Canvas gameover; public Canvas next; // Use this for initialization void Start () {

  } // Update is called once per frame void Update () { text.text = "" + hp; if (hp == ) { gameover.enabled = true ; } if (kunci == ) { next.enabled = true ; } } }

  Script 4. 4 script nyawa level 1

  3. Kunci benar digunakan untuk mendeteksi kunci benar yang dipilih, ketika jumlah kunci benar memenuhi sayarat maka diteruskan pada script nyawa level 1.

  using UnityEngine; using System.Collections; public class kuncibenar : MonoBehaviour { public GameObject kuncibenarsatu ;

  // Use this for initialization void Start () {

  } // Update is called once per frame void OnMouseDown () { kuncibenarsatu .SetActive ( false );

  GameObject nyawa = GameObject .Find ( "nyawa" );

nyawalevel3 a = nyawa.GetComponent< nyawalevel3 > ();

a.kunci -= 1 ; } void OnCollisionEnter ( Collision col)

  { GameObject nyawa = GameObject .Find ( "nyawa" );

nyawalevel3 a = nyawa.GetComponent< nyawalevel3 > ();

if (col.gameObject.name == "kuncibenar" )

  { a.hp-= 1 ;

  } } }

  Script 4. 5 script kunci benar

  4. Kunci salah digunakan untuk mendeteksi kunci salah dan nilai berkurang 1 apabila menekan kunci salah lalu meneruskan pada script nyawa level 1.

  using UnityEngine; using System.Collections; public class kuncisalah : MonoBehaviour { public GameObject kuncisalahsatu ;

  // Use this for initialization void Start () {

  } // Update is called once per frame void OnMouseDown () { kuncisalahsatu.SetActive ( false );

  GameObject nyawa = GameObject .Find ( "nyawa" ); nyawalevel3 z = nyawa.GetComponent< nyawalevel3 >(); z.hp -= 1 ; } }

  Script 4. 6 script kunci salah

4.4.3. Level 2

  1. Nyawa level 2 digunakan untuk memberi ruang beberapa

  canvas dan melakukan action saat hp berjumlah 0 dan api berjumlah 0. using UnityEngine; using System.Collections; using UnityEngine.UI; public class nyawalevel2 : MonoBehaviour { public int hp= 5 ; public Text text; public Canvas x; public Canvas z; public int api= 5 ; // Use this for initialization void Start () {

  } // Update is called once per frame void Update () { text.text = "" + hp; if (hp == ) { x.enabled = true ; } if (api == ) { z.enabled = true ; } } }

  Script 4. 7 script nyawa level 1

  2. Sript Api digunakan untuk mendeteksi tumbrukan, kerika tumbrukan terjadi nyawa hp akan berkurang dan acrtion selanjutnya diteruskan pada script nyawa level 2.

  a. Api 1 menyimpan data bahwa api1 sudah melakukan tumbrukan atau belum lalu meneruskan pada script nyawa

  level 2. using UnityEngine; using System.Collections; public class api1 : MonoBehaviour { public GameObject apisatu ;

  // Use this for initialization void Start () {

  } // Update is called once per frame void OnMouseDown () { apisatu.SetActive ( false );

  GameObject nyawa = GameObject .Find ( "nyawa" ); nyawalevel2 a = nyawa.GetComponent< nyawalevel2 > (); a.api -= 1 ; } void OnCollisionEnter ( Collision col)

  { GameObject nyawa = GameObject .Find ( "nyawa" ); nyawalevel2 a = nyawa.GetComponent< nyawalevel2 > (); if (col.gameObject.name == "pohon" )

  { a.hp-= 1 ;

  } } }

  b. Api2 menyimpan data bahwa api1 sudah melakukan tumbrukan atau belum lalu meneruskan pada script nyawa

  level 2. using UnityEngine; using System.Collections; public class api2 : MonoBehaviour { public GameObject apidua ; // Use this for initialization void Start () {

  } // Update is called once per frame void OnMouseDown () { apidua.SetActive ( false );

  

GameObject nyawa = GameObject .Find ( "nyawa" );

nyawalevel2 a = nyawa.GetComponent< nyawalevel2 > (); a.api -= 1 ; } void OnCollisionEnter ( Collision col)

  {

GameObject nyawa = GameObject .Find ( "nyawa" );

nyawalevel2 a = nyawa.GetComponent< nyawalevel2 > (); if (col.gameObject.name == "pohon" )

  { a.hp-= 1 ;

  } } }

  c. Api 3 menyimpan data bahwa api1 sudah melakukan tumbrukan atau belum lalu meneruskan pada script nyawa

  level 2. using UnityEngine; using System.Collections; public class api3 : MonoBehaviour { public GameObject apitiga ;

  // Use this for initialization void Start () {

  } // Update is called once per frame void OnMouseDown () { apitiga.SetActive ( false );

  

GameObject nyawa = GameObject .Find ( "nyawa" ); nyawalevel2 a = nyawa.GetComponent< nyawalevel2 > (); a.api -= 1 ; } void OnCollisionEnter ( Collision col)

  {

GameObject nyawa = GameObject .Find ( "nyawa" );

nyawalevel2 a = nyawa.GetComponent< nyawalevel2 > (); if (col.gameObject.name == "pohon" )

  { a.hp-= 1 ;

  } } }

  d. Api 4 menyimpan data bahwa api1 sudah melakukan tumbrukan atau belum lalu meneruskan pada script nyawa

  level 2. using UnityEngine; using System.Collections; public class api4 : MonoBehaviour { public GameObject apiempat ;

  // Use this for initialization void Start () {

  } // Update is called once per frame void OnMouseDown () { apiempat.SetActive ( false );

  

GameObject nyawa = GameObject .Find ( "nyawa" );

nyawalevel2 a = nyawa.GetComponent< nyawalevel2 > (); a.api -= 1 ; } void OnCollisionEnter ( Collision col)

  {

GameObject nyawa = GameObject .Find ( "nyawa" );

nyawalevel2 a = nyawa.GetComponent< nyawalevel2 > (); if (col.gameObject.name == "pohon" )

  { a.hp-= 1 ;

  } } } e. Api 5 menyimpan data bahwa api1 sudah melakukan tumbrukan atau belum lalu meneruskan pada script nyawa

  level 2. using UnityEngine; using System.Collections; public class api5 : MonoBehaviour { public GameObject apilima ;

  // Use this for initialization void Start () {

  } // Update is called once per frame void OnMouseDown () { apilima.SetActive ( false );

  GameObject nyawa = GameObject .Find ( "nyawa" ); nyawalevel2 a = nyawa.GetComponent< nyawalevel2 > (); a.api -= 1 ; } void OnCollisionEnter ( Collision col)

  { GameObject nyawa = GameObject .Find ( "nyawa" ); nyawalevel2 a = nyawa.GetComponent< nyawalevel2 > (); if (col.gameObject.name == "pohon" )

  { a.hp-= 1 ;

  } } }

  Script 4. 8 script api

4.4.4. Level 3

1. Script gajah digunakan untuk memberikan ruang canvas serta

  mendeteksi tumbrukan kemudian melakukan action ketika mendeteksi tumbrukan jebakan maupun mendeteksi tumbrukan non jebakan dengan string nama GameObject pada unity.

  using UnityEngine; using System.Collections; using UnityEngine.UI; public class gajah : MonoBehaviour { int hp= 3 ; public Text text; public Canvas asd; public Canvas dsa; void Start () {

  } void Update () { text.text = "" + hp; if (hp == ) { asd.enabled = true ; } } void OnCollisionEnter ( Collision col)

  { if (col.gameObject.name == "jebakan" )

  { hp-= 1 ;

  } if (col.gameObject.name == "finish" ) { dsa.enabled = true ; } } }

  Script 4. 9 script gajah

  2. Script button controller

  a. Atas digunakan untuk emeberikan fungsi gajah bergerak ke atas menuju utara.

  using UnityEngine; using System.Collections; public class atas : MonoBehaviour { public GameObject d;

  // Use this for initialization void Start () {

  }

  // Update is called once per frame void OnMouseDown () {

  Vector3 position = d.transform.position; position.z++; d.transform.position = position; } }

  b. Bawah digunakan untuk emeberikan fungsi gajah bergerak ke atas menuju selatan.

  using UnityEngine; using System.Collections; public class bawah : MonoBehaviour { public GameObject c;

  // Use this for initialization void Start () {

  } // Update is called once per frame void OnMouseDown () {

  Vector3 position = c.transform.position; position.z--; c.transform.position = position; } }

  c. Kanan digunakan untuk emeberikan fungsi gajah bergerak ke atas menuju timur.

  using UnityEngine; using System.Collections; public class kanan : MonoBehaviour { public GameObject a;

  // Use this for initialization void Start () {

  } // Update is called once per frame void OnMouseDown () {

  Vector3 position = a.transform.position; position.x++; a.transform.position = position;

  } }

  d. Kiri digunakan untuk emeberikan fungsi gajah bergerak ke atas menuju barat.

  using UnityEngine; using System.Collections; public class kanan : MonoBehaviour { public GameObject b;

  // Use this for initialization void Start () {

  } // Update is called once per frame void OnMouseDown () {

  

Vector3 position = b.transform.position;

position.x--; b.transform.position = position; } }

  Script 4. 10 script button controller

4.4.5. Level 4

  1. Script nyawa level 4 digunakan untuk membuat ruang dan menampilkan canvas menang, canvas kalah serta hp yang akan terdeteksi pada script penyu1,2 dan 3 serta sampah 1 sampai dengan 5.

  using UnityEngine; using System.Collections; using UnityEngine.UI; public class nyawasampah : MonoBehaviour { public int hp= 3 ; public int sampah=

  5 ; public Text text; public Canvas a; public Canvas b; // Use this for initialization void Start () {

  } // Update is called once per frame void Update () { text.text = "" + hp; if (hp == ) { a.enabled = true ; } if (sampah == ) { b.enabled = true ; } } }

  Script 4. 11 script nyawa level 4

  2. Script sampah memberi nilai ketika mampu menyelesaikan 5 nilai maka canvas menang akan terbuka yang ada pada script nyawa level 4.

  a. Sampah 1, mendeteksi sentuhan pada objek sampah 1 kemudian nilainya dikurangi dan dilanjutkan pada action nyawa level 4.

  using UnityEngine; using System.Collections; public class sampah1 : MonoBehaviour { public GameObject a ;

  // Use this for initialization void Start () {

  } // Update is called once per frame void OnMouseDown () { a.SetActive ( false );

  GameObject nyawa = GameObject .Find ( "nyawa" ); nyawasampah z = nyawa.GetComponent< nyawasampah >() ; z.sampah -=

  1 ; } }

  b. Sampah 2, mendeteksi sentuhan pada objek sampah 2 kemudian nilainya dikurangi dan dilanjutkan pada action nyawa level 4. using UnityEngine; using System.Collections; public class sampah2 : MonoBehaviour { public GameObject b ;

  // Use this for initialization void Start () {

  } // Update is called once per frame void OnMouseDown () { b.SetActive ( false );

  

GameObject nyawa = GameObject .Find ( "nyawa" );

nyawasampah z = nyawa.GetComponent< nyawasampah >() ; z.sampah -=

  1 ; } }

  c. Sampah 3, mendeteksi sentuhan pada objek sampah 3 kemudian nilainya dikurangi dan dilanjutkan pada action nyawa level 4.

  using UnityEngine; using System.Collections; public class sampah3 : MonoBehaviour { public GameObject c ;

  // Use this for initialization void Start () {

  } // Update is called once per frame void OnMouseDown () { c.SetActive ( false );

  

GameObject nyawa = GameObject .Find ( "nyawa" );

nyawasampah z = nyawa.GetComponent< nyawasampah >() ; z.sampah -=

  1 ; } } d. Sampah 4, mendeteksi sentuhan pada objek sampah 4 kemudian nilainya dikurangi dan dilanjutkan pada action nyawa level 4.

  using UnityEngine; using System.Collections; public class sampah4 : MonoBehaviour { public GameObject d ;

  // Use this for initialization void Start () {

  } // Update is called once per frame void OnMouseDown () { d.SetActive ( false );

  

GameObject nyawa = GameObject .Find ( "nyawa" );

nyawasampah z = nyawa.GetComponent< nyawasampah >() ; z.sampah -=

  1 ; } }

  e. Sampah 5, mendeteksi sentuhan pada objek sampah 5 kemudian nilainya dikurangi dan dilanjutkan pada action nyawa level 4.

  using UnityEngine; using System.Collections; public class sampah1 : MonoBehaviour { public GameObject e ;

  // Use this for initialization void Start () {

  } // Update is called once per frame void OnMouseDown () { e.SetActive ( false );

  

GameObject nyawa = GameObject .Find ( "nyawa" );

nyawasampah z = nyawa.GetComponent< nyawasampah >() ; z.sampah -=

  1 ;

  } } Script 4. 12 script sampah

  3. Script penyu digunakan untuk menampilkan canvas kalah saat terdeteksi tersentuh. Ada tiga ekor penyu yang akan bergerak menuju sampah.

  using UnityEngine; using System.Collections; public class penyu : MonoBehaviour { public GameObject penyuh ;

  // Use this for initialization void Start () {

  } // Update is called once per frame void OnMouseDown () { satu.SetActive ( false );

  GameObject nyawa = GameObject .Find ( "nyawa" ); nyawasampah z = nyawa.GetComponent< nyawasampah >(); z.hp -= 1 ; } }

  Script 4. 13 script sampah

4.4.6. Level 5

  1. Jawaban Benar berfungsi untuk menyimpan nama yang benar serta mendeteksi sentuhan tab, setelah mengetahui jawaban benar objek jempol akan muncul kemudian otomatis menuju soal berikutnya.

  using UnityEngine; using System.Collections; public class namabenar : MonoBehaviour { public Canvas betul; public GameObject benar ; // Use this for initialization void Start () { }

  // Update is called once per frame void OnMouseDown () { betul.enabled = true ;

  Application .LoadLevel ( "level5" ); GameObject nyawa = GameObject .Find ( "nyawa" );

nyawalevel5 a = nyawa.GetComponent< nyawalevel5 > ();

a.nama -= 1 ; } void OnCollisionEnter ( Collision col)

  { GameObject nyawa = GameObject .Find ( "nyawa" );

nyawalevel5 a = nyawa.GetComponent< nyawalevel5 > ();

if (col.gameObject.name == "namabenar" )

  { a.hp-= 1 ;

  } } }

  Script 4. 14 script jawaban benar

  2. Jawaban Salah mendeteksi sentuhan tab nama pulau yang salah kemudian mengeluarkan canvas baru berupa canvas replay untuk mengulang soal pada soal itu juga.

  using UnityEngine; using System.Collections; public class namasalah1 : MonoBehaviour { public GameObject salah ;

  // Use this for initialization void Start () {

  } // Update is called once per frame void OnMouseDown () { salah.SetActive ( false );

  GameObject nyawa = GameObject .Find ( "nyawa" );

nyawalevel5 z = nyawa.GetComponent< nyawalevel5 >();

z.hp -= 1 ;

  } } Script 4. 15 script jawaban salah

4.4.7. Bonus

  Script bonus yaitu 3D colloring by 3Djeebs dapat di download gratis dengan link berikut ini

  

  1. Script membaca objek tiga dimensi agar texture nyata dapat diterapkan pada objek tiga dimensi tersebut.

  using System; using System.Collections; using UnityEngine; using Vuforia; #if UNITY_EDITOR #pragma warning disable 0414 #endif public class Region_Capture : MonoBehaviour { private Camera Child_AR_Camera; private GameObject AR_Camera_Vector; private Renderer m_renderer;

  [Space( 10 )] public GameObject ARCamera; public GameObject ImageTarget; public GameObject BackgroundPlane;

  [Space( 20 )] public bool AutoRegionSize = true ; public bool HideFromARCamera = true ; public bool CheckMarkerPosition = false ;

  [Space( 20 )] public bool ColorDebugMode = false ;

  [HideInInspector] public bool MarkerIsOUT, MarkerIsIN;

private bool Is_Child_ImageTarget, reverse_matrix;

private float tmp00_init, tmp01_init, tmp02_init, tmp00_updt, tmp0

  1_updt, tmp02_updt; private int frame_num; public static Texture VideoBackgroundTexure; public static float CPH,CPW,vuforia_ios_magic;

private TrackableBehaviour mTrackableBehaviour;

private void Start()

  { mTrackableBehaviour = ImageTarget.GetComponent<Vuforia. T rackableBehaviour >();

if (!m_renderer) m_renderer = GetComponent< Renderer >();

  

AR_Camera_Vector = GameObject .Find( "AR Camera Vector" );

if (AR_Camera_Vector == null )

  {

AR_Camera_Vector = new GameObject ( "AR Camera Vector"

); } if (GetComponentInParent< ImageTargetBehaviour >()) Is_Child

  _ImageTarget = true ; if (ARCamera == null || ImageTarget == null || BackgroundPlane

  == null ) { Debug .LogWarning( "ARCamera, ImageTarget or Background

  Plane not assigned!" ); enabled = false ; } else

  { if (AutoRegionSize)

  { var imageTargetBehaviour = ImageTarget.GetComponent

  < ImageTargetBehaviour >(); if (Is_Child_ImageTarget)

  { transform.localPosition = Vector3 .zero; transform.localEulerAngles = Vector3 .zero; if (imageTargetBehaviour.GetSize().x > imageTargetBeh aviour.GetSize().y) transform.localScale = new Vector3 ( 0.1f , 0.1f ,imageTargetBehaviour.GetS ize().y/imageTargetBehaviour.GetSize().x* 0.1f ); else transform.localScale = new Vector3 (imageTargetBehaviour.GetSize().x/im ageTargetBehaviour.GetSize().y* 0.1f , 0.1f , 0.1f ); } else

  { transform.position = ImageTarget.transform.position;

transform.localRotation = ImageTarget.transform.localR

otation; transform.localScale = new Vector3 (imageTargetBehaviour.GetSize().x,

  10.0 f , imageTargetBehaviour.GetSize().y)/ 10.0f ; } }

  

Child_AR_Camera = ARCamera.GetComponentInChildren<

Camera >(); gameObject.layer = 20 ; if (HideFromARCamera && !ColorDebugMode)

  Child_AR_Camera.cullingMask &= ~( 1 << LayerMask .Nam eToLayer( "Region_Capture" )); if (ColorDebugMode)

  { m_renderer.material.SetInt( "_KR" , ); m_renderer.material.SetInt( "_KG" , 1 ); } CPH = Child_AR_Camera.pixelHeight; CPW = Child_AR_Camera.pixelWidth; vuforia_ios_magic = 1.0f ; StartCoroutine(Start_Initialize()); StartCoroutine(CheckVideoMode()); } if ( SystemInfo .deviceModel.Contains ( "iPad5,3" ) || SystemInfo .d eviceModel.Contains ( "iPad5,4" )) reverse_matrix = true ; } private void Initialize()

  { var meshFilter = BackgroundPlane.GetComponent< MeshFilter >

  (); if ( VuforiaRenderer .Instance.IsVideoBackgroundInfoAvailable())

  { var videoTextureInfo = VuforiaRenderer .Instance.GetVideoTe xtureInfo(); if (videoTextureInfo.imageSize.x == || videoTextureInfo.ima geSize.y == ) goto End; var k_x = videoTextureInfo.imageSize.x/( float ) videoTextureIn fo.textuResize.x* 0.5f ; var k_y = videoTextureInfo.imageSize.y/( float ) videoTextureIn fo.textuResize.y* 0.5f ; m_renderer.material.SetFloat( "_KX" , k_x); m_renderer.material.SetFloat( "_KY" , k_y);

VideoBackgroundTexure = VuforiaRenderer .Instance.VideoB

ackgroundTexture;

if (!VideoBackgroundTexure || !meshFilter) goto End;

  

m_renderer.material.SetTexture( "_MainTex" , VideoBackgrou

ndTexure);

AR_Camera_Vector.transform.parent = ARCamera.transform

;

AR_Camera_Vector.transform.localPosition = Vector3 .zero;

AR_Camera_Vector.transform.localScale = new Vector3 ( 1.0f ,

  1.0f , 1.0f );

AR_Camera_Vector.transform.localEulerAngles = new Vector

3 ( 0.0f , 180.0f , 180.0f );

  #if !UNITY_EDITOR && !UNITY_STANDALONE var P = VuforiaUnity.GetProjectionGL(0, 0, 0); tmp00_init = P.m00; tmp01_init = P.m01; tmp02_init = P.m02;

if (CameraDevice.Instance.GetCameraDirection() == Cam

eraDevice.CameraDirection.CAMERA_FRONT) AR_Camera_Vector

.transform.localEulerAngles = new Vector3 (0.0f, 0.0f, 0.0f);

if (Screen.orientation == ScreenOrientation.LandscapeRig

ht || Screen.orientation == ScreenOrientation.LandscapeLeft) vuforia_ios_magic = -1.0f; if (Screen.orientation == ScreenOrientation.Portrait) {

if (Application.platform == RuntimePlatform.IPhonePlaye

r && tmp02_init < 0) vuforia_ios_magic = -2.0f; else vuforia_ios_magic = 1.0f;

if (SystemInfo.deviceModel.Contains ("iPhone5,3") || Sy

stemInfo.deviceModel.Contains ("iPhone5,4")) vuforia_ios_magic = -

1.0f; }

if (Screen.orientation == ScreenOrientation.PortraitUpside

Down) {

if (Application.platform == RuntimePlatform.IPhonePlaye

r && tmp02_init > 0) vuforia_ios_magic = 2.0f; else vuforia_ios_magic = -1.0f;

if (SystemInfo.deviceModel.Contains ("iPhone5,3") || Sy