0626 귤니티#1

mando·2023년 6월 26일

오늘은 바이오하자드의 기능 중 일부인 획득 아이템을 3d 뷰어로 보는 기능을 만들고자 했다
우선 고민했던건 현재 만든 기능 작동원리는 오브젝트에 가까이 가서 f키를 해당 오브젝트에 대한 독백을 캐릭터가 하는거 였다.

여기서 만약 오브젝트를 획득한다면 이를 독백 창 위에 다른 UI 창에 띄어서 3D 뷰어를 만들지 또는 그냥 카메라를 하나 더 만들어서 depth 값을 수정하여 메인 카메라에서 서브 카메라를 통해 오브젝트를 보며 움직이게 할지 고민을 하고 있다.

현재는 후자를 통해 만들고자 했다.

public Camera mainCamera;
public Camera secondCamera;
public Transform objectToRotate;
public float rotationSpeed = 10f;

public GameObject player;

private bool mouseDown;
private Quaternion defaultRotation;
private Vector3 lastMousePosition;

void Start()
{
    
}

void Update()
{
    if (mouseDown)
    {
        float deltaX = Input.mousePosition.x - lastMousePosition.x;
        float deltaY = Input.mousePosition.y - lastMousePosition.y;

        objectToRotate.Rotate(Vector3.up * deltaX * rotationSpeed, Space.World);
        // 사용 불편을 방지하기 위해 x축 회전은 제한적으로 적용
        objectToRotate.Rotate(Vector3.right * deltaY * rotationSpeed, Space.World);
    }

    if (Input.GetMouseButtonDown(0))
    {
        lastMousePosition = Input.mousePosition;
        mouseDown = true;
    }
    else if (Input.GetMouseButtonUp(0))
    {
        mouseDown = false;
    }
}

public void MoveCameraToTarget()
{   
    secondCamera.depth = 1;
    player.GetComponent<ThirdPersonController>().enabled = false;
}

public void ResetObjectRotation()
{
    objectToRotate.rotation = defaultRotation;
}   

테스트용 코드를 곧장 만들었다.
처음에는 두번째 카메라를 만들어 껐다 킬려고 했는데 잘 되지 않았다.
무엇보다 내가 기존에 하던 방식은 depth 이기에 이를 활용하니 무난히 잘 보였다.
우선 MoveCameraToTarget 메서드를 통해 카메라의 우선 순위를 바꾸고 마우스로 획득 오브젝트의 회전값을 조절할 것이기에 잠시 캐릭터 조작 스크립트를 꺼두었다.

이후 수정 후 실행하니


정상적으로 오브젝트가 나왔다. 이리저리 회전이 가능했다.
문제는 해당 오브젝트의 회전이 뭔가 불편했다. 좌측으로만 돌리려고 했는데 그것이 잘되지 않았다.
해당 오브젝트로 보니 확인이 잘 안되어서 내일 다시 작업할 때 사물같은 오브젝트를 가져와서 테스트 해보면 확실히 뭐가 이상한지 알거같았다.

내일은 해당 기능의 조작키를 수정한후 내가 제시한 방법 중 전자인 uUI창에서 이 오브젝트의 회전하는 방법을 만들어야겠다.

profile
I'm a tangerine

0개의 댓글