Minggu, 07 April 2019

Unity Platformer Tutorial [Part 1]

Di tutorial part 1 ini, kamu akan membuat sebuah level, menambahkan player, menggerakkan player, dan mengubah warna latar belakang.

Part 1 ini memerlukan waktu minimal 30 menit.

Preview dari game yang akan dibuat

Di tutorial ini, versi Unity saya adalah 5.5.4, menggunakan Dark Theme.
Untuk menginstall unity, ikuti bagian "Menginstall Unity" di artikel ini.

Membuat Sebuah Level

Level adalah sebuah lingkungan/tempat dimana pemain harus melakukan sesuatu untuk melanjutkan ke level yang berikutnya.

Download file berikut:
ground.png
ground grass.png

Upload gambar-gambar ini ke Unity. Supaya file-file kamu rapi, di bagian "Projects", masukkan gambar-gambar itu ke sebuah folder bernama "Assets". Kamu juga akan membuat folder bernama "Scene" yang akan membuat game per level (Lihat pada gambar di bawah).

Select gambar-gambar itu ("ground" dan "ground grass") di bagian Projects.
Di Inspector, ubahlah nilai Pivot menjadi "Bottom Left", dan Wrap Mode menjadi "Clamp".
Klik Apply.



Mengapa kita ubah nilai Wrap Mode? Supaya gambar (di bagian Game) menjadi lebih bagus.

Perhatikan garis hijau di gambar Wrap Mode: Repeat

Kemudian buatlah sebuah GameObject (Hierarchy -> Create -> 2D Object -> Sprite) dan berikan sebuah nama "ground" dengan mengubah nama New Sprite di Inspector atau mengklik satu kali di bagian Hierarchy. Di Inspector -> Sprite Renderer, ubahlah nilai Sprite menjadi ground.png.
Lakukan yang sama untuk ground grass.png, buat sebuah sprite baru.

Tips: Selain cara di atas, kamu bisa men-drag gambar-gambar itu ke bagian Hierarchy, sebuah Sprite akan otomatis dibuat oleh Unity. (jangan men-drag dua gambar sekaligus)


Jangan lupa untuk men-save scene (Ctrl+S), berikan nama "Level 1", kemudian masukkan scene itu ke folder "Scenes".

Tambahkan Box Collider 2D ke sprite-sprite itu dengan mengklik tombol "Add Component" di bagian Inspector. Pilih Box Collider 2D.

Setelah itu, buatlah sebuah level kecil dengan men-copy sprite-sprite itu dan memindahkannya di bagian Scene.
Tip: Jangan bikin level yang terlalu besar, karena nanti level yang telah dibuatakan dihapus di part 2.

Keyboard shortcuts:
Ctrl+C = Copy
Ctrl+V = Paste
Ctrl+D = Duplicate

Memindahkan blok-blok itu tidak harus rapi, karena di Unity ada sebuah fitur otomatis. Pilih sprite-sprite yang akan dirapihkan, klik Edit -> Snap Settings... dan sebuah window kecil akan muncul. Klik "Snap All Axes".


Sekarang, mari kita rapikan blok-blok itu (Ground dan Ground grass).
Pertama, klik Create -> Create Empty, kemudian ubah namanya menjadi "tiles".
Di Inspector, ubah posisi X dan Y menjadi 0.
Right-klik tiles dan pilih "Create Empty", beri nama "Ground".
Di tiles, Create Empty sekali lagi, beri nama "Ground grass".
Masukkan "ground (...)" ke "Ground", dan "ground grass (...)" ke "Ground grass", seperti ini:


Menambahkan Player

Sekarang, mari kita tambahkan sebuah player. Download gambar berikut:

player.png
Masukkan gambar itu ke folder "Assets" (bagian Project).
Buat sebuah GameObject untuk player di bagian Hierarchy. Tambahkan komponen Circle Collider 2D dan Rigidbody 2D (di bagian Inspector, Add Component). Periksa bagian Hierarchy, dan pastikan player tidak ada di dalam GameObject "tiles".

Harusnya Unity kamu kurang lebih sama dengan gambar berikut:


Klik play. Player akan jatuh karena di komponen Rigidbody 2D ada gravitasi.
Player akan berhenti ketika player menyentuh sebuah blok, karena player dan blok itu memiliki sebuah Collider 2D.
Tips: Kalau kamu mau mengubah sesuatu, jangan lupa untuk keluar dari playmode dengan mengkik tombol play, karena membuat perubahan di playmode tidak akan tersimpan.

Menggerakkan Player

Yang harus kita lakukan untuk menggerakkan player adalah membuat sebuah script.
Di bagian Project, buat sebuah folder "Scripts". Right-klik folder itu dan pilih Create -> C# Script, namakan script itu "Player".
Tambahkan script itu ke GameObject "player". (Di bagian Inspector, klik Add Component -> cari "Player")
Kemudian double-klik script itu, dan mestinya MonoDevelop akan terbuka kalau versi Unity kamu adalah 5.x.x. Tapi kalau versi Unity kamu adalah 2018.x.x, mestinya yang terbuka adalah Visual Studio.

Isi script itu mestinya seperti ini:

Player.cs
Isi script ini adalah default, Unity akan otomatis membuat sebuah kode seperti di atas.
Fungsi Start () adalah sebuah fungsi yang akan otomatis dipanggil oleh Unity ketika game kamu dimulai.
Fungsi Update () adalah sebuah fungsi yang akan otomatis dipanggil setiap frame.
Mari kita ubah script itu menjadi seperti berikut:

Player.cs

Save script itu (Ctrl+S) dan run Unity. Harusnya player bergerak ke kanan.

Penjelasan Script

Awalnya, kita mendeklarasi variabel rb dengan tipe "Rigidbody2D" dan variable movespeed dengan tipe "int" dan nilai standar 1.
Kemudian, di dalam fungsi Start (), kita mengambil komponen Rigidbody 2D dari player (GameObject) ke variabel rb. (karena script ini ada di komponen GameObject player)

Nilai variabel rb akan menjadi komponen Rigidbody2D dari player

Di dalam fungsi Update (), kita menambahkan nilai x dari "velocity" dari variabel rb dengan movespeed. Kemudian kita membagi nilai x dari "velocity" dari variabel rb dengan 1.2, supaya player tidak bergerak terlalu "licin".

Sekarang, player sudah bergerak. Tapi kita mau menggerakkan player dengan menekan tombol keyboard.
Kita perlu menggerakkan player ke kanan jika tombol panah kanan ditekan, dan ke kiri jika tombol panah kiri ditekan.
Untuk melakukan itu, kita dapat menggunakan beberapa statemen if di script player.
Edit script Player.cs menjadi seperti berikut:

Player.cs

Harusnya kamu bisa menggerakkan player dengan menekan tombol keyboard.
Kita akan membuat player melompat di Part 2.

Mengubah Ukuran Player

Player akan tersangkut di antara dua blok yang berdekatan:


Ini terjadi karena ukuran player sama persis dengan blok-blok itu. Untuk mengatasinya, kita perlu mengubah ukuran si player.
Ubah komponen Transform dari player, Scale X dan Scale Y menjadi 0.95, seperti gambar berikut:


Selesai!

Mengubah Warna Latar Belakang

Untuk mengubah warna latar belakang, kita ubah Main Camera -> komponen Camera -> nilai Background menjadi sebuah warna yang kamu sukai.

Warna yang saya gunakan adalah #81D5FF00

Kalau game kamu kurang lebih adalah seperti ini, kamu sudah selesai!



Kalau belum, periksa script Player.cs dan Unity.
Mungkin script kamu belum di save, atau ada sebuah langkah yang belum dilakukan, atau ada sebuah kesalahan lainnya.

Silahkan tinggalkan sebuah komentar kalau ada masalah atau ada sesuatu yang kurang jelas. 

Silahkan klik di sini untuk Part 2

Sabtu, 09 Maret 2019

Mendampingi Anak-Anak Belajar Makan Minum Sehat

Makan dan minum adalah kegiatan yang dilakukan manusia secara terus menerus sejak kecil hingga dewasa. Makan dan minum, seperti juga berbicara, berjalan, merangkak, dan lain lain adalah suatu proses belajar yang dilaksanakan secara bertahap dan tidak serta merta dapat dilakukan oleh bayi sejak lahir. Biasanya kita mulai memberi makan dan minuman tambahan setelah usia 6 bulan. Pada tahap ini biasanya anak masih menyusu ASI, tapi sudah membutuhkan makanan tambahan agar kebutuhan gizinya dapat terpenuhi. Pada masa ini ada anak yang sudah mulai mengalami masa tumbuh gigi.

Awalnya, kita kenalkan dulu makanan  dalam jumlah sedikit dengan rasa yang sederhana dan mengandung banyak tepung seperti buah pisang, kacang hijau dan beras merah. Pelan-pelan porsi makanan kita tambah dan jenis makanan juga kita perbanyak. Kita kenalkan sayuran, seperti bayam, brokoli, wortel, umbi umbian protein seperti tempe, hati ayam, kaldu daging sapi, bakso, dan lain lain. Makanan dengan tekstur halus lambat laun diganti menjadi nasi tim saring, dan akhirnya nasi tim yang tidak disaring. Jangan bosan untuk mengajarkan anak makan walaupun sulit, karena ini adalah titik awal ia belajar makanan yang akan terus dilakukannya hingga besar nanti. Kegiatan belajar makan dari mengunyah serat halus hingga serat yang agak kasar akan berpengaruh pada banyak hal seperti tumbuh kembang anak,  pembentukan rahang dan gigi, pencernaan anak, dan lain lain.

Nah, jangan kuatir jika pada masa ini kita merasa kurang sukses. Ada anak anak yang memang tidak kesulitan belajar makan, tapi ada juga yang sangat sulit. Kita harus mencoba mencari tahu mengapa dia tidak mau makan. Ada beberapa kemungkinan seperti:
  • Tidak suka dengan rasa makanan baru. Kenalkan makanan baru sedikit demi sedikit terlebih dahulu. Kalau dia tidak suka, mungkin kita bisa mencampurnya dengan makanan yang sudah lebih dulu dikenalnya atau susu formula yang sudah lebih dahulu disukainya
  • Lebih suka dengan ASI dan tidak mau yang lain. Coba  beri jarak antara waktu makan dan ASI. Ketika sudah lapar, coba berikan sedikit makanan terlebih dahulu sebelum memberi ASI
  • Tidak suka makan makanan berserat walaupun halus. Nah, ini yang membutuhkan kesabaran, mungkin makanan yang diberikan seratnya kurang halus sehingga perlu diblender dan disaring kembali
  • Tidak suka makanan dalam porsi cukup banyak. Berikan dalam porsi sedikit terlebih dulu.
  • Pernah tersedak ketika disuapi sehingga trauma. Bujuk dan alihkan perhatiannya. Berikan makanan sambil memperhatikan caranya makan. 
  • Masih belum tahu sebabnya. Jika kita masih belum tahu apa penyebab anak kita tidak mau makan, kita bisa membawanya ke dokter anak untuk memeriksa bagian pencernaannya. Kita juga bisa membawanya ke dokter gigi anak untuk memeriksa keadaan gigi, lidah, gusi dan rahangnya karena jika pertumbuhan gigi dan rahangnya ada kelainan, kegiatan belajar makan pada anak dapat terpengaruh.

Salah satu anak saya, pada usia 6 bulan selalu menolak jika diberi makananan tambahan. Padahal saya sudah berusaha semampu saya untuk menyediakan makanan yang hangat, bervariasi dan lengkap dengan berbagai bujukan dan hiburan. Tapi tidak mempan juga. Dia baru mulai makan ketika sudah disapih pada usia 2 tahun dan mungkin mulai merasa lapar. Ok, kalau begitu ayo belajar makan.

Yah, memang agak terlambat untuk mulai belajar makan, tapi mungkin lebih baik daripada tidak sama sekali. Berbagai asupan makanan yang dapat dijadikan lauk ataupun kudapan, baik membeli jadi dan membuat sendiri, saya coba. Saya berusaha semaksimal mungkin agar pertumbuhan anak saya tidak terlambat. Tapi yah, begitulah, kadang berhasil, tapi banyak gagalnya juga. Walaupun banyak makanan yang terpaksa saya makan sendiri karena tidak ingin membuang buang makanan, acara belajar makan untuk anak saya tetap dilanjutkan.

Walaupun saya sudah membiasakan makan segala jenis makanan tanpa pilih pilih, ternyata anak saya yang satu ini tidak dapat melakukannya. Ia memiliki selera makan yang kuat dan sulit berubah. Dia tidak suka makan sayur dan buah. Itu sebabnya ia sering meninggalkan piring makannya dalam keadaan penuh dan akhirnya, saya yang menghabiskan semuanya. Masalah memilih makan ini juga pernah membuatnya mengalami gangguan pencernaan yaitu sembelit. Beberapa kali sering ia terpaksa berlama-lama di kamar mandi karena sulit BAB. Akhirnya saya berusaha menjelaskan kepadanya bahwa tidak makan sayur dan buah dapat menimbulkan berbagai penyakit seperti BAB yang dialaminya. Setelah itu ia mulai terpaksa untuk belajar makan sayur dan buah., Itupun jenisnya sangat terbatas dengan jumlah yang sangat sedikit. Ia masih sulit makan dan memang pertumbuhan badannya juga di bawah rata rata anak seusianya.

Lambat laun saya menemukan apa yang disukainya salah satunya adalah segala makanan olahan susu seperti keju dan susu. Untuk susu, saya sangat berhati hati memilih. Apalagi yang saya ketahui, hampir sebagian besar orang Asia memiliki 'Lactose Intolerant' yaitu memiliki pencernaan yang kurang baik untuk mencerna protein susu. Namun untuk keju dan yogurt, saya ambilkan semua yang mereka suka. Aneka keju baik yang dimakan langsung seperti' keju slice' atau dimasak terlebih dahulu seperti 'mozzarella', disediakan di rumah. 

Yogurt selalu kami simpan di kulkas. Yogurt ini bisa kami campur denagn buah, biskuit, dan lain Minum yogurt yang memang sangat baik karena mengandung kultur fermentasi yang menyehatkan. Sayangnya, anak saya masih sulit untuk minum Yogurt. Sepertinya dia kurang begitu suka dengan yogurt yang rasanya asam walaupun sudah ditambah gula, madu dan buah buahan.

Sayang sekali, padahal yogurt yang berasal dari susu yang difermentasi, sebetulnya lebih baik dari susu. Saat susu ditermentasi, kadar vitaminnya akan meningkat karena bakterinya seperti  Vitamin B1, B2, B6, asam folat, asam pantotenat, dan biotin.  Fermentasi membuat laktose yang ada pada protein susu lebih mudah dicerna dan ini sangat baik untuk anak anak yang memiliki masalah  'Lactose Intolerant'. Bakteri asam laktat dalam yogurt juga membantu keseimbangan mikroflora dalam usus yang dapat mengurangi gangguan pencernaan lainnya.

Sampai akhirnya saya menemukan minuman: Yo! Yogurt for kids.Yo! dibuat dari yogurt berkualitas dengan serat buah dan sayur dengan rasa yang enak. Biasanya yogurt terasa asam sehingga anak anak sulit untuk meminumnya.Apalagi jus sayuran rasanya ya, begitulah, muingkin kurang menarik di lidah anak anak. Tapi Yo! tidak terasa asam sama sekali. Rasa susu, buah dan sayur yang segar membuat minuman ini tidak dapat ditolak bahkan bagi anak saya yang 'picky eater' sekalipun. Apalagi ada pernyataan dari website YO! bahwa dengan mengkonsumsi 1 kotak Yo! setiap hari,  30% kebutuhan serat harian anak dapat terpenuhi.

Ada 4 varian rasa Yo! yang dapat dipilih yaitu:

1. Banana Berries Brocolli
2. Raspberry Pumpkin
3. Mango Carrot
4. Lychee Spinach

Anak anak di rumah paling suka  rasa Mango Carrot dan Banana Berries Brocolli. Kita bisa lihat bahwa minuman Yo! memberikan banyak varian rasa sayur dan buah dalam satu kotak minuman, Berbeda denagn minuman kemasan lain yang memiliki rasa pisang, strawberry atau coklat. Ini adalah poin lebih yang diberikan oleh Yo! menurut saya. Dengan variasi rasa aneka sayur dan buah, diharapkan nantinya anak anak akan suka dengan rasa sayur yang asli yang sering dikonsumsi di rumah seperti bayam, wortel, labu kuning, brokoli, dan lain lain.

Apa saja yang terdapat dalam 1 kotak minuman Yo! ini?  Seperti dalam kemasan tertulis komposisi minuman Yo! Mango Carrot yaitu:  Air, Yogurt skim, sukrosa, Krimer Nabati, Serat larut air, penstabil pektin, Mangga bubuk,Perisa identik Alami mangga, konsentrat wortel, wortel bubuk, serta anti oksidan Tokoferol. Kalau kita baca bahan bahan di atas, sepertinya cukup aman untuk dikonsumsi anak anak tanpa ada tambahan pewarna dan pengawet buatan.
 
Terus terang, setelah bertemu dengan minuman ini rasanya hidup saya agak lebih tenang. Karena saya tidak usah pusing memikirkan apakah anak saya sudah cukup asupan makannya untuk hari ini. Saya juga tidak perlu pusing lagi melihat makanan yang tidak habis karena sejak ada minuman ini, dia lebih semangat makan dan tidak takut untuk mencoba makanan baru yang terlihat aneh dan asing di depan matanya. Seperti pada waktu itu..."Bu, ini apa? ".  "Ooh ini labu kuning atau Pumpkin, seperti sayuran yang ada di minuman Yo! itu lho..!". Tentu saja asupan minuman ini perlu dibantu denagn asupan makanan sehari hari berbentuk makanan berat dan makanan selingan agar pertumbuhan anak dapat berlangsung dengan baik.

Sekarang anak saya yang berusia 12 tahun, dan juga yang masih berusia 5 tahun, semua masih mengkonsumsi Yo!. Bahkan ketika membawa bekal makanan, mereka tidak lupa membawa Yo! sebagai minumannya.

Bekal anak usia 12 tahun
Ini bekal si anak 12 tahun. Waktu itu dia cuma pergi sebentar sehingga hanya membawa cemilan ala kadarnya. Isi kotak bekalnya adalah : crackers dan keju slice, donat coklat pink lava dan nggak lupa Yo! Mango Carrot untuk memenuhi kebutuhan gizi dan serat. 

Bekal anak usia 5 tahun

Ini bekal anak saya yang usia 5 tahun. Isinya Nasi beras merah campur putih, tumis brokoli wortel, bandeng presto goreng dan tidak lupa Yo! Mango Carrot untuk memenuhi kebutuhan gizi dan seratnya. Bekal ini dinikmati ketika makan siang dan cukup mengenyangkan hingga sore hari waktu makan makanan selingan.