Anda di halaman 1dari 26

KARAKTER

1. Pada direktori “Assets” tersebut, buat direktori baru dengan nama ”Character”
untuk menyimpan seluruh asset karakter yang akan digunakan.

2. Pada direktori “Character” tersebut, buat direktori baru dengan nama ”Cat” untuk
menyimpan seluruh asset karater utama yang akan digunakan.

23 | P a g e
3. Pada direktori “Cat” tersebut, buat direktori baru dengan nama ”fall”, ”idle”,
”jump”, dan ”run” untuk menyimpan seluruh asset animasi karakter utama.

4. Pada direktori ”idle”, import gambar yang sudah disediakan pada folder Google
Drive untuk animasi karakter idle.

24 | P a g e
5. Karena gambar pada idle tersebut masih satu gambar, maka ’potong’ gambar
tersebut sehingga menjadi beberapa bagian. Pada bagian Inspector ubah Sprite
Mode menjadi Multiple, Filter Mode menjadi Point (no filter), dan Compression
menjadi None. Dan simpan dengan memilih opsi Apply.

25 | P a g e
6. Pilih opsi Sprite Editor untuk mengubah gambar yang satu menjadi beberapa
bagian.

7. Pilih Slice pada Sprite Editor kemudian pada Type pilih Automatic. Pilih opsi Slice
untuk memotong gambar dan pilih Apply.

26 | P a g e
8. Dan gambar karakter pun telah menjadi beberapa bagian.

9. Tambahkan salah satu gambar karakter pada scene game dengan drag and drop.
Atur ukuran dan lainnya pada bagian Inspector, atur juga nama game object
tersebut dengan nama “cat” pada bagian Hierarchy.

27 | P a g e
10. Pada direktori “Assets”, buat direktori baru dengan nama ”Script” untuk
menyimpan seluruh asset script pada game. Bahasa pemrograman yang digunakan
pada Game Engine Unity adalah bahasa pemrograman C#. tambahkan script baru
pada direktori tersebut dengan nama character_movement. Drag and drop script
character_movement ke game object cat.

11. Tambahkan komponen Collider 2D pada game object cat.

28 | P a g e
12. Tambahkan komponen Rigidbody 2D pada game object cat kemudian centang
Freeze Rotation Z untuk mengunci pergerakan Z pada karakter.

13. Buka script character_movement dengan menggunakan code editor, kemudian


ketikkan script - script di bawah ini untuk pergerakan karakter.

Source code pergerakan karakter ke kiri dan ke kanan:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class character_movement : MonoBehaviour


{
Rigidbody2D rb;

public float movementSpeed;


private float horizontal = 0f;

void Start()
{
rb = GetComponent<Rigidbody2D>();
}

void Update()
{
horizontal = Input.GetAxisRaw("Horizontal");
rb.velocity = new Vector2(horizontal * movementSpeed,
rb.velocity.y);
}

29 | P a g e
}

Source code untuk pergerakan karakter ke kiri dan ke kanan dengan berbalik arah.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class character_movement : MonoBehaviour


{
Rigidbody2D rb;
SpriteRenderer sprite;
public float movementSpeed;
private float horizontal = 0f;

void Start()
{
rb = GetComponent<Rigidbody2D>();
sprite = GetComponent<SpriteRenderer>();
}

void Update()
{
horizontal = Input.GetAxisRaw("Horizontal");
rb.velocity = new Vector2(horizontal * movementSpeed,
rb.velocity.y);

if (Input.GetKey(KeyCode.A))
{
horizontal = -1f;
}

else if (Input.GetKey(KeyCode.D))
{
horizontal = 1f;
}

UpdateAnimationState();
}

private void UpdateAnimationState()


{
if (horizontal > 0f)
{
sprite.flipX = false;
}

else if (horizontal< 0f)

30 | P a g e
{
sprite.flipX = true;
}
}
}

14. Tambahkan Movement Speed pada script di game object cat dengan menggunakan
angka.

15. Pada direktori “Assets”, buat direktori baru dengan nama ”Animation” untuk
menyimpan seluruh asset animasi.

31 | P a g e
16. Buat animation baru pada direktori tersebut dengan nama character_idle.

17. drag and drop file character_idle tersebut ke game object cat.

32 | P a g e
18. Buka window animation dengan menggunakan shortcut CTRL + 6.

19. Buka direktori Assets\Character\Cat\idle. Tambahkan seluruh gambar tersebut ke


Animation.

33 | P a g e
20. Atur Samples dari animasi tersebut sehingga kecepatannya sesuai. Dan animasi
idle telah selesai dibuat.

21. Tambahkan animasi character_run dengan langkah-langkah yang sama seperti


character_idle.
22. Ganti animasi menjadi character_run pada window Animation.

34 | P a g e
23. Buka direktori Assets\Character\Cat\run. Tambahkan seluruh gambar tersebut ke
Animation. Atur Samples dari animasi tersebut sehingga kecepatannya sesuai. Dan
animasi run telah selesai dibuat.

24. Atur animasi sehingga dapat saling berelasi. Buka pada menu Animator.

35 | P a g e
25. Pada menu Parameters, tambahkan parameter baru dengan tipe data integer untuk
memanggil animasi.

26. Input nama parameter tersebut dengan nama “state” dan dengan nilai 0.

36 | P a g e
27. Buat transisi antar animasi dengan menggunakan klik kanan pada animasi,
kemudian pilih Make Transition dan klik pada animasi selanjutnya.

28. Atur transisi pada animasi character_idle ke character_run tersebut. Hapus centang
pada Has Exit Time, atur Transtion Duration menjadi 0, dan tambahkan kondisi
pada bagian Condition dengan state dan dengan nilai Equals 1.

37 | P a g e
29. Atur transisi pada animasi character_run ke character_idle tersebut. Hapus centang
pada Has Exit Time, atur Transtion Duration menjadi 0, dan tambahkan kondisi
pada bagian Condition dengan state dan dengan nilai Equals 0.

30. Buka script character_movement dengan menggunakan code editor, kemudian


ketikkan di bawah ini untuk pergerakan karakter beserta dengan animasi.

Source code untuk pergerakan karakter beserta dengan animasi:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class character_movement : MonoBehaviour


{
Rigidbody2D rb;
SpriteRenderer sprite;
private Animator anim;
public float movementSpeed;
private float horizontal = 0f;

private enum movementState { character_idle, character_run }

void Start()
{
rb = GetComponent<Rigidbody2D>();
sprite = GetComponent<SpriteRenderer>();
anim = GetComponent<Animator>();
}

void Update()

38 | P a g e
{
horizontal = Input.GetAxisRaw("Horizontal");
rb.velocity = new Vector2(horizontal * movementSpeed,
rb.velocity.y);

if (Input.GetKey(KeyCode.A))
{
horizontal = -1f;
}

else if (Input.GetKey(KeyCode.D))
{
horizontal = 1f;
}

UpdateAnimationState();
}

private void UpdateAnimationState()


{
movementState state = movementState.character_idle;;

if (horizontal > 0f)


{
state = movementState.character_run;
sprite.flipX = false;
}

else if (horizontal < 0f)


{
state = movementState.character_run;
sprite.flipX = true;
}

anim.SetInteger("state", (int)state);
}
}

39 | P a g e
31. Tambahkan layer pada Inspector. Pilih pada layer kemudian pilih opsi Add Layer.

32. Tambahkan layer pada User Layer 10 dengan nama ground.

33. Pilih game object Collider kemudian ganti layer menjadi ground.

40 | P a g e
34. Jika muncul peringatan, maka pilih Yes, change children.

35. Tambahkan source code character_movement sehingga karakter dapat melompat.

Source code untuk karakter melompat:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class character_movement : MonoBehaviour


{
Rigidbody2D rb;
SpriteRenderer sprite;
private Animator anim;
public float movementSpeed;
public float jumpForce;
private float horizontal = 0f;
public LayerMask ground;

private enum movementState { character_idle, character_run }

void Start()
{
rb = GetComponent<Rigidbody2D>();
sprite = GetComponent<SpriteRenderer>();
anim = GetComponent<Animator>();
}

void Update()
{
horizontal = Input.GetAxisRaw("Horizontal");

41 | P a g e
rb.velocity = new Vector2(horizontal * movementSpeed,
rb.velocity.y);

if (Input.GetKey(KeyCode.A))
{
horizontal = -1f;
}

else if (Input.GetKey(KeyCode.D))
{
horizontal = 1f;
}

if (Input.GetKey(KeyCode.Space) && isGrounded())


{
rb.velocity = Vector2.up * jumpForce;
}

UpdateAnimationState();
}

bool isGrounded()
{
Vector2 position = transform.position;
Vector2 direction = Vector2.down;
float distance = 0.5f;

RaycastHit2D hit = Physics2D.Raycast(position, direction,


distance, ground);
if (hit.collider != null)
{
return true;
}

return false;
}

private void UpdateAnimationState()


{
movementState state = movementState.character_idle; ;

if (horizontal > 0f)


{
state = movementState.character_run;
sprite.flipX = false;
}

else if (horizontal < 0f)

42 | P a g e
{
state = movementState.character_run;
sprite.flipX = true;
}

anim.SetInteger("state", (int)state);
}
}

36. Pilih game object cat, kemudian atur Jump Force dengan angka dan ganti Ground
menjadi layer ground.

37. Pilih game object cat, kemudian atur Gravity Scale dengan angka sehingga
gravitasinya sesuai.

43 | P a g e
38. Buat animation baru pada direktori Assets\Animation dengan nama
character_jump dan character_fall.

39. Drag and drop file character_jump dan character_fall tersebut ke game object cat.
Buka window animation dengan menggunakan shortcut CTRL + 6. Buka direktori
Assets\Character\Cat\jump. Tambahkan seluruh gambar tersebut ke Animation.
Atur Samples dari animasi tersebut sehingga kecepatannya sesuai. Dan animasi
jump telah selesai dibuat.

44 | P a g e
40. Ganti animasi menjadi character_fall pada window Animation. Buka direktori
Assets\Character\Cat\fall. Tambahkan seluruh gambar tersebut ke Animation. Atur
Samples dari animasi tersebut sehingga kecepatannya sesuai. Dan animasi fall telah
selesai dibuat.

41. Atur animasi sehingga dapat saling berelasi. Buka pada menu Animator.

45 | P a g e
42. Tambahkan transisi pada setiap tabel. Hapus centang pada Has Exit Time dan ubah
Transition Duration menjadi 0 pada seluruh transisi animasi.

Kondisi dari transisi animasi adalah sebagai berikut:


Animasi Awal Animasi Akhir state Equals Nilai
character_idle character_run state equals 1
character_idle character_jump state equals 2
character_idle character_fall state Equals 3
character_run character_idle state Equals 0
character_run character_jump state Equals 2
character_run character_fall state Equals 3
character_jump character_idle state Equals 0
character_jump character_run state Equals 1
character_jump character_fall state Equals 3
character_fall character_idle state Equals 0
character_fall character_run state Equals 1
character_fall character_jump state Equals 2

46 | P a g e
43. Tambahkan source code character_movement sehingga karakter dapat melompat
beserta dengan animasi.

Source code untuk karakter melompat dengan animasi:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class character_movement : MonoBehaviour


{
Rigidbody2D rb;
SpriteRenderer sprite;
private Animator anim;
public float movementSpeed;
public float jumpForce;
private float horizontal = 0f;
public LayerMask ground;

private enum movementState { character_idle, character_run,


character_jump, character_fall }

void Start()
{
rb = GetComponent<Rigidbody2D>();
sprite = GetComponent<SpriteRenderer>();
anim = GetComponent<Animator>();
}

void Update()
{
horizontal = Input.GetAxisRaw("Horizontal");
rb.velocity = new Vector2(horizontal * movementSpeed,
rb.velocity.y);

if (Input.GetKey(KeyCode.A))
{
horizontal = -1f;
}

else if (Input.GetKey(KeyCode.D))
{
horizontal = 1f;
}

if (Input.GetKey(KeyCode.Space) && isGrounded())


{

47 | P a g e
rb.velocity = Vector2.up * jumpForce;
}

UpdateAnimationState();
}

bool isGrounded()
{
Vector2 position = transform.position;
Vector2 direction = Vector2.down;
float distance = 0.5f;

RaycastHit2D hit = Physics2D.Raycast(position, direction,


distance, ground);
if (hit.collider != null)
{
return true;
}

return false;
}

private void UpdateAnimationState()


{
movementState state = movementState.character_idle; ;

if (horizontal > 0f)


{
state = movementState.character_run;
sprite.flipX = false;
}

else if (horizontal < 0f)


{
state = movementState.character_run;
sprite.flipX = true;
}

if (rb.velocity.y > .1f)


{
state = movementState.character_jump;
}
else if (rb.velocity.y < -.1f)
{
state = movementState.character_fall;
}

anim.SetInteger("state", (int)state);

48 | P a g e

Anda mungkin juga menyukai