덕질/코난 AKAM2017. 9. 21. 09:04


*아카아무/슈레이

*아직 안사귀는 사이

*다소 과거 설정 날조 있음

*스카치 사건에 대한 언급이 있습니다.




잃어버린 것들에 대하여




 아카이 슈이치는 자신의 소매를 당기는 기척에 정신을 차렸다. 긴 흑발이 아름다운 자신의 연인이 걱정스럽게 올려다보는 시선과 마주쳤다. 무얼 하고 있었더라? 한겨울의 쇼핑타운이었다.
 아, 그래. 그녀의 옷을 사려고 했었다. 아주 따뜻한 것으로.

 아케미.
 아카이는 그녀의 이름을 소리 내어 말하는 것에 지독하게도 낯선 느낌을 받았다. 그녀와는 교제한 지 오래되었고, 아주 가끔 사소한 말다툼을 하는 일 외에는 특별할 것이 없었다. 그런데도 아카이는 그 이름이 자신의 목을 울리는 것이 기이했다. 아케미. 이유 없이 이름이 불린 여자는 웃음을 터트렸다. 오늘따라 왜 그래? 추운 날씨에도 불구하고 쇼핑타운은 아주 따뜻해서 테이블에 놓인 음료수는 얼음이 담긴 아메리카노였다. 컵 표면을 타고 맺힌 물방울이 아래로 주르륵 흘러내렸고, 그 시선을 따라 테이블에 놓인 신문을 보았다. 이전에 이 자리에 앉았다 간 누군가가 두고 간 것일 터였다.
늘 같은 내용이었다. 오늘은 또 어느 정치가의 이야기가, 또 어딘가의 사소한 사고가, 처음 듣는 이름의 부고가, 실종 아동을 찾는 광고가.
 ─ 당신의 작은 관심이 잃어버린 아이를……
 실종?
 ─ 부모의 품으로…
 아니다. 아카이는 그보다 더 중요한 무언가를 떠올려야 했다. 그러나 기억이 나지 않았다. 슈이치? 다시 품 안의 사랑스러운 목소리가 귓가를 울렸다. 그녀가 자신을 부르는 이름이 뭐였더라? 아카이 슈이치. 자신의 이름을 부르는 소리, 쇼핑 타운의 캐럴, 웃음소리, 아이의 소리,

 거봐. 그는 역시 의심할 거라고 했잖아.

 이 스쳐 지나가는 목소리는 누구의 것이었더라?




*




 에도가와 군, 지금은 쿠도 군이 된 청년이 미국에 간 것은 약 보름 전이었다. 목적은 단순한 여행이었다. 아니, 정확히는 그러기를 바랐다고 하는 것이 맞을 것이다. 그는 혼자가 아니었으며 이 귀여운 두 사람의 어린 연인이 사건에 휘말린 것은 이제는 어쩌면 익숙한 일이었다. 이번만큼은 그러지 말았어야 했는데. 전화 너머의 목소리가 조금 젖은 것 같기도 했고, 지친 것 같기도 했다.

 사소하게 불행한 사건이어야 했었다. 그래서 쿠도 군은 건물에서 폭발음이 들리는 가운데 아카이의 신호가 Lost를 띄워도, 단순히 무선 통신기의 고장으로 아무 문제가 없을 것이라고 생각했다고 한다. 모리 양이 약간 다쳤기 때문에 정신이 없었다고 했었고, 그는 네가 자책하는 것을 원하지 않을 거라고 애써 위로했지만, 나라를 뛰어넘고 걸려온 전화의 건너편까지 잘 전해졌는지는 알 수 없었다.

 어쨌거나 그의 말에 따르면 아카이는 짧은 실종, 발견된 이후인 며칠 전부터 의식 불명으로 병원에 누워있다고 한다. 쿠도 군과 모리 양이 번갈아가면서 그의 병실을 지키다가 결국 보다 못한 스털링 요원에게서 돌아가라는 말을 들었다고 한 것이 어제였다. 아마 지금쯤 비행기에 몸을 싣고는 오지 않는 잠을 억지로 청하고 있겠지.

 그리고 일주일 전부터, 후루야 레이는 아카이 슈이치의 꿈을 꾸고 있었다.


 꿈의 내용은 다양했다. 어쩔 때 그는 한참 어린 아카이 슈이치를 보기도 했고, 때로는 알고 있는 것보다 훨씬 늙은 남자를 보기도 했다. 내용은 뒤죽박죽이었고 연관성이 없었다. 어쨌거나 꿈속의 그에게 후루야는 보이지 않았고, 늘 이어지는 건 아니었으며, 꿈의 내용은 제멋대로인데다가, 모르는 것들 투성이었다. 다만 한 가지 확실한 것은 있었다.


 꿈이 사흘째 되던 날의 어린 아카이 슈이치는 크리스마스트리 앞에서 서있었다. 주변을 둘러보자 여기저기서 이야기를 나누고 있는 사람들이 있었으며 어린 아카이는 일본어로 어떤 여성과 이야기하고 있었다. 아카이 슈이치는 원래 영국 국적이라고 했었는데. 그런 생각을 하자마자 주변의 풍경이 변했다. 대화는 그대로였고 그를 통과해 스쳐 지나가는 사람도 변하지 않았는데 장소는 외국 어딘가로 바뀌었다. 후루야 레이는 그 순간 깨달았다.

 이 꿈의 조율자는 자신이었다.


 그렇다고 해도 크게 달라지는 것은 없었다. 후루야 레이는 아카이 슈이치에 대해서 아는 것이 별로 없었기 때문에 후루야 레이가 모르는 다른 삶을 살았다. FBI에 들어가지 않거나, 조직이 없거나, 여동생이 태어나는 것을 지켜보거나. 또는 부모가 모두 살아있는 삶을 살거나, 아니거나. 한 때는 이 꿈을 조정하면 '그 날'의 진실을 볼 수 있지 않을까 생각하기도 했었다. 그러나 꿈은 그가 모르는 아카이 슈이치에 대해서 보여주고 있었기 때문에 금방 그 생각을 그만두었다. 어디까지가 사실이고 아닌지를 알 수 없었다.

 아카이 슈이치는 후루야가 마련한 꿈속의 평범한 세계에서 평범하게 살아갔고, 그리고 마지막에는 늘 무언가를 의심하기 시작했다. 그러면 항상 꿈에서 깨어날 때가 되었다. 후루야 레이가 그러길 원했기 때문에, 아카이 슈이치의 세계 안에서 그는 항상 존재하지 않았다.


 약 여섯 시간 남짓의 수면에서 깨어난 후루야는 머리를 쓸어 올리며 한숨을 내쉬었다. 몸을 일으키자 땀이 났었는지 옷이 달라붙은 등 뒤가 소름 끼치도록 서늘해졌다. 대체 왜 이런 꿈을 꾸고 있는지 이해를 할 수가 없었다. 그와 자신이 무슨 사이라고? 처음 쿠도 군의 연락을 받았던 날 꺼내 두었던 여권이 책상 위에서 뒹굴고 있었다. 정말로 이해를 할 수가 없었다. 그 어린 ─이제는 성인이 되어서 마냥 어리지는 않은 탐정이 굳이 자신에게 연락을 했던 것은 그냥 과거의 인연으로 어딘가에 털어놓을 사람이 필요했을 뿐일 것이다. 한 때는 그와 내가, 그리고 어린 명탐정이 함께 행동했었던 때도 있었지……. 그러나 그것은 과거의 일이다. 후루야는 자신에게 다시 확인하듯 생각했다. 그는 아카이 슈이치를 찾아갈 이유가 없었다. 정말로.



 자신의 이름이 아닌 이름을 달고 있었던 것이 어딘가 먼 날의 일만 같았다. 오래도록 그와 많은 사람들을 괴롭히던 일이 한단락 끝나고 나서 후루야의 업무는 주로 서류처리에 집중되어있었다. 한동안 현장에서 일했던 탓이기도 했고 정신적으로 안정이 필요하다고 해서 결정된 일이기도 했다. 본인의 의사와는 상관없이 결정되었지만 후루야는 받아들였다. 어쨌거나 그는 유능한 인재였고, 쓸모 있는 사람은 자의든 타의든 한직에 오래 머물 수가 없다는 것을 알고 있었다.

 서류 처리라고 해도 쉬운 일은 아니었고, 카자미를 비롯한 익숙한 얼굴들과 하루 종일 사무실에서 푸닥거리를 하고 집에 돌아가기를 반복하는 일상이었다. 후루야는 아침에 사두었던 샌드위치를 입에 집어넣으며 종이를 쳐다보았다. 부하 중 누군가가 작성한 제안서였고 정식으로 상신하기 전에 그가 검토하기로 했었다. 고쳐야 할 부분은 많았고, 샌드위치의 소스는 시큼한 게 별로 맛이 없었다.

 인상을 쓰는 그를 걱정스럽게 바라보는 옆자리의 부하에게 별 일 아니라고 손을 흔들고는, 필통의 펜을 집어들었다. 후루야는 잠시 망설이다가, 붉은색 펜을 도로 내려놓고는 푸른색 펜을 다시 집어 들었다. 흰 종이에 선이 죽 그려지고 빠른 필기체가 쓰였다. 군데군데 파란색 흔적을 남긴 종이 끄트머리에 적힌 이름을 그대로 읽고는 부하에게 돌려주며 말했다.


 다시 쓰라고 전달해줘.


 상대가 고개를 숙이고는 종이를 가져갔다. 그 뒷모습을 보다가 후루야는 다시 서류더미에 코를 박았다. 샌드위치가 맛이 없어서 그는 마실 것을 절실하게 바라게 되었다. 커피 말고 다른 걸로.




 후루야 레이는 눈을 떴다. 여름이었다. 그래서 그는 이번에는 바다를 보자고 생각했다. 자신이 잘 모르는 나라의 투명한 바다가 눈 앞에 펼쳐졌고, 아카이 슈이치는 이번엔 혼자였다. 대충 자신이 알고 있는 나이보다는 어려보였다.

 꿈을 조율한다고 해도 24시간 의식이 없는 사람하고 달리 그는 일을 하는 사람이었다. 하루에 길면 예닐곱 시간, 어쩔 때는 잠들지 못하는 날도 있었다. 그러므로 그가 없을 시간의 꿈에 대해서는 알 수 없었고, 그래서 후루야 레이의 꿈은 언제나 느닷없이 시작했다.


 아카이 슈이치는 맨발로 모래를 밟고 있었다. 한 손에는 투명한 컵을 들고 있었는데 아카이 답지 않게 커피가 아니라 레몬이 들어간 트로피컬 음료인 것 같았다. 마시고 싶네. 후루야는 멍하니 생각했다. 파도는 잔잔했고 햇살이 물결에 부서지고 있었으며 바닷가는 사람 없이 조용했다. 봐, 그가 혼자 있어. 후루야 안의 무언가가 속삭였다. 그는 너를 기억하고 있을까? 후루야 레이가 이 꿈을 마음대로 할 때부터 그는 목소리에 시달렸다. 그것은 자신을 비웃기도 했고, 동정하기도 했다. 너는 그가 너를 잃어버린 채로 있기를 바라는 거야? 아니면, 후루야는 모래사장에서 세차게 발을 내리딛었고 모래가 사방으로 튀었다. 신발을 신고 있다고 생각했는데 어느새 맨발이었다. 후루야 레이는 이 세계의 유실물이었고 아카이 슈이치가 잃어버린 것들 중 하나였다. 아카이가 가질 수 있었던 평범한 일생, 사랑, 가족, 그외의 모든 것들과 같이.


 아카이 슈이치는 걷다가 몸을 숙였다. 발 밑에 있던 조개껍데기라도 발견한 것 같았다. 저런 로맨틱한 행동도 할 줄 아는 사람이었나? 후루야의 생각대로 그는 동그랗게 말린 그것을 자신의 귀에 가져다 대었다. 눈앞의 진짜 바다는 조용했는데 껍데기 속의 바다는 깊은 소리를 내고 있었다. 돌연, 그가 이쪽을 돌아보았다. 이 세계에서 그는 후루야 레이를 볼 수 없는데도 눈이 마주쳤다고 생각할 만큼 똑바로. 그 입술이 움직이고, 목 울대가 진동하는 것이 보이고,




 소리가 닿기 전에 후루야는 잠에서 깨었다. 테이블 위에서 엎드려 잠들었는지 온 몸이 쑤시는 와중에 주머니 속에 들어있던 핸드폰이 짧게 한 번 더 진동했다가 끊겼다. 메시지가 온 모양이었다. 피곤한 손길로 주머니를 더듬어 꺼내자 화면에 비치는 발신자는 쿠도 신이치, 밤늦게 일본에 도착할 예정이라는 내용이었다. 모리 양이 많이 피곤하겠네, 시답잖은 생각을 하며 핸드폰을 도로 주머니에 쑤셔 넣었다. 얼음이 죄다 녹아서 식어빠진 커피를 한 입에 털어 넣자 대번에 인상이 구겨졌다.


 카자미. 먼저 들어간다.


 참 이상하게도 그의 부하들은 그가 일찍 퇴근하거나 조금이라도 쉬려는 기색을 보이면 반갑게 여기는 경향이 있었다. 오래 호흡을 맞추어 일했던 카자미가 그의 조기 퇴근 선언에 기꺼워하며 고개를 끄덕였고, 10분 뒤 후루야는 자신의 차에 올라 주차장을 빠져나갔다. 목적지는 쿠도 저였다.



 의식 불명의 환자. 같은 자세로 오래 누워있으면 피부가 짓무르기 때문에 수시로 자세를 바꿔주어야 한단다. 참 우스운 이야기였다. 후루야는 그와 맞부딪쳤을 때 옷 밑의 그 몸이 얼마나 단단했었는지를 기억하고 있었다. 그런 사람이, 피부가 짓무른다니. 아무리 생각해도 상상할 수 없는 일이었다. 한 때는 그가 죽는 것을 바라기도 했었고, 함께 있는 동안에도 그런 생각을 완전히 잊을 수는 없었다. 그가 미국으로 돌아가기 전까지도 그랬다. 그랬는데, 막상 그가 정말로 죽은 사람처럼 일어나질 못한다고 하니 기분이 이상했다.


 아카이 슈이치가 더이상 오키야 스바루일 필요가 없어지고도 그는 여기서 한 달여를 더 지냈다. 때때로 찾아오는 어린이 탐정단을 위해서 그는 오키야 스바루로 돌아가기도 했었다. 그럴 때는 후루야 레이도 아무로 토오루가 되고는 했다. 우리의 관계는 이상했고, 정의할 수 없었지만 유지되고 있었다. 아마도 그 관계의 이름 역시 어딘가에서 잃어버린 모양이지. 후루야 레이는 생각했다. 끝나지 않는 꿈에서 당신은 또 어디를 헤매고 있을까.

 후루야는 차를 적당한 위치에 주차해두고 저택의 안으로 들어갔다. 아카이 슈이치가 떠나고 나서 그 집은 자신의 본래 몸을 되찾은 쿠도 군의 자택으로 돌아갔지만, 그 남자가 머물렀던 방은 여전히 그대로 남겨두었다고 했다. 쿠도 신이치가 자신의 집 보다 모리 란의 집에서 머무르는 날이 더 늘어난 탓이기도 했다.

 안쪽에 있는 방들 중 하나, 창문에서 정문이 잘 보이는 위치에 있는 방의 문을 열고 후루야는 안에 들어섰다. 사용하는 사람이 없는 방은 싸늘하게 식어있었다. 본래 자기 짐을 많이 두지 않았기에 빈 방과 크게 다를 것이 없었다.


 왜.


 후루야는 자신의 목소리가 지독하게 잠겨 있는 것을 알았다.


 왜 나에게 당신을 보여주고 있죠?


 대답할 사람은 거기에 없었다. 후루야는 방 한쪽에 놓여있던 와인냉장고를 열자 언제부터 들어있었는지 모를 버본 한 병이 거기에 있었다. 그걸 깨트려버리고 싶은 충동을 참았다. 여기가 정말 아카이 슈이치의 집이었다면 망설이지 않았을지도 모르겠지만, 저택의 주인은 따로 있었고 후루야는 그 청년을 별로 싫어하지 않았다. 위스키 한 병을 가져온 종이 가방에 담고는, 이번에는 책상의 서랍장을 열었다. 안은 텅 비어있었지만 그는 어렵지 않게 서랍장 밑의 판자를 들어 올렸다. 아카이 슈이치가 한 것 치고는 너무 알기 쉬운 장치였다. 그래서였는지 안에서 나온 것은 별것 없었다. 없었지만, 후루야 레이는 그게 뭔지 알고 있었다. 예전에도 본 적이 있었다.

 이제는 잊어버리려고 했던 시절의 기억이었다.


 낡아빠진 사진을 꺼내 챙기고서는 후루야는 서랍장을 다시 원래대로 돌려놓았다. 옷장을 열어서 몇 벌 남아있던 옷도 챙겼다. 그나마 남아있던 사람의 흔적을 없애려는 듯 있던 물건을 죄다 가방에 넣고는 자신의 차 보조석에 던져놓듯 가져다 놓았다. 쿠도 군이 돌아오기 전에 떠나야 했다. 후루야가 굳이 자신이 방문했던 흔적을 지우려고 하진 않았으니 그 똑똑한 청년은 누가 다녀갔는지 금방 알 것이다. 지금의 행동에 문제를 삼지 않을 것이라는 건 알지만, 쿠도 군과 마주쳐 굳이 그의 이야기를 언급하고 싶지는 않았다. 흰색 차량은 매끄럽게 저택 근처를 빠져나갔고 올 때처럼 사람 하나 없이 조용해졌다.




 이번에는 익숙한 장소였다. 지금은 볼 수 없는, 수염이 까슬하게 자란 남자가 기타를 만지다가 옆에 앉은 긴 머리의 그를 팔꿈치로 툭 치는 모습이 보였다. 막 담배를 입에 물려던 그가 눈썹만으로 대답하고는 남자를 돌아보았다. 남자가 입을 여는 모습이 보이자 후루야는 손으로 귀를 틀어막았다. 안돼, 듣고 싶지 않아. 거짓말 하기는. 꿈은 그 바람을 배신하고 내면의 욕망을 솔직하게 반영했다.


 라이. 연주 좀 해볼래?

 내가 왜?


 잊으려고 했지만 잊을 수 없는 기억 속의 목소리와 너무 똑같아서, 후루야는 왈칵 눈물을 쏟을 뻔했다.


 스카치는 비협조적인 동료에게 웃으면서 대답했다. 심심하니까. 버본이 받은 일은 밤늦게서야 끝날 거라고. 솔직히 그 녀석이 일을 실패할 거 같지도 않고, 백업이라고 앉아있지만 결국 아무 일도 없이 끝날 거 아니냐. 그니까 심심한 사람들끼리 좀 놀자 이거야. 후루야는 라이가 한숨을 내쉬고는 담배를 도로 곽 안에 집어넣는 것을 보았다.


 화낼 텐데.

 그게 재미있다는 걸 너도 부정하진 않잖냐.


 확실히 자신이 혼자 고생하고 있을 사이에 남은 둘이서 이렇게 노닥거리고 있는 것을 본다면 버본은 분명 화를 냈을 것이다. 이런 일이 처음이 아니고, 실제로도 그런 적이 있었으니 쉽게 상상할 수 있었다. 그는 너를 잘 알고 있으니까.

 라이는 입을 다물고는 스카치에게서 기타를 받아 들었다. 곧 현을 건드리는 소리가 세이프 하우스의 적막한 공기를 울렸다. 예전에 아코디언 연주를 한 적이 있었는데. 그 말에 스카치가 호기심으로 눈을 동그랗게 떴지만, 곧바로 음악이 시작되었다. 스카치는 당장 물어보는 건 미루고 노래를 하기로 마음먹은 것 같았다. 솔직하게 말해서 별로 잘 부르지는 못했었다. 제멋대로 부르는 남자의 노랫소리에 라이는 웃는 표정을 지으면서도 손을 멈추지 않았다. 이건 버본이 모르는 일이었다.

 이 꿈은 어디까지나 후루야의 바람을 반영해서 보여주고 있었고, 후루야는 이 일이 정말로 있었던 일이라고는 확신할 수 없었다. 그러나, 아니라고 생각할 근거도 없었다……. 그는 오키야 스바루의 숨겨진 책상 서랍에서 꺼내왔던, 세명이 찍혀있었던 사진을 보았다. 똑같은 것을 버본도 가지고 있었고, 오래전에 태워서 없애버렸다. 그러므로 아카이 슈이치가 가지고 있던 사진이 세상에 남은 마지막이었다.


 창 밖에서는 비가 쏟아지고 있었다. 한바탕 우스운 노래가 끝나자 라이는 기타를 도로 스카치에게 돌려주었다. 후루야는 지금까지 아카이의 꿈속에서 의도적으로 자신을 지웠지만 이 꿈에는 버본이 있었다. 비록 한 공간에 같이 존재하지는 않았지만. 이 때는 아직 잃어버리지 않았기 때문일 것이다. 이 관계에 대한 것들을.

 라이는 아까 집어넣었던 담배를 도로 꺼내 입에 물고는 성냥을 당겼다. 칙, 하는 소리와 함께 그 얼굴에 그림자가 일렁였다. 그러나 그는 불을 담배에 가져가지 않았다. 기타를 정리하던 스카치가 의아하게 그를 부르는 소리가 들렸다. 아카이 슈이치가 이상함을 느끼기 시작했다. 후루야는 잠에서 깰 준비를 했다.




 꿈속에서 비가 오고 있다고 생각했는데, 눈을 뜨니 정말로 비가 오는 소리가 들렸다. 어두운 공간에 책상 스탠드 하나가 겨우 불을 비추고 있었다. 상반신만 침대 위에 엎어져서 잠이 들었던 모양인지 이번엔 무릎이 좀 아팠다. 딱딱하게 굳은 몸을 겨우 일으키니 손 끝에 차가운 글라스가 닿았다. 가져온 버본 한 병이 반쯤 비어있었다. 자기 것이 아니었지만, 아카이 슈이치가 물어내라고 하진 않을 테니 상관없었다.

 마치 그가 막 일어난 것을 안 것처럼 타이밍 좋게 핸드폰이 울렸다. 상냥한 쿠도 군은 본인의 집에 도착했고 모리 양 역시 무사히 집에 돌아갔다는 메시지만을 보냈고, 후루야가 말도 없이 그 집에 간 이유를 추궁하지 않았다. 메시지는 그걸로 끝이라고 생각했는데 스크롤이 있었다. 조금 아래로 내리니 짤막한 주소가 적혀있었다. 굳이 묻지 않았기에 쿠도 군 역시 굳이 대답하지 않았던 것이었다. 확인하지 않아도 주소가 가리키는 것이 무엇인지는 명확했다.

 후루야 레이는 책상 위의 여권을 집어 들고, 반쯤 남은 위스키 병을 캐리어에 집어넣었다. 낡은 사진을 들고 조금 망설이다가, 그것 역시 가방에 넣었다. 정작 자신의 짐을 넣을 공간이 별로 없어서 고민하다가 그대로 지퍼를 잠갔다. 어차피 오래 있고 싶은 생각도 없었다.


 수 시간 뒤에, 후루야는 공항에서 비행기를 타고 일본을 떠나고 있었다. 비는 공항의 스케줄에 영향을 미치지는 않은 모양으로 표를 구하기에는 큰 어려움이 없었다. 갑작스러운 휴가 얘기에 카자미는 놀란 듯했으나 어쩐지 이해한 것 같은 느낌으로 알겠다는 대답을 했다. 후루야는 그가 뭘 이해한 건지 알고 싶지 않았지만, 어쨌거나 자신의 휴가는 정상적으로 제출되고 수리될 것이라는 것만 알았다. 비행기 의자에 몸을 눕히고 그는 검은 안대를 눈 위에 썼다. 자고 싶지 않았지만 자야 했다.




*




 아카이 슈이치는 잃어버린 것을 찾고 있었다. 파도가 잔잔한 바닷가에는 유실물 센터가 있었다. 붉은색의 철제 캐비닛이 죽 늘어서 있었고, 각 칸마다 이름표가 붙어 있었다. 익숙한 이름도 있고 모르는 이름도 있었다. 열 살의 아카이 슈이치에게는 아는 것보다 모르는 것이 더 많았고, 삐걱거리는 캐비닛을 위에서부터 차례대로 열어보고 있었다. 어떤 것은 잠겨서 열리지 않았고, 또 어떤 것은 아예 고장이 나 있었다. 안이 텅 비어있는 것도 있었고, 뭔가 가득 차서 열자마자 물건이 와르르 쏟아지는 것도 있었다. 차례대로 전부 열어보는 시도를 해보고 나니 마지막에는 자신의 이름자가 붙은 칸만 남았다. 문을 열려는데, 열리지 않았다. 어떻게 하지? 고민하는데 등 뒤로 커다란 그림자가 졌다. 열어볼 거니? 아카이는 돌아보지 않은 채로 고개를 끄덕였다. 어깨너머로 손이 뻗어와 문을 붙잡았다. 단단하고 곧은 손가락에 힘이 들어가는 것이 보였다. 아카이는 그 손을 물끄러미 바라보고 있었다. 건강해 보이는 피부색이라고 생각하면서.


 깜빡.


 눈을 감았다 뜬 것처럼 세계가 점멸했다. 스무 살의 아카이 슈이치는 다시 캐비닛을 바라보고 있었다. 저 문을 열었던가? 그는 자신의 캐비닛을 그대로 두고 다시 고개를 돌렸다. 붙어있는 이름표 중에, 이제 아는 이름이 많아졌다. 열 수 있는 문도 늘어났다. 꽉 잠긴 문은 아직 어려웠지만, 고장이 났거나 찌그러진 쪽은 문을 뜯어낼 수 있는 요령이 생겼다. 담배, 총, 술……. 아는 물건도 늘어났다. 사진 한 장이 바닥에 떨어졌다. 주워 드니 이상하게도 그 안에는 아무것도 찍혀있지 않았다. 원래 있었던 것을 일부러 없앤 것처럼 부자연스럽게. 아카이는 사진을 주워 제자리에 넣어두기로 했다. 그것이 들어있었던 캐비닛의 이름표를 보았지만 누군가 긁어낸 것처럼 지워져 있었다. 대신 다른 영단어가 적혀있었는데, 그는 어쩐지 그게 본래 이름이 아닐 거라는 생각이 들었다. 아카이는 사진이 없는 사진을 캐비닛 안에 넣고 문을 꽉 닫았다. 꽉, 다시는 잃어버리지 않도록.


 해변가로 밀려온 바닷물이 발 끝을 간지럽혔다. 아카이 슈이치는 자신의 시야가 더 높아진 것을 알았고 캐비닛 역시 늘어난 것을 알았다. 이제 그 이름표 중에 대부분을 알았지만 아직 모르는 이름도 있었다. 아마 내가 잃어버린 미래의 사람이겠지. 스무 살의 자신이 꾹 눌러 닫아둔 캐비닛은 다시 열리지 않을 것처럼 보였다. 아카이는 다른 것은 아무것도 건드리지 않고 자신의 이름이 붙은 캐비닛을 열었다. 안은 텅 비어있었지만 언제부터 비어있었던 건지 알 수 없었다.

 열 살의 자신 대신 열어준 그 사람이 가져갔을까? 아카이는 다른 캐비닛을 찾기로 했다. 하지만 그 이름을 소리 내어서 말할 수가 없었다. 이게 네가 바라는 건가, ─? 유실물 센터의 붉은 캐비닛에는 그가 잃어버렸던, 잃어버린, 그리고 앞으로 잃어버릴 이름들이 가득했지만 그의 이름을 목소리로 끄집어낼 수 없었다. 이대로 내가 잃어버리길 바라? 대답은 없었고, 캐비닛이 쾅 닫히는 소리만이 날카롭게 울렸다.




*




 꿈을 꿀 때는 잠들어도 잠든 게 아니라더니. 줄곧 이어지는 꿈에 피로가 쌓인 후루야가 미간을 문질렀다. 그는 지금 내린 공항이 미국 어딘가 인지는 관심이 없었다. 앞으로 갈 병원의 이름에도 관심이 없었다. 병실로 바로 들어갈 수는 없었는데, 예상했던 일이기에 그는 병원 로비에서 자신의 이름을 대고 전달을 요청했다. 잠시 뒤에 처음 보는 사람이 내려왔고, 반신반의 한 표정으로 자신을 데리고 병동의 몇층 위로 올라갔다. 엘리베이터 앞에서 맞이한 것은 깜짝 놀란 표정의 스털링 요원이었다.


 당신이 올 줄 몰랐어.

 나도 내가 올 줄 몰랐어요.


 후루야는 솔직히 대답했다. 그가 여기까지 온 건 꽤 충동적인 행동이었다.

 한 때 껄끄러운 관계였지만 그녀는 생각보다 호쾌한 사람이었다. 해묵은 감정 같은 건 금방 잊어버린 듯 후루야를 대했다. 그를 만나러 조금 걸어 나왔던 건지 후루야는 그녀와 복도를 조금 걸었다. 간단한 이야기였다. 환자는 여전히 일어나지 못했지만 반응은 있는 것 같았다. 어쩌면 곧 정신을 차릴 것 같다는 희망적인 소리에 후루야는 퍽 다행이라는 생각을 했다. 그렇다면 아카이 슈이치가 눈을 뜨는 건 자신과는 상관없는 일이 될 것이었다.

 스털링 요원은 후루야에게 사고에 대하여 이야기를 해주고 싶었던 것 같았지만 오래 걷지 않았기 때문에 짧은 내용만 확인할 수 있었다. 사소한 불행이 겹친 사고였으며, 모리 양이 다친 건 가벼운 염좌였고, 아카이 슈이치는 머리를 다쳤다고 했다. 상처가 크진 않았는데 부딪친 곳이 좋지 않았던 것 같다고.


 그녀는 병실 문을 열고 후루야를 안에 들여보냈다. 환자가 말을 할 수 없는 상태였기 때문에 1인실은 조용했고, 검은 옷이 아닌 환자복을 입은 아카이는 굉장히 낯설었다.

 침대 앞에 덩그러니 놓인 의자는 등받이가 없었다. 후루야가 의자에 앉을지 말지를 고민하는 사이에 스털링 요원은 밖에 있겠다며 문을 닫았다. 언젠가는 죽이겠다고 덤빈 사이였는데 어떻게 자신을 그와 단 둘만 남겨두고 나가는지, 후루야는 여전이 이해하고 싶지 않았다.

 그는 앉지 않고, 서있는 쪽을 택하기로 했다.


 아카이 슈이치.


 한때는 이 이름에 분노를 담아 부른 적이 있었다.


 내 꿈에 그만 좀 나와요.


 그런데 그걸 자신의 꿈이라고 할 수 있었던가?


 아카이 슈이치는 언제나 후루야 레이에게 모든 걸 말하지 않았다. 거짓말을 하지 않았지만, 사실을 전부 이야기하지도 않았다. 후루야는 그가 남긴 단편적인 정보만을 가지고 그 뒤를 쫓아가는 것에 지쳤다. 버본을 그만둘 수 있게 되고, 아무로 토오루를 그만둘 수 있게 된 뒤로 생각할 시간이 많아진 후루야는 아카이 슈이치에 대해서 오래 생각했다. 그 날 옥상에서 있었던 일에 대해서는 여전히 알 수 없었지만, 완전히 짐작을 하지 못할 것도 아니었다.

 아카이 슈이치가 사실을 이야기하지 않았지만 그가 감추고 있는 것이 무엇을 지키고 있는지는 알았다. 안다고 해서 마음이 누그러지는 것은 아니었다. 그래서 후루야는 아카이 슈이치의 등만 보고 달려가는 것을 그만 두기로 했었다. 그가 미국으로 돌아가기 전에.


 당신에게 지켜달라고 한 적 없으니 나는 당신이 멋대로 한 행동에 부채감을 가지지 않을 겁니다.


 후루야는 아직도 그와 대화를 나누었던 날을 선명하게 기억하고 있었다. 그 날 했었던 말을 그대로 다시 말할 수 있을 정도로.


 나는 여전히 그 날의 일에 대해서 모르는 것이 있어요. 하지만 당신은 그걸 알게 하고 싶지 않은 것 같으니 나도 계속 모르는 채로 두겠습니다.


 그러니 우리의 관계는 이것으로 끝을 내도록 해요. 후루야의 말에 아카이는 담배 연기를 허공에 뱉고는 입을 열었다. 그래. 후루야는 아카이의 짧은 대답에 웃어야 할지 울어야 할지 모를 기분을 느꼈던 것을 기억해냈다. 당신은 언제나 사람을 곤란하게 하더니 이제는 아예 대답도 하지 않지. 후루야는 이제는 아예 말도 할 수 없게 된 상대를 바라보며 주먹을 꽉 쥐었다.


 그렇게 대답을 한 주제에 왜 자꾸 나를 찾으려고 합니까?


 후루야는 꿈속에서 언제나 그가 자신과 상관없는 삶을 살도록 만들었다. 속삭이는 자신의 목소리에 따라서 어쩔 때는 목숨을 걸지 않아도 되는 평범한 인생의 길을 만들기도 했다. 미야노 아케미가 살아있도록 하거나, 두 사람이 오랜 연애 끝에 결혼을 하기도 하거나. 그럼에도 그는 끝내 잃어버린 것들을 찾으려고 했다. 그쯤 하면 됐잖아요. 후루야는 마른 손으로 자신의 얼굴을 덮었다. 아카이 슈이치가 일어나지 못하고 있어서 다행이었다.


 한 번도 제대로 대답해 준 적 없는 주제에 나랑 뭘 하고 싶은 거야, 아카이 슈이치.


 이 물음의 대답을 듣지 않아도 되어서 다행이었다.



 후루야는 적당한 호텔을 잡아 들어갔다. 캐리어를 대충 던지듯 내려놓고 나서야 그의 물건들 아카이에게 돌려주지 않고 왔다는 생각이 났지만 지금은 병원으로 돌아가고 싶지 않았다. 후루야는 매우 피곤했고 씻고 싶었다. 한참을 욕조에서 몸을 담그고 나서야 갈아입을 만한 자기 옷을 하나도 가져오지 않았다는 걸 깨달았다.


 캐리어 속에 든 그 검은 셔츠는 약하게 담배의 향이 났다. 세탁은 해뒀던 것 같지만 냄새를 완전히 지우기는 무리였던 모양이다. 대충 쑤셔 넣었던 탓인지 조금 구겨진 옷 하나를 입기로 했다. 제일 아래서부터 끝까지 단추를 채우니 목이 졸리는 느낌이 들었고, 거울에 비친 모습을 보니 꼭 상복을 입은 것 같아 기분이 나빠졌다.

 순간순간 타인의 목숨을 저울질하는 그는, 우리는, 살아가는 매일이 장례식이나 다름없었고, 슬프게도 후루야는 이제 그 감정이 많이 무뎌졌다는 것을 느꼈다.

 호텔 창 밖에 비치는 야경은 화려했다. 자신과 상관없는 인생들이 발아래에서 나타나고 사라지기를 반복하고 있었다. 한 순간 저 밑으로 내려가 그 소란스러움에 흘러가듯 파묻혀버릴까 하는 생각을 했지만 그만두었다. 아카이 슈이치, 당신만 없었다면 이 휴가를 정말 기쁘게 보냈을 텐데. 후루야는 유리창에 바짝 붙어 아래를 내려다보다가 커튼을 쳤다. 잠을 자기로 결정했다.




 아카이가 보이지 않았다. 어딘가 보이지 않는 곳에 있겠지. 후루야는 심각하게 생각하지 않았다. 눈 앞에 붉은 철제 캐비닛이 보였다. 여러 사람의 이름표가 적혀있었는데, 몇몇은 후루야도 알아볼 수 있는 것이었다. 그중에 눈에 띄는 것이 몇 가지가 있었다. 한 번 썼다가 지우고 날카로운 것으로 긁은 것처럼 스카치가 적혀있는 칸이 있었고, 후루야의 이름이 적힌 것도 있었고, 제일 마지막 칸에서 아카이 슈이치의 이름이 적힌 칸도 찾았다.


 그는 제일 먼저 자신의 이름이 적힌 캐비닛을 열려고 했지만, 문은 꽉 잠겨있는지 당겨도 열리지 않았다. 그건 너 혼자서는 안돼. 후루야는 그걸 여는 것을 포기하고는 자리를 옮겼다. 스카치의 이름이 새겨진 캐비닛은 꽉 맞물려 있었지만, 조금 힘을 주니 문이 열렸다. 안에서 사진 한 장이 보였다. 빛이 바랜 것처럼 하얗게 보이지 않는 사진이었지만, 그는 그게 무엇인지 알고 있었다. 언젠가 그들이 함께 찍은 사진은 셋이서 나눠가졌다. 스카치는 재미있어했고, 버본은 내켜하지 않았고, 라이는 별 말없이 받아 챙겼다. 스카치가 죽고 나서 그의 몫은 찾을 수 없었던 걸 보면 아마 제일 먼저 처분했겠지. 그래서 이 사진에는 내용물이 없었다. 아카이 슈이치가 잃어버린 것에 포함되니까.

 후루야는 그 사진을 다시 제자리에 넣고 캐비닛의 문을 닫았다. 찰칵, 하고 문이 닫히는 소리가 났다. 이제 그는 아카이 슈이치의 캐비닛 앞에 섰다. 앞 전의 두 개와는 달리 문은 쉽게 열렸다. 손을 뻗어 안에 든 것을 집어 들었다. 동그랗게 말린 조개껍데기였다.


 그 순간, 세계가 바뀌었다. 후루야는 조개껍데기를 쥔 채 파티 회장에 서 있었다. 등 뒤에서 익숙한 목소리가 들려서 하마터면 손에 든 것을 떨어트릴 뻔했다.


 이런, 꼬마야.


 뒤에서 자신을 스쳐 앞으로 나아가는 남자는, 말끔하게 머리를 뒤로 넘기고 완벽한 파티 양복 차림을 하고 있었다. 후루야는 잠시 자신의 상황도 잊어버리고 생각했다. 와, 잘생겼네. 쿠도 군이 볼맨 소리로 아카이 슈이치에게 대꾸하고 있었다. 이제는 꼬마가 아니라니까요. 그 옆에서 모리 양이 조금 쑥스러운 얼굴로 인사하고 있었으며, 이런 곳에서 만날 줄은 몰랐는지 아카이는 조금 당혹스럽지만 반가운 표정으로 웃고 있었다. 후루야는 그가 종종 자신을 향해서도 저런 표정으로 웃었던 것을 알고 있었다.


 상황이 다시 변했다. 사람들은 건물 밖으로 나가기 위해 뛰어가고 있었고, 모리 양이 누군가에게 떠밀렸는지 바닥에 주저앉았다. 아카이가 그녀의 손을 붙잡고 일으킨 다음 등을 떠밀었다. 나가렴, 어서. 다른 곳에 있었는지 다급한 표정으로 달려온 쿠도 군이 아카이에게서 그녀를 넘겨받았다. 쿠도 군이 무언가 말했지만 아카이는 단호하게 고개를 흔들었다. 둘 다 나가도록 해. FBI로 보이는 사람이 두 명을 붙잡고 데리고 나갔다. 아카이 슈이치는 달려 나가는 사람들의 흐름과는 거꾸로 걸었다. 그가 어떻게 된 건지 보고 싶지 않아? 후루야는 대답하지 않고 꿈이 제멋대로 흘러가도록 내버려 두고 있었다.


 그다지 중요하지 않은 부분은 생략해버린 듯 시간이 다시 뛰어넘었다. 아카이는 자신의 발치에 쓰러진 사람을 내려다보고 있었다. 인상을 쓰고 있는 것이, 별로 좋은 상황은 아닌 모양이었다. 모두 파티 회장을 벗어났는지 주변에는 죽은 사람과 아카이뿐이었다. 그는 자신의 귀를 몇 번 두드리다가, 고장이 난 듯한 무전기의 인이어를 거칠게 빼들었다. 뭔가에 부딪쳤던 건지 귓가가 좀 찢어져있었다. 건물은 여기저기 부서지고, 불이 나고, 엉망진창이었다.

 아카이 슈이치는 손에 들고 있던 총을 정리해서 챙기고는 걸음을 돌렸다. 바깥의 동료 하고는 연락이 되지 않았고 시체까지 수습하기에는 상황이 불안했기에 혼자 나가는 것을 택한 것 같았다. 몇 걸음 걷던 그가 문득 멈춰 서서 의아한 표정으로 아래를 내려다보았다. 아카이가 몸을 숙여서 집어 드는 것을 보고 후루야는 당황한 표정으로 자신의 손을 내려다보았다.

 손이 텅 비어있었다. 어느새인가 쥐고 있었던 조개껍데기가 사라지고 없었다.


 후루야는 아카이 슈이치가 때때로 방심하기도 하는 인물이라는 걸 알고 있었다. 언젠가의 대관람차 위에서도 그는 순간 걸려온 전화를 신경 쓰느라 자신에게 한 방을 내줬던 것을 기억하고 있었다. 뭘 하고 있는 거야! 후루야의 당황한 목소리가 울렸다. 그걸 들을 수 없는 아카이가 바닥에 떨어진 조개껍데기를 집어 들고 몸을 일으켰다. 후루야가 그와 눈이 마주친 것 같다고 생각한 순간,

 천장이 무너져 내리고 샹들리에가 부서지는 소리가 났다.


 후루야는 꿈에서 쫓겨나듯 깨어났다.




 침대에서 굴러 떨어지듯 몸을 일으켰다. 씻고 나온 것이 무의미할 정도로 땀이 온몸을 싸늘하게 만들고 있었다. 후루야는 떨리는 손으로 얼굴을 덮고 천천히 숨을 몰아쉬며 진정하려고 애를 썼다. 그냥 꿈일 뿐이야. 빌어먹을, 그냥 꿈.

 후루야 레이는 목까지 채워진 단추를 조금 풀어내고 나서야 겨우 숨을 내쉴 수 있었다.


 우리의 관계는 그 날 끝이 났잖아.


 그러나 후루야는 그 꿈이 보여주는 것이 무엇인지 알고 있었다. 자신의 바람을 반영하여 끊임없이 자신을 잊게 만들면서도, 화약 냄새도 피 냄새도, 시체가 썩는 냄새도 없는 평범한 삶을 살면서도,

 아카이 슈이치가 잃어버린 것을 찾고 있었다.

 아카이 슈이치는 후루야 레이를 찾고 있었다.



 아카이 슈이치가 아직 오키야 스바루로 쿠도 저에 머물러 있을 시간에, 후루야 레이는 종종 그를 만나기 위해 저택에 방문하고는 했었다. 용건은 여러 가지가 있었다. 아직 완전히 마무리하지 못한 조직의 일이나, FBI와 공안의 일이거나, 단순한 저녁 식사의 약속이거나.

 그날도 그런 사소한 목적 중 하나였다. 그러나 그때는 뜻밖에도 후루야를 마중한 것이 아카이도, 오키야도 아닌 집주인인 쿠도 군이었다.


 아. 아카이 씨는 지금 잠깐 나가셨어요. 저녁 식재료가 모자란 걸 방금 알았다고 하셔서….


 손님을 불러놓고 정작 본인이 나가버린 것을 알리며 쿠도 군이 미안한 표정을 지었다. 집 안에 들어서니 테이블 한쪽에 책이 여러 권 놓여있는 것이 보였다. 아무래도 독서 중인 것을 끊고 문을 열어 준 것이 훤히 보여서, 후루야는 그를 방해하지 않기로 했다.


 나는 그 방에 가 있을게. 어차피 금방 돌아올 거잖아?


 쿠도 군은 조금 망설인 것 같았지만, 최근 두 사람의 관계가 나쁘지 않았던 것을 알기에 금방 고개를 끄덕였다. 그가 다시 독서에 매진하도록 놔두고, 후루야는 잘 알고 있는 방으로 향했다. 아카이의, 오키야 스바루의 방으로. 사용하고 있는 사람이 없는 시간에 여기에 혼자 들어온 것은 처음이어서 천천히 구경하기로 했다.

 호기심이었다. 셜로키언이라고 주장하는 사람의 방이니 뭔가 하나쯤은 숨겨두지 않았을까? 후루야는 너무 무례하지 않게, 하지만 정중하지는 않은 방식으로 방을 뒤지기 시작했다. 진지하게 찾는 것이 아니었으니 베개 밑이나 소파의 쿠션을 들어보는 정도의 초보적인 방법을 썼다. 총 몇 자루의 위치와 담배 한 갑을 (일부러 숨긴 건 아니고 떨어트리고 잊어버린 것 같았지만) 찾아냈다.


 이러고도 아직 아카이가 돌아오지 않았다. 무슨 재료를 사러 어디까지 간 건지. 후루야는 책상 서랍을 차례로 열어보았다. 대학원생이라는 설정이 여기까지 미치지 않았는지 서랍장에는 들어있는 것이 별로 없었다. 연필, 펜, 지우개 따위가 굴러 나왔다. 그는 두 번째 서랍을 닫고, 세 번째 서랍을 열었다가, 다시 두 번째 서랍을 열었다. 설마 이런 알기 쉬운 장치를? 후루야는 손쉽게 이중 바닥으로 된 판자를 들어 올리면서도 반신반의했다. 이렇게 금방 들킬 장치를 아카이가 했다는 사실이 조금 의아했기 때문이다.


 서랍장 아래에서 나온 건 딱 하나였다. 그저 낡은 사진 한 장.


 손 끝에서부터 감전된 것처럼 움직일 수가 없었다. 몸 안을 태워버리는 것 같은 충격이었다. 그 사진은 처음엔 세 장이었고, 나중엔 두 장이 되었으며, 이제는 한 장뿐인….


 저택의 문이 열리는 소리가 들렸다. 후루야는 재빨리 서랍장을 원위치로 돌려놓고 몸을 일으켰다. 방 바깥에서 쿠도 군과 오키야가 이야기를 나누는 소리가 올라오고 있었다. 평정을 가장하며 아래로 내려가자, 자신의 얼굴을 감춘 눈이 이쪽을 바라보았다.

 저녁 식사는 평온했다. 쿠도 군과 오키야가 읽었던 책의 추리를 논하거나, 후루야가 한 마디를 거들거나, 심각한 소재로 넘어갈 뻔하다가 어린이 탐정단의 우스운 이야기를 하거나. 장단을 맞춰 웃으면서 후루야는 목구멍에서 튀어나올 것 같은 말을 억눌렀다. 아카이, 기억하고 있습니까? 그를, …사진을 계속 가지고 있었던 겁니까? 아카이. 아카이 슈이치…. 후루야는 자신이 끝까지 잘 웃고 있었는지 기억이 나지 않았다. 쿠도 군도 아카이도, 특별한 언급이 없었기에 괜찮았을 거라고 짐작만 했을 뿐이었다.


 이때에는 아직 아카이의 꿈을 꾸지 않았었다. 그래서 후루야는 다시 그날로 돌아가 있었다. 울려 퍼지는 발걸음 소리, 자신의 숨소리, 총소리, 피 냄새, 화약 냄새. 모든 것이 뒤죽박죽이었다. 그의 일은 지금도 미안하게 생각하고 있다. 그건 후루야 레이에게 한 말이었다. 그렇다면 아카이, 당신 자신에게는 어떻게 생각하고 있습니까? 후루야 레이는 웅크린 채 잠에서 깨어났다. 그는 울지 않았다.



 다시 그 날의 대화로 돌아간다. 아카이를 포함한 잔류해있던 FBI 요원들이 더 이상 일본에서 해야 할 일이 없겠다고 판단되어 미국으로 돌아가라는 정중한 권유가 떨어지고 며칠 뒤.


 후루야와 아카이 사이의 관계는 제법 나쁘지 않았지만, 그렇다고 두 사람이 어떤 특별한 관계가 된 것도 아니었다. 후루야는 사진을 본 그 날 이후로 아카이와의 만남을 의도적으로 피했고, 아카이가 그걸 눈치채지 못할 리가 없었다. 쿠도 신이치를 중간에 끼고 바쁘다는 핑계로 며칠 정도를 소원하게 지낸 끝에 출국을 앞둔 남자와 다시 만났다. 이제는 인사만 하면 정말로 헤어지게 될 순간이었다.


 사진을 가지고 있더군요.


 아카이는 담배를 입에 문 채로 별 반응을 보이지 않았다. 후루야가 그걸 보았다는 걸 이미 알고 있었다. 그 눈은 할 말을 해보라는 것 같기도, 또 하지 말라고 하는 것 같기도 했다.


 왜 그걸 없애지 않았습니까?

 어째서 그걸 묻는 거지?

 당신은 어째서 대답하지 않는 거죠?

 내가 하고 싶지 않으니까.


 질문을 질문으로 돌려받고, 서로의 약점을 감추고, 결국 다시 제자리였다. 후루야는 그가 말하지 않는 진실이 지키고 있는 것 중에 하나가 자신이라는 것을 알았다. 그러나 그 이상 자신에게 아무것도 내주지 않고 쳇바퀴같이 헛돌기만 하는 이 관계에 지치고 말았다. 그때는, 그만두는 것이 빠져나오는 방법이라고 생각했다. 그래서 말했다.


 후루야 레이는 그 날 아카이 슈이치와의 관계를 끝내자고 말했다. 아카이는 대답했고,

 이름이 지어지지도 못한 관계는 후루야의 안에서 시작도 하기 전에 끝이 나 버렸다.



 다만 그 이후에 많은 시간이 있었다. 마음을 어지럽히는 존재가 눈 앞에서 사라지고, 묵은 골칫거리들이 정리되고 차분히 생각할 시간이 있었다. 행동, 생각, 가지고 있던 물건, 기억. 그 모든 것을 추리의 재료로 삼아 검토하고 고민했다.

 마침내 한 가지 짐작 가는 것에 이르렀다. 아주 오랫동안 아카이 슈이치에 대해서 고민한 끝에 생각난 것이었다. 하지만 그 생각에 확신을 가지려면 그에게 확인을 해야 했다. 그리고 후루야는 그것을 확인하지 않은 채로 여태껏 유보해 둔 상태였다.


 더는 이상태로는 안돼. 꿈속에서만 들렸던 목소리가 마침내 자신을 따라 꿈 밖으로 나온 것 같았다. 이대로는 안된다는 걸 알고 있잖아. 이대로 영원히 모른 척하면서 살 거야? 너는 그럴 수 없어, 후루야 레이. 그는 이 목소리가 결국 자신의 솔직한 욕망을 속삭이고 있다는 것을 인정했다.


 후루야 레이는 아카이 슈이치를 찾기로 했다.



 사실 후루야에게도 딱히 방법이 있는 건 아니었다. 무작정 가서 정 안되면 아카이의 멱살이라도 잡고 흔들지 뭐. 영영 면회 금지로 찍힐법한 생각을 하면서 그는 아침이 되자마자 호텔에서 튀어나왔다. 택시를 잡아탔는데 핸드폰이 울렸다. 쿠도 군에게 온 메시지였다. [새벽에 아카이 씨가 깨어났다고 하는데 정말인가요?] 심장이 뛰었다. 스털링 요원은 공식적으로 후루야의 연락처를 모르기 때문에, 쿠도 군에게 메시지를 보낸 모양이었다. 똑똑한 탐정은 그녀의 의도를 읽고 빙 돌아서 그에게 메시지를 전달했다. [나는 아직 모르겠어.] 후루야는 빠르게 답장을 보내고는 택시 기사를 정중하게 재촉했다. 물론, 팁을 얹어서.


 어제 다녀갔던 것으로 언질이 있었는지, 이번에는 막히지 않고 병실이 있는 층까지 올라갈 수 있었다. 환자가 별로 없었는지 지나다니는 사람이 별로 없었다. 병원 특유의 숨 막히는 침묵을 가르고 병실 앞이 소란스러웠다. 후루야는 조금 긴장했는데, 잘 들어보니 진짜로 심각한 상황은 아닌 것 같아서 걸음을 멈추지 않았다. 저렇게 떠들어도 아직 간호사에게 걸리지 않은 모양이네. 그런 생각을 하고 있는데 문을 열고 안을 향해서 무어라고 이야기하던 스털링 요원이, 기척에 고개를 돌렸다가 반가운 표정을 지었다.


 마침 잘 왔어!

 무슨 일이죠?

 세상에, 저 인간이 일어나자마자 담배를 요구했다고! 며칠 동안 정신도 못 차리고 침대에 처박혀서 여러 사람을 골치 아프게 만들더니 눈을 뜨자마자 하는 말이 담배애? 당신도 와서 좀 혼내줘.


 그녀는 후루야의 대답을 듣지도 않고는 안쪽을 향해서 마구 쏟아내더니 그의 등을 밀어 병실 안으로 밀어 넣었다. 그리고는 매서운 목소리로 담배도 술도 없다고 으름장을 놓고는 문을 쾅 닫는 소리가 후루야의 등 뒤로 들렸다.


 침대에서 반쯤 몸을 일으키고, 골치 아픈 표정으로 이쪽을 바라보고 있는 남자와 눈이 마주치고 말았다. 꿈속에서는 몇 번이고 닿지 못했던 녹색의 시선이 후루야를 바르게 응시하고 있었다.

 마침내 후루야 레이와 아카이 슈이치의 시간이 맞물려 움직이기 시작했다.



 내 옷이군.


 먼저 입을 연건 아카이였다. 오랜만에 목소리를 낸 사람답게 목소리가 상당히 거칠었다. 후루야는 자신이 여전히 그의 셔츠를 입고 있다는 사실을 깨달았다. 이제 와서 바꿔 입을 수도 없는 노릇이라 부정하지 않고는 어제 앉지 않았던, 등받이가 없던 그 의자에 앉았다.


 당신이 그 집에 남겨둔 걸 전부 가져왔으니까요.


 이번엔 잊지 않고 챙겨 온 종이 가방을 들어 보였다. 제법 무게감이 있어 보이는 그것에 아카이의 시선이 닿자 후루야는 가방을 다시 자기 쪽으로 끌어당겼다.


 안됩니다.

 ….

 술은 안돼요. 제가 혼납니다.


 아카이의 눈에 좀 아쉬운 기색이 비친 것 같았다. 담배를 요구했던 게 거짓말은 아니었는지 그는 마른 입술을 손가락 끝으로 문지르고 있었다. 후루야는 다시 그다지 중요하지 않은 말을 이어갔다.


 그리고 그거 반 정도는 제가 먹었습니다만, 상관없겠죠.


 아카이는 별 반응 없이 고개만 끄덕였다. 정말로 상관없는 것 같았다. 후루야가 입을 다물자 다시 대화가 끊겼다.

 후루야는 이번에야 말로 이야기를 해야 했다. 햄스터도 아니고, 제자리만 빙글빙글 도는 것은 이제 질색이었다.


 당신하고 할 이야기가 있습니다. 아카이 슈이치.


 후루야는 종이 가방에서 사진을 꺼내 침대 위에 올려놓았다. 아카이의 시선이 따라 움직이고, 그 눈에 얼핏 어떤 감정이 어리는 것이 보였다. 단어로 표현하기에는 어려운 여러 가지 감정이 뒤엉켜 있었다.


 왜 없애지 않았습니까?


 아카이는 침묵했다. 그는 더 이상 이 문제에 대해서 계속 외면할 수 없다는 것을 깨달았다. 지금은 죽은 사람을 위해서도, 수시간을 건너서 지금 이 자리에 자신을 마주하고 있는 사람을 위해서도,

 자신을 위해서도.


 잊고 싶지 않았으니까.


 마침내, 후루야의 추측이 형체를 갖추기 시작했다. 후루야에게, 버본에서 스카치의 죽음이 아픈 일이었던 것처럼, 라이에게, 아카이 슈이치에게도 그랬다. 아카이 슈이치는 그 날에 대해서 침묵하면서 후루야를 지키려고 했고, 죽은 사람을 지키려고 했고, 아카이 본인을 지키려고 했다. 기억은 살아있는 두 사람에게 공평하게 나누어진 상처였다.


 나도 잊을 수 없고, 잊지 않을 겁니다. 아카이. 그러나 더 이상 이 문제로 당신을 추궁하진 않겠습니다. 그러니 당신에게 물어야겠어요. 당신은 그 날 내 질문에 제대로 대답한 게 아니죠?


 아카이 슈이치는 수많은 세계를 헤맸다. 그걸 전부 기억하고 있는 것은 아니었지만, 그 세계가 지금의 인생보다는 편안한 삶이라는 것은 알았다. 그럼에도 아카이는 깨어나는 것을 택했다. 의식의 저편에서 내내 찾으려고 했던 잃어버린 것을 위해서.

 아카이 슈이치는 많은 것을 잃어버리고, 되찾지 못했고, 상처가 남은 이 세계를 택했다.

 후루야 레이가 이 세계에 있기 때문에.


 아카이는 지금 당장 손에 담배가 없다는 것이 굉장히 아쉬웠다. 표정을 감출 수 있는 것이 없었기 때문에, 지금 자신의 모습이 후루야에게 어떻게 보일지 알 수 없었다.


 생각해봤는데.

 비행기를 타고 일본을 떠나기 전, 줄곧 유보해놓았던 질문의 대답을 이제 해야 할 때였다.


 자네가 관계를 끝내고 싶다고 해도 나는 그럴 생각이 없어.

 ……그래요.


 그때와의 대화와는 정 반대의 상황이었다. 아카이는 후루야가 뭔가 반박을 하거나, 불쾌해하거나 또는 어떤 반응을 보일 거라고 생각했지만, 후루야는 그저 간단하게 대답하고는 홀가분한 것 같은 표정을 짓고 있었다. 관계의 끝에 대한 아카이의 대답이 YES가 아니라, 단순히 상황을 보류해 둔 것이라는 걸, 그에 대해서 오래 생각하고 추론한 끝에, 마침내 여기에서 도달할 수 있었다.

 

 당신 참 오래도 생각하는군요. 사람 헷갈리게 말하고.

 그것 참 미안하군.


 다시 대화가 끊기고, 침묵이 병실 안을 감돌았다. 간간히 들리는 소리는 바깥 복도를 돌아다니는 상관없는 사람들의 인기척뿐이었다. 그러나 후루야는 이제 그것이 생각만큼 불편하진 않다고 느꼈다. 아카이의 시선이 다시 종이 가방으로 떨어졌다. 후루야는 다시 한번 단호하게 말했다. 술은 안됩니다. 그리곤, 웃었다.


 멍청한 FBI, 방심이나 하더니, 꼴좋다.


 그 순간, 아카이는 시간이 느리게 흘러가는 것 같다고 느꼈다. 천천히 눈을 깜빡이고는, 그도 후루야를 보고 웃었다.


 당신이 그 집에 남겨두고 온 건 제가 전부 가져왔습니다. 이제 없어요.


 후루야는 손 끝으로 종이 가방을 툭 쳤다. 이건 여기에 두고 가겠지만, 안에 들어있는 술은 건드리지 못하도록 스털링 요원에게 말해둬야겠다는 생각을 했다. 후루야가 빈틈없는 생각을 하는 것을 아카이도 짐작을 했는지 작은 한숨 소리가 들렸다.


 그러니까 다음번에는 아카이 슈이치로 와요. 오키야 스바루 말고.

 그러도록 하지.

 이제 가봐야겠습니다. 쿠도 군에게도 제대로 소식을 들려줘야 하고, 일을 너무 오래 비울 수도 없으니.


 등받이가 없는 의자에서도 곧은 자세를 유지하던 후루야가 몸을 일으켰다. 몸을 돌려 문을 향하려는데, 등 뒤에서 아카이의 목소리가 그를 붙잡았다.


 그대로 돌아가면 하나가 남겠는데.

 지금 입은 옷은 세탁해 둘테니까 직접 찾으러 오시죠.

 …조만간에 방문해야겠군.


 낮게 웃는 소리가 누구의 것인지 알 수 없었지만 그다지 중요하지 않았다. 그는 병실을 나가기 위해 문 손잡이를 붙잡았다.

 후루야는 자신의 마음 안에서 잠금쇠가 풀리는 소리를 들었다.




 후루야 레이는 꿈을 꾸었다. 그는 아카이 슈이치와 함께 있었다.

 후루야는 이게 진짜 꿈이라는 걸 알아챘다. 그러니까, 자신의 마음대로 바꿀 수 있는 것이 아니며, 자신을 비웃는 속삭이는 목소리도 없고, 잠에서 깨어나면 잊어버리게 되는 꿈.


 그들은 유실물 센터의 붉은색 캐비닛 앞에 서 있었다. 거기가 해변가였는지, 파티장이었는지, 또는 어떤 다른 장소였는지는 별로 중요하지 않았다. 여전히 거기에는 수많은 이름표들이 붙어있었고, 스카치의 이름이 적힌 캐비닛은 단단히 닫혀있었다. 그건 잠겨있지 않았지만, 그렇다고 쉽게 열려서 안에 든 것을 잃어버릴 염려는 없어 보였다.

 후루야는 자신의 이름이 적힌 캐비닛을 보았다가 아카이를 돌아보았다. 그가 고개를 끄덕였다.


 후루야 레이는 아카이 슈이치와 함께 캐비닛의 문을 열었다.




----


후루야 레이와 아카이 슈이치가 그럭저럭 괜찮은 관계가 된다. → 깨졌다. → 두 사람이 다시 그럭저럭 괜찮은 관계를 시작한다.


그런 느낌의 이야기입니다.





Posted by 아이시네프
cocos2d-x 공부용2014. 9. 22. 17:56

http://blog.naver.com/hyalein89/150151087116


    visibleSize = Director::getInstance()->getVisibleSize();

    origin = Director::getInstance()->getVisibleOrigin();


getWinSize 대신에 위에가 사용되는듯.

실제로는 setPosition에서 Vec2(visibleSize.width/2 + origin.x, visibleSize.height/2 + origin.y)가 들어가는데,

가로세로 비율이 다른 핸드폰 화면 보정치를 포함한듯.

Posted by 아이시네프
cocos2d-x 공부용2014. 9. 17. 18:07

원글 출처 : http://horns.tistory.com/19

1. CCProgressTimer


HelloWorldScene.h

class HelloWorld : public cocos2d::Layer
{
private:
...
	CCProgressTimer* _progressTimeBar;
...
}


HelloWorldScene.cpp

void HelloWorld::createGameScene() {
...
	//타임 바 추가
	Sprite* timeOutline = Sprite::create("timebar.png");
	timeOutline->setPosition(ccp(_screenSize.width * 0.5f, 27));
	timeOutline->setColor(Color3B::GRAY);
	timeOutline->setScaleX(_screenSize.width / timeOutline->getContentSize().width);
	timeOutline->setVisible(true);
	this->addChild(timeOutline);

	Sprite* timerBar = Sprite::create("timebar.png");
	_progressTimeBar = ProgressTimer::create(timerBar);
	_progressTimeBar->setPosition(ccp(_screenSize.width * 0.5f, 27));
	_progressTimeBar->setScale(_screenSize.width / timerBar->getContentSize().width);
	_progressTimeBar->setPercentage(100.0f);
	_progressTimeBar->setMidpoint(ccp(0, 0.5f));
	_progressTimeBar->setBarChangeRate(ccp(1, 0));
	_progressTimeBar->setType(kCCProgressTimerTypeBar);

	this->addChild(_progressTimeBar);

	ProgressFromTo* progressFromToZero = ProgressFromTo::create(60, 100, 0);
	_progressTimeBar->runAction(progressFromToZero);

	initGameCoin();
}

원래는 timerbar와 timeroutline을 각각 다른 이미지로 사용하였는데, 제가 사용하는 태블릿 화면 해상도와 맞지 않아서 그런지 정확히 위치를 맞추기 어렵더군요. 그래서 둘 다 같은 이미지로 사용하는 대신 밑에 깔린 막대바 색을 회색으로 덮어씌워서 게이지가 줄어드는걸 표현했습니다. 하시는 분 중에는 노란색 게이지바 크기를 좀 더 작게 한다던가 해서 테두리를 표현할 수도 있을거같네요.

검색해보니 cocos2d-x 2.x버전대에서는 createWithSpriteStroke라고 sprite에 테두리를 주는 메서드가 존재했었던것도 같은데..여튼 3.2버전에서는 관련 내용이 전혀 없는 느낌이므로 굳이 방법을 찾지 않고 두도록 하겠습니다.


HelloWorldScene.h

#ifndef __HELLOWORLD_SCENE_H__
#define __HELLOWORLD_SCENE_H__

#include "cocos2d.h"
#include "GameCoin.h"
#include "OpeningScene.h"

using namespace cocos2d;
using namespace std;

class HelloWorld : public cocos2d::Layer
{
private:
...
	CCProgressTimer* _progressTimeBar;
	int _gameTime;

public:
...
    void timeCount(float dt);
    void changeToOpeningScene();

};


HelloWorldScene.cpp

void HelloWorld::initGameCoin() {
	int coinX = 0;
	int coinY = 0;
	int diffX = _screenSize.width * 0.135f; //코인 x 간격
	int diffY = _screenSize.height * 0.097f; //코인 y 간격
	int initCoinX = _screenSize.width * 0.095f; //초기 코인 x 위치
	int initCoinY = _screenSize.height * 0.613f; //초기 코인 y 위치

	GameCoin* gameCoin;
	_lastCoin = -1;
	_selectCoinCount = 0;
	_score = 0;
	_gameTime = 60;
...
}

void HelloWorld::timeCount(float dt){
	if(--_gameTime == 0){
		changeToOpeningScene();
	}
}

void HelloWorld::changeToOpeningScene(){
	this->unschedule(schedule_selector(HelloWorld::timeCount));
	Scene* pScene = Opening::scene();
	TransitionScene* pTran = TransitionFade::create(0.5f, pScene);
	Director::getInstance()->replaceScene(pTran);
}

bool HelloWorld::init() {
	//////////////////////////////
	// 1. super init first
	if (!Layer::init()) {
		return false;
	}

	_screenSize = Director::sharedDirector()->getWinSize();

	this->setTouchEnabled(true);

	this->schedule(schedule_selector(HelloWorld::timeCount),1.0f);
...
}

주의해야할건, schedule은 호출하는 함수에 float값을 넘겨주기 때문에 호출 받는 함수가 float 형의 변수를 가져야 합니다. 만약 timeCount 함수를 timeCount(){ } 로 작성했다면 에러가 납니다. 따라서 호출 받는 함수 내에 시간 관련 동작이 없더라도 반드시 float 변수를 만들어놔야만 동작합니다.


덧붙여 timeCount()에서 (--_gameTime == 0)의 --는 저도 얼른 이해가 안되네요ㅠㅠ;

일단 저기서 --를 떼고 실행하면 타이머가 0이 되어도 게임이 제대로 종료 되지 않습니다.


실행 결과 : 


시간이 다되면 다시 OpeningScene로 넘어갑니다.



Horns님이 올리신 강좌를 따라 여기까지 했습니다. 정말 마이그레이션이라고 하기도 뭐하고, 순전히 기존 소스를 3.2에서도 동작하도록 고친것 뿐이라서, 실제 소스 효율이나 이런저런것에 대해선 잘 모릅니다. (Vec2같이 새로 생긴 애들..)

기존에 올린 강좌 그대로 따라하면서 했기 때문에 여기까진 빠른 시간 내에 마칠 수 있었네요.

이 다음부터는 개인적으로 커스텀해서 게임에 요소를 추가할지, 혹은 이 소스를 응용해서 새로 게임을 만들지 고민되네요.

일단 계속 진행한다면, 기기 해상도별로 대응 가능하도록 하기, 코인별로 점수를 다르게 하기, 점수를 획득하면 시간이 좀 더 늘어나도록 하기, 같은 코인 내에서 움직였다가 다시 후퇴해서 움직이면 선택했던 코인이 취소되기 등등..이것저것 추가해보도록 할 것 같습니다...만 이런식으로 소스를 마구 건드리는게 원래 강좌를 올린 Horns님에 대한 예의도 아닌것같고ㅠㅠ 제가 어디까지 성공할 수 있을지도 걱정이고 이래저래 고민이 많네요.


여튼 포코팡 비슷한 게임 만들기 여기서 일단 마무리 짓겠습니다. 겨우 보름남짓이었는데 정말 온갖 에러와 사이좋게 놀았네요--;..

강좌를 이용해서 포스팅 할 수 있도록 허락해주신 Horns님께 다시 한 번 감사드립니다!

Posted by 아이시네프
cocos2d-x 공부용2014. 9. 17. 14:06

원글 출처 : http://horns.tistory.com/18


-13- 화면 전환


1. 초기 화면 구성

Classes에서 우클릭, New->Header File로 OpeningScene.h를 추가합니다.


OpeningScene.h

#ifndef OPENINGSCENE_H_
#define OPENINGSCENE_H_

#include "cocos2d.h"
#include "HelloWorldScene.h"

using namespace cocos2d;

class Opening: public cocos2d::Layer {
private:
	Size _screenSize;

public:
	virtual bool init();

	static cocos2d::Scene* scene();

	CREATE_FUNC(Opening);

	EventListenerTouchOneByOne * listener;

	void creatGameScene(void);
	void changeScene(void);

	virtual bool onTouchBegan(Touch* touch, Event* event);

};

#endif /* OPENINGSCENE_H_ */


마찬가지로 이번엔 OpeningScene.cpp를 추가합니다.

OpeningScene.cpp

#include "OpeningScene.h"
#include "HelloWorldScene.h"

USING_NS_CC;

Scene* Opening::scene() {
	Scene *scene = Scene::create();

	Opening *layer = Opening::create();

	scene->addChild(layer);

	return scene;
}

bool Opening::init() {
	if (!Layer::init()) {
		return false;
	}

	creatGameScene();

	this->setTouchEnabled(true);

	EventDispatcher* dispatcher = Director::getInstance()->getEventDispatcher();
	listener = EventListenerTouchOneByOne::create();
	listener->setSwallowTouches(true);
	listener->onTouchBegan = CC_CALLBACK_2(Opening::onTouchBegan, this);
	dispatcher->addEventListenerWithSceneGraphPriority(listener, this);

	return true;
}

void Opening::creatGameScene(void) {
	_screenSize = Director::sharedDirector()->getWinSize();

	Sprite* openingImage = Sprite::create("startbg.png");
	openingImage->setPosition(ccp(_screenSize.width * 0.5f, _screenSize.height * 0.5f));
	this->addChild(openingImage);
}

void Opening::changeScene(void) {
//	Director::getInstance()->getEventDispatcher()->removeAllEventListeners();
	Director::getInstance()->getEventDispatcher()->removeEventListenersForType(EventListener::Type::TOUCH_ONE_BY_ONE);

	auto hScene = HelloWorld::createScene();
	auto pScene = TransitionFade::create(1.0f, hScene);
	Director::getInstance()->replaceScene(pScene);
}

bool Opening::onTouchBegan(Touch* touch, Event* event) {
	auto target = event->getCurrentTarget();
	Point location = target->convertToNodeSpace(touch->getLocation());

	changeScene();
	return true;
}


다음을 참고해주세요.

1. 원출처 이미지가 jpg로 되어있으므로, 소스에서 png대신 jpg로 쓰시거나, 이미지 자체를 png로 변경하셔서 사용하세요.

2. 3.0버전부터 터치가 리스너에 들어가있기 때문에, 씬 전환때 자원 해제를 해주지 않으면 전환 후 씬에서 터치가 제대로 동작하지 않게 됩니다. 이에 관해서는 onEnter(), onExit() 등의 메서드를 오버라이드 해서 사용하는 방법이 일반적인데, 저는 그냥 씬 전환 직전에 이벤트 리스너를 해제해주는 방법을 사용했습니다. 내용은 다음 출처를 확인해주세요.

ReplaceScene과 EventListner에 관하여 : http://blog.naver.com/jidon333/220069600001

결과적으로 제가 한참 헤맸던 부분은 제가 소스를 잘못 쓰는 바람에 문제가 생겼던 걸로, 아마 onEnter(), onExit() 방식을 다시 적용해도 제대로 동작할거라고 생각합니다. 그 부분은 강좌를 끝내고 커스텀 할 때 테스트 해보도록 할게요.

참고로, 씬 전환 사이에 호출되는 메서드 순서 관련 : http://zzaps.tistory.com/213http://akichim.hatenablog.jp/entry/2013/12/08/154641

3. Transition은 씬 전환하는데 여러가지 효과를 줍니다. 밑에 쭉 사용 가능한 것들과 몇개는 주석을 달아놨는데 움직이는건 직접 써보시는게 좋을 거 같아요. 은근 재미있습니다.


Transition 관련 참고 링크 : http://singleton.tistory.com/366

void Opening::changeScene(void) {
//	Director::getInstance()->getEventDispatcher()->removeAllEventListeners();
	Director::getInstance()->getEventDispatcher()->removeEventListenersForType(EventListener::Type::TOUCH_ONE_BY_ONE);

	auto hScene = HelloWorld::createScene();
	auto pScene =
			TransitionFade::create(1.0f, hScene);

//			TransitionCrossFade::create(1.0f, HelloWorld::createScene());
//			TransitionRotoZoom::create(0.5f, hScene);
//			TransitionFade::create(0.5f,hScene,Color3B::GREEN);
//			TransitionFadeBL::create(0.5f,hScene);
//			TransitionFadeDown::create(0.5f,hScene);
//			TransitionFadeTR::create(0.5f,hScene);
//			TransitionFadeUp::create(0.5f, hScene);
//			TransitionFlipAngular::create(0.5f, hScene, TransitionScene::Orientation::LEFT_OVER);
//			TransitionFlipX::create(0.5f, hScene, TransitionScene::Orientation::DOWN_OVER);
//			TransitionFlipY::create(0.5f, hScene, TransitionScene::Orientation::UP_OVER);
//			TransitionJumpZoom::create(3.0f, hScene); //시간이 충분히 커야 효과를 제대로 볼 수 있음.
//			TransitionMoveInB::create(0.5f, hScene);
//			TransitionMoveInL::create(0.5f, hScene);
//			TransitionMoveInR::create(0.5f, hScene);
//			TransitionMoveInT::create(0.5f, hScene);
//			TransitionPageTurn::create(0.5f, hScene, false);
//			TransitionProgress::create(0.5f, hScene); //앱이 죽어버립니다.
//			TransitionProgressHorizontal::create(0.5f, hScene);
//			TransitionProgressInOut::create(0.5f, hScene);
//			TransitionProgressOutIn::create(0.5f, hScene);
//			TransitionProgressRadialCCW::create(0.5f, hScene);
//			TransitionProgressRadialCW::create(0.5f, hScene;
//			TransitionProgressVertical::create(0.5f, hScene);
//			TransitionRotoZoom::create(2.0f, hScene); //시간이 너무 짧으면 제대로 안보임
//			TransitionScene::create(0.5f, hScene); //전환된 씬에서 터치가 동작하지 않음.
//			TransitionSceneOriented::create(0.5f, hScene, TransitionScene::Orientation::RIGHT_OVER); //전환된 씬에서 터치 동작x
//			TransitionShrinkGrow::create(0.5f, hScene);
//			TransitionSlideInB::create(0.5f, hScene);
//			TransitionSlideInL::create(0.5f, hScene);
//			TransitionSlideInR::create(0.5f, hScene);
//			TransitionSlideInT::create(0.5f, hScene);
//			TransitionSplitCols::create(1.5f, hScene);
//			TransitionSplitRows::create(1.5f, hScene);
//			TransitionTurnOffTiles::create(0.5f, hScene);
//			TransitionZoomFlipAngular::create(0.5f, hScene, TransitionScene::Orientation::DOWN_OVER);
//			TransitionZoomFlipX::create(0.5f, hScene, TransitionScene::Orientation::LEFT_OVER);
//			TransitionZoomFlipY::create(0.5f, hScene, TransitionScene::Orientation::RIGHT_OVER);

	Director::getInstance()->replaceScene(pScene);
}


AppDelegate.cpp

초기 실행화면을 교체합니다.

#include "AppDelegate.h"
#include "HelloWorldScene.h"
#include "OpeningScene.h"

USING_NS_CC;

AppDelegate::AppDelegate() {

}

AppDelegate::~AppDelegate() 
{
}

bool AppDelegate::applicationDidFinishLaunching() {
    // initialize director
    auto director = Director::getInstance();
    auto glview = director->getOpenGLView();
    if(!glview) {
        glview = GLView::create("My Game");
        director->setOpenGLView(glview);
    }

    // turn on display FPS
    director->setDisplayStats(true);

    // set FPS. the default value is 1.0/60 if you don't call this
    director->setAnimationInterval(1.0 / 60);

    // create a scene. it's an autorelease object
//    auto scene = HelloWorld::createScene();
    auto scene = Opening::scene();

    // run
    director->runWithScene(scene);

    return true;
}


실행 화면 : 


 




Posted by 아이시네프
cocos2d-x 공부용2014. 9. 17. 11:44

원글 출처 : http://horns.tistory.com/17


-12- 점수 계산


1. 점수 이미지&폰트

원글 출처에서 이미지랑 fnt 파일을 받아 Resources 폴더에 넣어주시기 바랍니다.


2.  CCLabelBMFont


HelloWorldScene.h

class HelloWorld : public cocos2d::Layer
{
private:
...
	int _score;
	LabelBMFont* _scoreFont;

public:
...
    void addGameScore(int deadCoinNum);

};


HelloWorldScene.cpp

void HelloWorld::createGameScene() {
...
	//점수 이미지 추가
	_scoreFont = LabelBMFont::create("0", "font.fnt", _screenSize.width*0.3f);
	_scoreFont->setAnchorPoint(ccp(1, 0.5));
	_scoreFont->setPosition(ccp(_screenSize.width*0.5f, _screenSize.height*0.95f));
	_scoreFont->setScale(1.5f);
	this->addChild(_scoreFont);

	initGameCoin();
}

void HelloWorld::initGameCoin() {
	int coinX = 0;
	int coinY = 0;
	int diffX = _screenSize.width * 0.135f; //코인 x 간격
	int diffY = _screenSize.height * 0.097f; //코인 y 간격
	int initCoinX = _screenSize.width * 0.095f; //초기 코인 x 위치
	int initCoinY = _screenSize.height * 0.613f; //초기 코인 y 위치

	GameCoin* gameCoin;
	_lastCoin = -1;
	_selectCoinCount = 0;
	_score = 0;
...
}

void HelloWorld::addGameScore(int deadCoinNum){
	char score[100] = {0,};

	_score += (deadCoinNum*100); //한코인당 100점

	sprintf(score, "%i", _score);
	_scoreFont->setString(score);
}

void HelloWorld::clearSelectCoin() {
	int index;
	GameCoin* tmpCoin;

	if (_selectCoinCount >= 3) {
		addGameScore(_selectCoinCount);

		for (index = 0; index < _selectCoins->count(); index++) {
			tmpCoin = (GameCoin*) _selectCoins->objectAtIndex(index);
			tmpCoin->setState(GameCoin::DEAD);
			tmpCoin->setVisible(false);
		}
	} else {
		for (index = 0; index < _selectCoins->count(); index++) {
			tmpCoin = (GameCoin*) _selectCoins->objectAtIndex(index);
			tmpCoin->setState(GameCoin::LIVE);
		}
	}
	resetSelectMask();
	resetGameInfo();
}

실행 화면 :



 




설명 생략합니다.

Posted by 아이시네프