Files

4.7 KiB

Interactive Base — 장면 안에서 클릭할 수 있는 것들

Interactive Base는 그림 장면에 클릭할 수 있는 오브젝트를 넣습니다. 땅에 놓인 물건, 문, "납골당 뒤"의 한 지점 같은 것입니다. 오브젝트는 배경 위에 그려지는 자체 이미지를 가질 수 있고, 마우스를 올리면 빛나며, 클릭하면 시나리오가 시작됩니다. 시나리오는 이야기가 진행됨에 따라 오브젝트를 추가하거나 제거합니다.

Cthangover의 프롤로그가 이를 사용합니다. RPG World의 타일 맵은 대신 자체 이벤트를 사용합니다.

게임 속에서

Cthangover 시작 부분에서 골목의 자전거 옆에는 붉은 천이 놓여 있습니다. 배경의 일부가 아니라 자체 이미지를 가진 인터랙티브 오브젝트입니다.

Cthangover 시작의 골목: 벽에 기댄 자전거와 그에 걸린 붉은 천, 오른쪽 위의 툴바.

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

마우스를 올리기 전과 후의 천; 오른쪽은 색조가 약간 따뜻해집니다.

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

클릭 후: 대화 상자에 Marao의 초상화와 천의 시나리오 첫 줄.

인터랙티브 오브젝트

오브젝트는 mod의 interactives/ 폴더에 들어 있는 JSON 파일입니다. 사진 속 천(Cthangover 것)이며, 외곽선 정점은 축약했습니다.

{
  "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는 시나리오 커맨드를 실행합니다.

오브젝트를 장면에 넣기

정의만으로는 어디에도 나타나지 않습니다. 장면의 시나리오가 오브젝트를 추가하고, 보통 클릭의 시나리오가 제거합니다.

interactive_add cloak_ground
interactive_remove cloak_ground

장면이 바뀌면 오브젝트는 지워지므로, Cthangover는 들어올 때마다 이야기를 확인하는 장면 시나리오로 다시 추가합니다.

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. 가져간 오브젝트가 다시 나타납니다. 추가하는 시나리오는 클릭의 시나리오가 설정하는 것과 같은 태그나 플래그를 확인해야 합니다.