Order interactives inside their layer instead of a global z index; mod documentation
This commit is contained in:
1 parent
8a7a1295ca
commit
3e22a98c08
19 files changed
+650
-9
No files matched your search
+88
@@ -0,0 +1,88 @@
|
||||
# Interactive Base — 장면 안에서 클릭할 수 있는 것들
|
||||
|
||||
Interactive Base는 그림 장면에 클릭할 수 있는 오브젝트를 넣습니다. 땅에 놓인 물건, 문, "납골당 뒤"의 한 지점 같은 것입니다. 오브젝트는 배경 위에 그려지는 자체 이미지를 가질 수 있고, 마우스를 올리면 빛나며, 클릭하면 시나리오가 시작됩니다. 시나리오는 이야기가 진행됨에 따라 오브젝트를 추가하거나 제거합니다.
|
||||
|
||||
Cthangover의 프롤로그가 이를 사용합니다. RPG World의 타일 맵은 대신 자체 이벤트를 사용합니다.
|
||||
|
||||
## 게임 속에서
|
||||
|
||||
Cthangover 시작 부분에서 골목의 자전거 옆에는 붉은 천이 놓여 있습니다. 배경의 일부가 아니라 자체 이미지를 가진 인터랙티브 오브젝트입니다.
|
||||
|
||||

|
||||
|
||||
마우스를 천 위에 올리면 포인터가 손 모양으로 바뀌고, 천은 은은한 금빛으로 물듭니다.
|
||||
|
||||

|
||||
|
||||
클릭하면 천의 시나리오가 시작됩니다. Marao가 그것을 주우면, 시나리오는 오브젝트를 장면에서 제거합니다.
|
||||
|
||||

|
||||
|
||||
## 인터랙티브 오브젝트
|
||||
|
||||
오브젝트는 mod의 `interactives/` 폴더에 들어 있는 JSON 파일입니다. 사진 속 천(Cthangover 것)이며, 외곽선 정점은 축약했습니다.
|
||||
|
||||
```json
|
||||
{
|
||||
"Items": [
|
||||
{
|
||||
"id": "cloak_ground",
|
||||
"texture": "cloak_ground",
|
||||
"layer": "foreground",
|
||||
"zIndex": 5,
|
||||
"cursor": "PointingHand",
|
||||
"hitArea": {
|
||||
"type": "polygon",
|
||||
"vertices": [
|
||||
{ "x": 0.2796, "y": 0.7318 }, { "x": 0.3207, "y": 0.7167 },
|
||||
{ "x": 0.3456, "y": 0.8434 }, { "x": 0.3387, "y": 0.8872 }
|
||||
]
|
||||
},
|
||||
"highlight": { "color": "#FFD70044", "scale": 1, "duration": 0.12 },
|
||||
"actions": {
|
||||
"onClick": { "scenario": "scenarios/prolog/morning_cloak.scenario" }
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
- `texture` — 화면 전체 크기의 그림으로, 오브젝트 외에는 투명하므로 배경과 저절로 맞춰집니다. 보이지 않는 지점으로 만들려면 생략합니다.
|
||||
- `hitArea` — 오브젝트를 클릭할 수 있는 위치로, 화면 비율(0–1)로 나타냅니다. `rect`는 `x`, `y`, `width`, `height`, `circle`은 `x`, `y`, `radius`, `polygon`은 `vertices`를 씁니다.
|
||||
- `layer` — `background` 또는 `foreground`. 둘 다 그림의 일부로 대화 상자, 툴바, 패널 아래에 머뭅니다. `ui`는 모든 것 위에 그려집니다.
|
||||
- `zIndex` — 같은 레이어 오브젝트 사이의 순서: 숫자가 클수록 위에 그려집니다.
|
||||
- `cursor` — 오브젝트 위의 마우스 포인터, 예를 들어 `PointingHand`.
|
||||
- `highlight` — 마우스가 올라와 있는 동안의 색조: `color`(투명도 포함), `scale`, 페이드 시간 `duration`(초).
|
||||
- `enabled`, `visible` — 반응하는지, 처음에 그려지는지.
|
||||
- `actions` — `onClick`은 `scenario` 파일이나 인라인 `commands`를 실행하고, `onHoverEnter`와 `onHoverLeave`는 시나리오 커맨드를 실행합니다.
|
||||
|
||||
## 오브젝트를 장면에 넣기
|
||||
|
||||
정의만으로는 어디에도 나타나지 않습니다. 장면의 시나리오가 오브젝트를 추가하고, 보통 클릭의 시나리오가 제거합니다.
|
||||
|
||||
```scenario
|
||||
interactive_add cloak_ground
|
||||
interactive_remove cloak_ground
|
||||
```
|
||||
|
||||
장면이 바뀌면 오브젝트는 지워지므로, Cthangover는 들어올 때마다 이야기를 확인하는 장면 시나리오로 다시 추가합니다.
|
||||
|
||||
```scenario
|
||||
scene: prolog_alley
|
||||
priority: 15
|
||||
condition: AwakeningQuest.notHasTag("cloak_taken") && AwakeningQuest.notHasTag("book_taken")
|
||||
---
|
||||
interactive_add cloak_ground
|
||||
interactive_add book_ground
|
||||
end
|
||||
```
|
||||
|
||||
이미 있는 오브젝트를 추가해도 아무 일도 일어나지 않으므로, 반복해도 안전합니다.
|
||||
|
||||
오브젝트 배치와 클릭 영역 그리기는 Editor Tools의 인터랙티브 편집기에서도 할 수 있습니다.
|
||||
|
||||
## 문제가 생겼을 때
|
||||
|
||||
1. **클릭해도 아무 일도 없습니다.** 오브젝트가 이 장면에 추가된 적이 없거나, `enabled`가 꺼져 있거나, 클릭이 `hitArea` 밖에 있었던 경우입니다.
|
||||
2. **그림이 엉뚱한 곳에 있습니다.** 텍스처는 배경과 맞는 화면 전체 크기의 그림이어야 하며, 잘라낸 작은 조각이면 안 됩니다.
|
||||
3. **가져간 오브젝트가 다시 나타납니다.** 추가하는 시나리오는 클릭의 시나리오가 설정하는 것과 같은 태그나 플래그를 확인해야 합니다.
|
||||
Reference in new issue
Block a user