0% menganggap dokumen ini bermanfaat (0 suara)
22 tayangan8 halaman

Modul Unity 7

Dokumen tersebut memberikan instruksi untuk menambahkan fitur pintu dan tombol yang dapat dikendalikan karakter dalam game Unity. Instruksi tersebut meliputi menambahkan asset pintu dan tombol, menambahkan script untuk mengatur perilaku pintu dan tombol, serta mengatur kolider dan efek untuk interaksi tombol.

Diunggah oleh

raia
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
22 tayangan8 halaman

Modul Unity 7

Dokumen tersebut memberikan instruksi untuk menambahkan fitur pintu dan tombol yang dapat dikendalikan karakter dalam game Unity. Instruksi tersebut meliputi menambahkan asset pintu dan tombol, menambahkan script untuk mengatur perilaku pintu dan tombol, serta mengatur kolider dan efek untuk interaksi tombol.

Diunggah oleh

raia
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
Anda di halaman 1/ 8

PINTU DAN TOMBOL

1. Buka direktori Assets\Level\Object. Buat direktori baru pada direktori Object


tersebut dengan nama Door.

2. Tambahkan gambar objek pintu dan switch pada direktori Door tersebut yang sudah
disediakan pada folder Google Drive.

60 | P a g e
3. Tambahkan door dan switch tersebut ke Scene game dengan drag and drop gambar
ke Scene game. Ganti nama gambar tersebut pada bagian Hierarchy dengan nama
“door” dan “switch”. Sesuaikan posisi dan ukurannya yang dapat ditentukan pada
bagian Transform.

4. Buka direktori Assets\Script. Tambahkan script baru pada direktori tersebut dengan
nama DoorBehaviour dan SwitchBehaviour, yang digunakan untuk mengatur pintu
dan switch. Drag and drop script DoorBehaviour tersebut ke game object door dan
drag and drop script SwitchBehaviour tersebut ke game object switch.

61 | P a g e
5. Buka script DoorBehaviour dengan menggunakan code editor, kemudian ketikkan
script di bawah ini untuk pergerakan karakter.

Source code DoorBehaviour:

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

public class DoorBehaviour : MonoBehaviour


{
public bool _isDoorOpen = false;
Vector3 _doorClosedPos;
Vector3 _doorOpenPos;
float _doorSpeed = 10f;

void Awake()
{
_doorClosedPos = transform.position;
_doorOpenPos = new Vector3(transform.position.x + -2.5f,
transform.position.y, transform.position.z);
}

void Update()
{
if (_isDoorOpen)
{
OpenDoor();
}
else if (!_isDoorOpen)
{
CloseDoor();
}
}

void OpenDoor()
{
if (transform.position != _doorOpenPos)
{
transform.position =
Vector3.MoveTowards(transform.position, _doorOpenPos, _doorSpeed *
Time.deltaTime);
StartCoroutine(ResetSceneAfterDelay(2.0f));
}
}

62 | P a g e
void CloseDoor()
{
if (transform.position != _doorClosedPos)
{
transform.position =
Vector3.MoveTowards(transform.position, _doorClosedPos, _doorSpeed
* Time.deltaTime);
}
}

IEnumerator ResetSceneAfterDelay(float delay)


{

yield return new WaitForSeconds(delay);

Scene currentScene = SceneManager.GetActiveScene();


SceneManager.LoadScene(currentScene.name);
}
}

6. Buka script SwitchBehaviour dengan menggunakan code editor, kemudian


ketikkan script di bawah ini untuk pergerakan karakter.

Source code SwitchBehaviour:

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

public class SwitchBehaviour : MonoBehaviour


{
[SerializeField] DoorBehaviour _doorBehaviour;
[SerializeField] bool _isDoorOpenSwitch;
[SerializeField] bool _isDoorCloseSwitch;

float _switchSizeY;
Vector3 _switchUpPos;
Vector3 _switchDownPos;
float _switchSpeed = 1f;
float _switchDelay = 0.2f;
bool _isPressingSwitch = false;

[SerializeField] InventoryManager.AllItems _requiredItem;

void Awake()
{

63 | P a g e
_switchSizeY = transform.localScale.y / 10;

_switchUpPos = transform.position;
_switchDownPos = new Vector3(transform.position.x,
transform.position.y - _switchSizeY,
transform.position.z);
}

void Update()
{
if (_isPressingSwitch)
{
MoveSwitchDown();
}

else if (!_isPressingSwitch)
{
MoveSwitchUp();
}
}

void MoveSwitchDown()
{
if (transform.position != _switchDownPos)
{
transform.position =
Vector3.MoveTowards(transform.position, _switchDownPos,
_switchSpeed * Time.deltaTime);
}
}

void MoveSwitchUp()
{
if (transform.position != _switchUpPos)
{
transform.position =
Vector3.MoveTowards(transform.position, _switchUpPos, _switchSpeed
* Time.deltaTime);
}
}

private void OnTriggerEnter2D (Collider2D collision)


{
if (collision.CompareTag("Player"))
{
_isPressingSwitch = !_isPressingSwitch;

if (HasRequiredItem(_requiredItem))

64 | P a g e
{
if (_isDoorOpenSwitch &&
!_doorBehaviour._isDoorOpen)
{
_doorBehaviour._isDoorOpen =
!_doorBehaviour._isDoorOpen;
}

else if (_isDoorCloseSwitch &&


_doorBehaviour._isDoorOpen)
{
_doorBehaviour._isDoorOpen =
!_doorBehaviour._isDoorOpen;
}
}
}
}

private void OnTriggerExit2D (Collider2D collision)


{
if (collision.CompareTag("Player"))
{
StartCoroutine(SwitchUpDelay(_switchDelay));
}
}

IEnumerator SwitchUpDelay (float waitTime)


{
yield return new WaitForSeconds (waitTime);
_isPressingSwitch = false;
}

public bool HasRequiredItem(InventoryManager.AllItems


itemRequired)
{
if
(InventoryManager.Instance._inventoryItems.Contains(itemRequired))
{
return true;
}

else
{
return false;
}
}
}

65 | P a g e
7. Pilih pada game object switch. Tambahkan dua komponen baru yaitu Box Collider
2D. Pada Box Collider 2D yang pertama ditambahkan Offset Y = 0.02 dan centang
pada Is Trigger.

8. Pilih pada game object switch. Tambahkan dua komponen baru yaitu Box Collider
2D dan Platform Effector 2D. Pada komponen Box Collider 2D, centang pada Used
by Effector.

66 | P a g e
9. Setelah source code untuk SwitchBehaviour dibuat, drag and drop game object
door ke Switch Behaviour bagian Door Behaviour dan centang pada Is Door Open
Switch dan Is Door Close Switch.

10. Hasilnya seperti pada gambar di bawah.

67 | P a g e

Anda mungkin juga menyukai