Unity_2기 내일배움캠프 TIL

Unity_2기 12주차 (230125)

잼잼재미 2024. 1. 25. 10:26

오늘은 아이템 추가 구현, 동료를 Player 앞에 생성하는 기능을 구현했다.

 

 

구현 기능


1. 동료 스폰

 

public void OnPartnerSpawn(InputAction.CallbackContext context)
{
    if (!_canShipControll)
    {
        if (context.phase == InputActionPhase.Started)
        {
            Debug.Log("PartnerSpawn");
            if(PartnerSpawnCount > 0) PartnerSpawn();
        }
    }
}

public void PartnerSpawn()
{
    PartnerSpawnCount--;
    _partnerSpawnCount.text = PartnerSpawnCount.ToString();
    Vector3 spawnPosition = transform.position + transform.forward * 5f;
    Instantiate(_partnerPrefab, spawnPosition, Quaternion.identity);
}

 

PlayerInputAction을 사용해서 E키를 추가했다. 그리고 Player가 바라보는 앞에 기존에 생성했던 Partner 프리팹을 생성하도록 구현했다.

 

 

2. NPC 기능 구현

 

 

  • 콜라이더 istrigger로 가까이가면 Trade 창 활성화, 멀어지면 Trade 창 비활성화
  • 버튼으로 구매 확정
  • 버튼 클릭 시, UI 변경
  • Trade 창 활성화 시, 마우스 활성화

 

 

트러블 슈팅


1. 씬 이동 시, 오류

 

위와 같은 오류는 씬 이동 후, GameManager 인스펙터에 드래그 된 오브젝트들이 연결이 해제되어서 나는 오류라고 예상했다. 그래서 Player도 GameManager과 똑같이 DontDestroyOnLoad 사용했다.

 

 

private void Awake()
{

    DontDestroyOnLoad(gameObject);

    Rigidbody = GetComponent<Rigidbody>();
    _swordController = GetComponentInChildren<SwordController>();
    GunController = GetComponentInChildren<GunController>();
    _axeController = GetComponentInChildren<AxeController>();
}

 

게임이 처음 실행 될 때, 가장 먼저 DontDestroyOnLoad를 해줬다. 하지만 왜인지 씬 이동 후, GameManager은 잘 넘어가지만 Player는 넘어가지 않았다. 알고보니 게임 씬이 이동하기 직전에 Player가 배의 자식으로 있어서 DontDestroyOnload가 적용되지 않았다. 그래서 직전에 자식에서 나올 수 있도록 코드를 작성했지만, 자식에서 나오질 못했다. 팀원이 작업한 내용과 다운 받을 때 포함 된 스크립트와 내가 설정한 작업이 섞여서 자동적으로 배 운전 중에는 배의 자식으로 포함되어 있는 것 같았다. 그래서 일단은 각 씬별로 GameManager과 Player를 설정했다. 그리고 Player의 데이터를 DataManager에서 저장했다가 씬 이동 후, 데이터를 불러오는 방법으로 구현했다. 아마도 효율적인 방법은 아니라고 생각들지만 추후 수정하겠다!

 

 

2. 경사에서 적의 이동

Player를 쫒아오는 적의 지형이 경사가 있다면 Player 방향으로 공중에서 다가오는 버그 발견. 적의 이동에 대한 버그가 상당히 많아서 추가 기능 진행 후, 함께 수정 예정!

 

 

회고


오늘은 생각보다 씬 오류를 고치는데 시간이 오래걸렸다. 빨리 고칠 수 있다고 생각했지만 내가 짠 코드가 아니다보니 생각보다 오래 걸렸고, 결국은 원래 생각한 방법으로 해결하지 못하고 애매한 방법으로 해결하였다. 나중에 꼭 수정을 해야겠다! 중간 발표가 다와가기 때문에 팀원들과 조금더 기능 구현에 초점을 맞춰서 열심히 준비해야겠다!

'Unity_2기 내일배움캠프 TIL' 카테고리의 다른 글

Unity_2기 13주차 (230129)  (0) 2024.01.29
Unity_2기 12주차 (230126)  (1) 2024.01.26
Unity_2기 12주차 (230124)  (1) 2024.01.24
Unity_2기 12주차 (230123)  (1) 2024.01.23
Unity_2기 12주차 (230122)  (0) 2024.01.22