241206(금) [NPC 대화]
NPCdata.csusing UnityEngine;[CreateAssetMenu(fileName = "NewNPCData", menuName = "Dialogue/NPC Data")]public class NPCData : ScriptableObject{ public string npcName; public string[] dialogueLines;} NPC 대화정보를 스크립터블 오브젝트로 관
senji.tistory.com
이전 NPC 대화는 NPC만 대화를 출력하고 (단방향) 이미지는 나오지 않았다.
이번에는 NPC와 플레이어가 상호작용(양방향 대화)하고
각 NPC에 맞는 이미지가 보여지게 되었으며
DOTween을 통해 대화메시지가 한글자씩 출력되는 애니메이션이 실행된다.
[CreateAssetMenu(fileName = "NewNPCData", menuName = "Dialogue/NPC Data")]
public class NPCData : ScriptableObject
{
... 중략
public Sprite npcHeadImage;
public Sprite npcBodyImage;
}
NPC 이미지를 npcData 매개변수를 통해 데이터를 넘겨준다.
DialougeManager.cs
[SerializeField] private Image npcHeadImage;
[SerializeField] private Image npcBodyImage;
public void StartDialogue(NPCData npcData)
{
... 중략
npcHeadImage.sprite = currentNPCData.npcHeadImage;
npcBodyImage.sprite = currentNPCData.npcBodyImage;
// 첫 대화 출력
NextDialogue();
}
다이얼로그 매니저에 NPCData를 전달하여 NPC마다 보이는 이미지가 다르게
표현되게 했다. 처음에 NPC와 접근하면 이미지가 흰색 이미지가 떠서 오류 원인 파악을 위해 튜터님에게 여쭤봤는데
필요없는 오브젝트가 겹쳐서 발생한 문제로 오브젝트를 삭제했더니 정상적으로 보이게 됐다.
또한, 한글자씩 타이핑 한 것처럼 보이는
대화 애니메이션을 사용하기 위해 Dotween 함수를 사용했다.
canTalking = false;
if (npcIndex < currentNPCData.npcDialogue.Length)
{
npcDialogueText.text = string.Empty;
npcDialogueText.DOText(currentNPCData.npcDialogue[npcIndex], DOTextDelay).OnComplete(() => canTalking = true);
... 중략
}
DOText를 사용하여 npc 또는 player 다이얼로그를 DOTextDelay 만큼 실행되게 하였고
OnComplete 함수를 통해 대화가 끝날때만 넘어갈 수 있게 설정했다.
if (!canTalking)
{
playerDialogueText.DOComplete();
npcDialogueText.DOComplete();
return;
}
CanTalking이라는 bool형 변수를 사용했다.
CanTalking이 false면 타이핑 애니메이션이 실행중이여서 대화가 불가능한 상태를 뜻한다. (다음대화로 안 넘어가짐)
player, npc 대화메시지를 DOTween 함수중
DOComplete 함수를 사용하여 즉시 완료 상태가 되게끔 설정하여
이용자가 대화를 다 안보더라도 대화가 모두 출력된 뒤 다음 대화로 넘어갈 수 있게 됐다.
참고자료
https://velog.io/@livelyjuseok/Unity-DOTween-%EC%82%AC%EC%9A%A9%ED%95%98%EA%B8%B0
Unity - DOTween 사용하기
다트윈, 닷트윈으로 불리는 유니티에서 유명한 에셋중 하나입니다. 설명을 보면 C나에게는 가벼운 기능들을 빠르고 효율적이게 쓸 수 있게 해주는 API 같은 존재이다. 사용하기 위해서는 using DG.T
velog.io
유니티 Dotween 함수 정리
자주 사용하는 함수- DoRestart : 트윈을 처음부터 다시 시작- DoRewind : 트윈을 거꾸로 재생하여 처음 상태로 되돌림두 개의 함수를 이용해서 주로 UI 애니메이션 만들곤 함. 함수 이름 설명 DOCo
wlsdn629.tistory.com
https://dotween.demigiant.com/documentation.php
DOTween 공식문서로 이승환 튜터님이 참고해보라고 주신 자료
다 영어이긴 하지만...ㅠㅠ 유용한 자료같다.
감사합니다!
DOTween - Documentation
Nomenclature Tweener A tween that takes control of a value and animates it. Sequence A special tween that, instead of taking control of a value, takes control of other tweens and animates them as a group. Tween A generic word that indicates both a Tweener
dotween.demigiant.com
'개발일지 > 최종프로젝트' 카테고리의 다른 글
241216(월) [공격 기능, 몬스터에게 데미지 주기] (1) | 2024.12.16 |
---|---|
241211(수) [버그, 내일 할것] (0) | 2024.12.11 |
241209(월) [기술면접 메모] (0) | 2024.12.09 |
241206(금) [NPC 대화] (0) | 2024.12.06 |
241205(목) [시네머신(Cinemachine)을 이용한 카메라 범위 제한] (0) | 2024.12.05 |