Skip to content

Commit 6bb4a40

Browse files
committed
Revisi T7 Done (Hidden)
1 parent a26896d commit 6bb4a40

32 files changed

Lines changed: 20 additions & 17 deletions

docs/tutorials/tutorial-7/README.md

Lines changed: 20 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ dan membuat level bidang 3D sederhana.
2929
3030
### 2D vs 3D
3131

32-
Pada tutorial yang dilakukan sebelum masa UTS, kita sudah membuat game dua dimensi (2D)
32+
Pada tutorial sebelumnya, kita sudah membuat game dua dimensi (2D)
3333
dimana pemain dapat bergerak pada ruang dua dimensi. Pemain dapat bergerak ke atas,
3434
bawah, kiri, dan kanan. Pada game 3D, terdapat sumbu tambahan pada ruang koordinat,
3535
yaitu sumbu Z yang memberikan unsur kedalaman dan volume. Hal ini menyebabkan pengembangan
@@ -68,7 +68,8 @@ tambahkan ```Camera3D``` sebagai *child node* dari *Head*.
6868

6969
![Susunan awal Player](images/playertreeworaycast.png)
7070

71-
Pada node ```CollisionShape3D```, pada tab *Inspector*, berikan sebuah ```Shape``` yaitu ```CapsuleShape``` untuk
71+
Terlihat bahwa terdapat warning pada node ```CollisionShape3D```, sesuai arahan warning tersebut,
72+
kita perlu membuka tab *Inspector*, kemudian memberikan sebuah ```Shape``` yaitu ```CapsuleShape``` untuk
7273
memberi *collision* pada pemain.
7374

7475
![Collision Shape](images/collisionshape.png)
@@ -133,7 +134,7 @@ Pada *Project* > *Project Settings*, pada tab *Input Map*, tambahkan action `mov
133134
`movement_backward`, `movement_left`, `movement_right`, `jump` dan `interact` sebagai berikut
134135
apabila belum ada (akan digunakan nantinya):
135136

136-
![Input](images/input.jpg)
137+
![Input](images/input.png)
137138

138139
Perhatikan bahwa:
139140

@@ -161,6 +162,9 @@ var camera_x_rotation: float = 0.0
161162
...
162163
163164
func _input(event):
165+
if Input.is_action_just_pressed("ui_cancel"):
166+
Input.set_mouse_mode(Input.MOUSE_MODE_VISIBLE)
167+
164168
if event is InputEventMouseMotion and Input.get_mouse_mode() == Input.MOUSE_MODE_CAPTURED:
165169
head.rotate_y(deg_to_rad(-event.relative.x * mouse_sensitivity))
166170
@@ -223,6 +227,7 @@ merepresentasikan sebuah garis dari suatu titik ke titik lain, dan menkueri obje
223227
ditemuinya. Tambahkan *node* ```RayCast3D``` sebagai *child* dari *Camera3D* pemain. **Pastikan
224228
```RayCast3D``` menghadap arah yang sama dengan ```Camera3D``` dengan mengatur nilai *target position* di *inspector* dan jangan lupa untuk meng-enable node ```RayCast3D``` melalui tab inspector.**
225229

230+
![Inspector RayCast3D](images/raycastinspector.png)
226231
![Susunan Player](images/playertree.png)
227232

228233
Pada *node* ```RayCast3D```, tambahkan *script* sebagai berikut:
@@ -313,7 +318,7 @@ untuk membuat objek 3D untuk menghias room yang telah kita buat.
313318
Untuk memudahkan penglihatan pada *viewport*, anda dapat mengubah proyeksi menjadi *Orthogonal* dengan mengklik menu
314319
pojok kiri atas dalam *viewport*.
315320

316-
![Changing Projection](images/ChangeProjection.jpg)
321+
![Changing Projection](images/ChangeProjection.png)
317322

318323
Buat sebuah 3D Scene baru dan beri nama ```ObjLamp```. Tambahkan child node baru dengan memilih ```CSGCombiner3D``` dan
319324
beri nama ```lamp```. ```CSGCombiner3D``` berfungsi sebagai tempat untuk mengatur komponen CSG di dalamnya, jangan lupa
@@ -323,9 +328,7 @@ Dalam ```lamp``` masukkan child note untuk membentuk bagian lampu.
323328

324329
- Buat ```CSGCylinder3D``` dengan cek *cone* pada tab Inspector untuk bagian bawah lampu.
325330
- Buat ```CSGCylinder3D``` dan atur ukuran pada tab Inspector untuk menjadi tiang lampu.
326-
- Buat ```CSGPolygon3D``` dengan memilih Mode *Spin* pada tab Inspector, lalu ubah proyeksi menjadi *Front View* dan atur
327-
328-
Titik pada polygon hingga membentuk trapesium untuk membentuk penutup lampu.
331+
- Buat ```CSGPolygon3D``` dengan memilih Mode *Spin* pada tab Inspector, lalu ubah proyeksi menjadi *Front View* dan atur titik pada polygon hingga membentuk trapesium untuk membentuk penutup lampu.
329332

330333
![CSG Lamp](images/CSGLamp.png)
331334

@@ -352,25 +355,25 @@ Misalkan kita ingin menambahkan halangan untuk player dapat menuju goal seperti
352355

353356
Buka Scene ```World 1```, lalu buat ```CSGCombiner``` baru dan centang ```Use Collision``` pada tab Inspector. Lalu masukkan Node ```Room 1``` ke dalam CSGCombiner yang telah dibuat. Tambahkan 2 ```CSGBox``` ke dalam CSGCombiner3D masing-masing akan menjadi room yang baru dan lubang. Atur sedemikian rupa menggunakan operation ```Union``` untuk membuat ruang baru dan lubang.
354357

355-
![Obstacle Mapping](images/ObstacleMap.jpg)
356-
![Obstacle](images/obstacle.jpg)
358+
![Obstacle Mapping](images/ObstacleMap.png)
359+
![Obstacle](images/obstacle.png)
357360

358361
Lalu tambahkan ```CSGBox3D``` lagi diluar CSGCombiner3D agar player bisa melompati lubang untuk menyebrang.
359362

360-
![Jumping Path](images/path.jpg)
363+
![Jumping Path](images/path.png)
361364

362365
### Adding Goal Condition
363366

364367
Sebelumnya kamu telah telah belajar menggunakan signals pada 2D level, kali ini kita akan mencoba menggunakan signals kembali untuk menambahkan goal condition.
365368

366369
Pertama buat scene baru (nama bebas) dengan ```Area3D``` sebagai root node.
367370

368-
![New Area](images/AreaNode.jpg)
371+
![New Area](images/AreaNode.png)
369372

370373
Lalu tambahkan node ```CollisionShape3D``` sebagai child dari node ```Area3D``` tadi.
371374
Jangan lupa untuk membuat _collision shape_ pada node ```CollisionShape3D``` (Kamu seharusnya sudah pernah melakukannya pada tutorial sebelumnya) kali ini buat bentuk *Sphere*.
372375

373-
![Area Hierarchy](images/AreaMap.jpg)
376+
![Area Hierarchy](images/AreaMap.png)
374377

375378
Kemudian _attach_ sebuah script pada node ```Area3D``` (penamaan bebas).
376379
Hapus semua baris kecuali baris pertama, kita akan menggunakan _Signals_ untuk fitur ini.
@@ -380,12 +383,12 @@ Hapus semua baris kecuali baris pertama, kita akan menggunakan _Signals_ untuk f
380383
Pertama select node ```Area3D``` lalu buka tab ```Node```.
381384
Lalu pada subtab ```Signals``` pilih ```body_entered(Node body)``` dan klik tombol ```Connect``` di kanan bawah tab tersebut.
382385

383-
![Signals](images/AreaSignals.jpg)
386+
![Signals](images/AreaSignals.png)
384387

385388
Pastikan ```Area3D``` terpilih pada bagian ```Connect To Node```, isi ```Method In Node``` dengan nama fungsi yang kamu inginkan atau biarkan default.
386389
Jika sudah tekan tombol ```Connect```
387390

388-
![Connect Signal](images/AreaSignalAdd.jpg)
391+
![Connect Signal](images/AreaSignalAdd.png)
389392

390393
Maka script pada ```Area3D``` akan ditambah fungsi tersebut.
391394

@@ -397,7 +400,7 @@ extends Area3D
397400
398401
@export var sceneName := "Level 1"
399402
400-
func _on_Area_Trigger_body_entered(body):
403+
func _on_body_entered(body: Node3D) -> void:
401404
if body.get_name() == "Player":
402405
get_tree().change_scene_to_file(str("res://scenes/" + sceneName + ".tscn"))
403406
```
@@ -412,7 +415,7 @@ Save scene dan script tersebut (Mulai sekarang disebut ```AreaTrigger```) dan bu
412415
Kemudian tambahkan scene ```AreaTrigger``` sebagai child dari sprite tersebut, silakan atur scaling sesuai keperluan.
413416
Jangan lupa ubah variable ```Scene Name``` menjadi "Win Screen".
414417

415-
![Camera Inspector](images/AreaInspector.jpg)
418+
![Camera Inspector](images/AreaInspector.png)
416419

417420
Lakukan hal yang sama untuk area lubang namun dengan ```Scene Name``` diisi dengan "Level 1".
418421
Supaya ketika player jatuh ke jurang, scene akan di-reload.
@@ -458,7 +461,7 @@ Jangan lupa untuk menjelaskan proses pengerjaan tutorial ini di dalam berkas `RE
458461
Cantumkan juga referensi-referensi yang digunakan sebagai acuan ketika menjelaskan proses implementasi.
459462
Kemudian, _push_ riwayat _commit_-nya ke repositori Git pengerjaan Tutorial 7 dan kumpulkan tautan (URL) repositori Git kamu di slot pengumpulan yang tersedia di SCELE.
460463

461-
Tenggat waktu pengumpulan adalah **Jumat, 28 Maret 2025, pukul 21:00**.
464+
Tenggat waktu pengumpulan adalah **Jumat, 3 April 2026, pukul 21:00**.
462465

463466
## Referensi
464467

21.8 KB
Loading
-14.5 KB
Binary file not shown.
14.5 KB
Loading
-11.3 KB
Binary file not shown.
13.3 KB
Loading
-70.7 KB
Binary file not shown.
134 KB
Loading
-72.5 KB
Binary file not shown.
67.1 KB
Loading

0 commit comments

Comments
 (0)