스페이스 바 누르면 위의 대화창이 나타났다가 사라졌다가 하는 코드를 짰음
근데 정상적으로 작동은 하는데 3~4번에 1번 꼴로 키가 씹혀서 스페이스바를 눌러도 대화창이 안나타나거나 안사라짐.
첫 번째 코드가 PlyerController에 있는 메소드인데,
ray를 쏴서 오브젝트 정보를 받아오고 2번째 코드를 불러옴
2번째 코드는 그냥 플레이어가 스캔중일 때 대화창 끄거나 키는 거.
뭐가 문제인지 알려줄 수 있음?
유니티 입문중이라 코드가 보기 어려울 수 있는데 이해해줘
// 오브젝트 스캔
private void ScanObject()
{
RaycastHit2D hitInfo;
if (Input.GetKeyDown(KeyCode.Space))
{
hitInfo = Physics2D.Raycast(new Vector2
(myRigid.position.x, myRigid.position.y)
, dirVec, maxDistance, LayerMask.GetMask("Object"));
if (hitInfo.collider != null)
dialogManager.Action(hitInfo.collider.gameObject);
}
}
//대화창 출력
public class DialogManager : MonoBehaviour
{
//플레이어의 상태 변수
public bool isAction = false;
public Text dialogText;
public GameObject dialogPanel;
public void Action(GameObject obj)
{
if (isAction) //판넬 끄기
{
isAction = false;
}
else //판넬 켜기
{
isAction = true;
dialogText.text = "이것은 " + obj.name + "입니다.";
}
dialogPanel.SetActive(isAction);
}
}
ScanObject가 FixedUpdate에 있어서 생기는 문제로 예상됨
오 덕분에 해결됐음. FixedUpdate랑 Update랑 구별해서 사용해야 되는구나 ㄳㄳ