inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진

Input Manager

회전/이동 코드 관련 질문

414

mir8725

작성한 질문수 5

0

제가 키 입력 받는 것이 if문으로 받기 껄끄러워서
if문을 switch로 대체하고, 키입력은 Input.inputString으로 받아서 다음과 같이 작성하였습니다.

    void OnKeyboard()
    {
        switch (Input.inputString)
        {
            case "w":
                Move_Rot(Vector3.forward);
                break;

            case "s":
                Move_Rot(Vector3.back);
                break;

            case "a":
                Move_Rot(Vector3.left);
                break;

            case "d":
                Move_Rot(Vector3.right);
                break;
        }
    }

    void Move_Rot(Vector3 vector)
    {
        float delta = Time.deltaTime;
        transform.rotation = Quaternion.Slerp(transform.rotation, Quaternion.LookRotation(vector), delta * ROT_SPEED);
        transform.position += vector * delta * SPEED;
    }

그런데 이처럼 작성하면,
회전이나 이동속도가 굉장히 느려지고, 회전 동작도 뚝뚝 끊깁니다.
(물론 동일한 방식으로 if문으로 작성했을 때는 끊김없이 부드럽게 이동되었습니다.)

혹시 이와 같은 일이 일어나는 건 무엇 때문일까요?
switch문이 아니면, GetKey가 아니라 Input.inputString으로 키입력을 가져와서 일까요?

키입력_받기 unity C#

답변 4

1

mir8725

아 프레임당 업데이트 되는게 아니라, 그냥 정말 키보드 입력만 받아오는 거였군요

제가 시도했던 다른 방법도 프레임 당 업데이트가 제대로 이뤄지지 않기 때문이네요

와...정말 감사합니다ㅠㅜ 강의 항상 재밌게 잘 보고 있습니다!!

0

Rookiss

살펴보니 switch-case 문제는 아니고 그냥 Input.inputString 관련된 이슈입니다.
실제로 로그를 찍어보면 Input.inputString이 빈 문자열로 찍히는 경우가 많습니다.
따라서 매 프레임 회전하지 않게 됩니다.
애당초 Input.InputString 누르고 있는 키를 탐지하는 용도로 만들어진게 아니라고 합니다.

https://docs.unity3d.com/ScriptReference/Input-inputString.html


https://answers.unity.com/questions/1417894/inputinputstring-is-sometimes-empty-when-im-holdin.html

0

mir8725

도무지 잘 모르겠어서 방금 보내드렸습니다ㅠㅜ 감사합니다!

0

Rookiss

저 부분만 봐서는 알 수 없지만
switch와 Input.InputString과는 무관해 보이고
아마도 InputManager를 콜백으로 호출하는 것과 연관이 있어 보입니다.
해당 부분을 그냥 일반적인 Update 코드에 넣어도
동일한 문제가 일어나는지 테스트 해보시기 바랍니다.

해결이 안 되면 rookiss@naver.com로 전체 프로젝트 압축해서 보내주시기 바랍니다.

몬스터 HP 게이지바 이동

0

10

1

매니저 관련 질문이 있습니다.

0

64

2

비쥬얼 스튜디오에서 unity연결이 없습니다.

0

73

2

UI 기능 관련 질문이 있습니다!

0

67

2

픽셀 좌표 스크린 좌표

0

45

0

전체적으로 코드 읽는게 굉장히 오래 걸리네요...

0

101

2

카메라 #2 수업 캐릭터 쓰러짐 해결

0

93

1

플레이어 움직임이 끝날때, 기울어짐 현상

0

97

1

Input 적용과 관련하여 질문 있습니다.

0

90

1

디버그 불가.. Unity에 연결 불가

0

97

1

달리기 애니메이션 에러

0

98

2

오랜만에 게임을 만들다가 사운드 관련해서 뭔가 궁금한게 있어서 봤습니다

0

75

1

GetKey 오류

0

125

2

에셋을 어디에 올려두신지 알 수 있나요?

0

114

1

재귀호출? 오류나는데 왜 이래요 ?

0

175

6

Animation blending 파라미터 계산

0

75

1

newPos와 to지점이 겹쳐져야 하는거 아닌가요?

0

109

3

오브젝트 복제하니까 자꾸 이런게 뜨면서 꺼집니다

0

95

2

질문있습니다

0

153

2

아 이거 소스코드 같은거 없나요?

0

152

3

질문 드립니다. string.IsNullOrEmpty(name)

0

94

2

@Managers 가 씬에 배치되어 있어도 문제가 되지 않나요?

0

139

2

유니티6 NavMesh 안되는분들

1

191

1

Unity6 Unity-Chan Material 마젠타 문제 해결법

7

560

1