내일배움캠프/TIL

유니티 숙련주차 개인프로젝트 마무리?

서보훈 2024. 10. 29. 20:41

 

 

추가 구현이 필요한 부분

  • 버프 아이템
  • 캐릭터 추가 및 애니메이션 추가
  • 추가 상호작용 오브젝트 (창고 등)
  • readme.... 제출 후 작성 예정...

 

여러모로 버그 수정을 하다가 시간을 너무 많이 써버렸습니다...

 

플랫폼 로직을 잘못짜서 수정한 내용 (++ 연산 진행 후, 도착판정을 내서 실제 도착지 전 노드에서 도착판정 발생)

벽타기 관련 오류 (측면 이동시 로직)

 

특히 대각선으로 발사하는 형태의 대포의 경우, 제데로 날라가지 않는 문제가 발생했는데,

이동이 velocity를 직접 수정하는 방식이였기 때문에, 이동 입력이 없으면 x, y velocity가 0이 되서 수직으로는 날라가지만, 수평으로는 이동이 불가능한 경우였습니다.

//캐릭터 움직이기
public void Move()
{
    //입력으로부터 움직일 방향 결정
    Vector3 dir = transform.forward * curMovementInput.y + transform.right * curMovementInput.x;

    //방향 * 속도 -> 실제 움직임
    dir *= (moveSpeed + additinalSpeed);

    //velocity 로 움직임 구현
    if (IsGrounded())
    {
        //y축 : 점프, 현재 velocity를 가져와서 높이 유지
        dir.y = rb.velocity.y;

        rb.velocity = dir;
    }
    else
    {
        transform.position += dir * 0.01f;
    }
}

 

따라서 땅에 닿아있지 않은경우 이동방식을 velocity를 변경하지 않고, transform을 증감시키는 방식으로 변경하였습니다.

→ 이 경우, 점프를 뛰면서 전진할때 더 빨라지는 문제가 발생합니다.

또한, 대포 사용시 대포의 벽에 걸리지 않도록 캐릭터를 발사 방향으로 rotation 값을 수정하고, 움직이지 못하게 구현하였는데, 이때 카메라가 매우 어색합니다.

 

임시로 카메라 포지션을 잡아주는등의 개선이 필요해보입니다.

 

카메라의 경우, 3인칭 시점을 위해 별도로 카메라 기능을 구현하였습니다.

public class CamController : MonoBehaviour
{
    public Camera cam;
    public LayerMask groundLayerMask;

    private float minCamZ = -2;
    private float maxCamZ = 0;

    private void Start()
    {
        cam = Camera.main;
    }

    private void LateUpdate()
    {
        float camZ;

        Ray ray = new Ray(transform.position, -transform.forward);
        RaycastHit hit;

        if (Physics.Raycast(ray, out hit, 2f, groundLayerMask))
        {
            camZ = Vector3.Distance(hit.point, transform.position) * -1;
        }
        else
        {
            camZ = minCamZ;
        }

        camZ = Mathf.Clamp(camZ, minCamZ, maxCamZ);

        cam.transform.localPosition = new Vector3(cam.transform.localPosition.x, cam.transform.localPosition.y, camZ);
    }
}

시점 기준이 될 위치에서 카메라를 향해 ray를 쏘며, 그 사이에 ground 레이어에 속한 오브젝트가 감지될경우, 해당 포인트에 카메라가 위치하도록 설계했습니다.

 

위 영상에 추가되지 않은, 장비를 통한 이동속도, 점프력 증가 구현 시연 입니다.