2017-12-15 1 views
0

내 Player 개체에이 스크립트를 만들었습니다. 그것은 아이, 1 카메라와 1 모델입니다. 문제는 내가 마우스를 움직일 때마다 플레이어가 아래로 움직이는 것입니다. 그리고 캠은 올라간다.Unity 5 fpscontroller 이상한 오류

스크립트 :

public GameObject cam; 
public float sensitivity = 2f; 
public float walk_speed = 2f; 
public float run_speed = 2f; 

CharacterController player_CC; 
float speed; 
float moveFB; 
float moveLR; 
float rotX; 
float rotY; 
bool canMove; 


void Start() { 

    canMove = true; 

    player_CC = GetComponent<CharacterController>(); 

    speed = walk_speed; 

} 


void Update() { 

    if (canMove) 
    { 
     moveFB = Input.GetAxis("Vertical") * speed; 
     moveLR = Input.GetAxis("Horizontal") * speed; 

     rotX = Input.GetAxis("Mouse X") * sensitivity; 
     rotY = Input.GetAxis("Mouse Y") * sensitivity; 

     Vector3 movement = new Vector3(moveLR, 0, moveFB); 
     transform.Rotate(0, rotX, 0); 
     cam.transform.Rotate(rotY, 0, 0); 
     movement = transform.rotation * movement; 
     player_CC.Move(movement * Time.deltaTime); 
    } 

    if (Input.GetKey(KeyCode.LeftShift)) 
    { 
     speed = run_speed; 
    } else 
    { 
     speed = walk_speed; 
    } 

} 

Unity GameObject Picture

답변

2

movement = transform.rotation * movement;

당신은 당신의 움직임 벡터하여 변환 회전을 곱한 것입니다. 논리를 분리하십시오.

+0

나는 틀렸다고 생각합니다. 내 선수를 y 위아래로 움직일 회전은 어떻게됩니까? –

+0

@ NA - 네 말이 맞아, 틀렸어. 업데이트 된 답변. –

+0

죄송합니다. 나는 아주 이해하지 않는다. 더 설명해 주시겠습니까? –

0

나는 그 원인을 알고 있습니다. 그러나 나는 그것이 왜 그것을했는지 모른다. 하지만 저는 같은 대상에 캐릭터 콘트롤러와 강체를 사용했습니다. 시간을 낭비하게해서 죄송합니다./