2023/01/07

노윤수·2023년 1월 7일

오늘은 셰이더 적용을 연습해보려고 합니다. 빌트인 파이프라인이다 보니, 셰이더 그래프를 잘 못써서 힘들었는데, material의 setfloat값을 변경하는 방법을 이용해서 outLine을 그릴 수 있더라고요. 그래서 nearestThing에 배치되면 outline이 변경되는 기능을 구현해볼까 합니다.

아직 게임을 제대로 만들지도 않았는데 하루종일 게임이용자의 편의성을 위해 투자하는 것이 맞나 싶네요. 1인칭에서 3인칭으로 변경하면서 기존의 커서를 통해서 npc에 커서를 올리는 방식이 아닌 sphereCast를 통해서 ray를 쏜 곳 근처의 sphere를 만들어서 반응 할 수 있도록 하였습니다. sphere cast를 쓴이유는 근처만 가더라도 npc와 상호작용 할 수 있도록 만들고 싶었기 때문인데요, raycast를 쓸 경우 정확히 ray가 npc와 맞아야하지만, sphereCast를 쓸 경우 그 근처만 가더라도 sphere안에 포착되면 상호작용이 가능합니다.

현재 canvas에 있는 대화가능 창이 안뜨는 것으로 확인됐습니다. 기능 변경을 하면서 기존의 만들었던 기능을 까먹을 뻔했네요.-해결

아니 무슨 방법을 써야하는지 잘 모르겠어요. physics.spherecast를 쓰고 있는데 카메라방향을 정가운데로 해야하니 생각보다 불편하더라고요.

  1. 시야 안에 있는 오브젝트여야함
  2. 카메라 회전으로 오브젝트를 선택할 수 있어야함.

spherecast는 1번 2번 둘다 가능하지만, 캐릭터가 정면을 바라보고 있어야하기 때문에 npc와 플레이어의 대화장면을 정확히 볼 수 없음. 그러면 대화하는 동안만 카메라 위치를 변경하면 되는거 아닐까? 플레이어와 카메라의 중간지점을 찍을 수 있는 시네머신 카메라를 이용한다면 해결가능할 수도 있다는 생각이 드네요.
-해결방안 textEnd변수가 안 끝났을 때는 1인칭으로 시점 변경을 해서 확실히 대화한다는 느낌을 주면 됩니다. 훨씬 간편하고 좋네요.

문제점:위치에 따라서 NPC와의 대화씬거리가 너무 가까우면 장면이 어색함
흠..각 npc마다 시네머신 카메라를 주고 priority를 바꾸는 방법도 있긴할텐데 너무 복잡해서..(귀찮음)

완성도를 위해서 시네머신 카메라를 주기로 했습니다..crowd10에 시범을 보여놨으니 내일 아침에 정신없을 때 npc마다 시네머신을 주면서 잠을 깨면 되겠네요..(value값도 같이 조절)그래도 성공적으로 구현하긴 했습니다.

profile
코딩조아

0개의 댓글