2017-12-15 3 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

私は間違っていると思います。回転は私のプレーヤーを上下にどのように動かすでしょうか? –

+0

@ NA - あなたが正しくて、私は間違っていました。更新された答え。 –

+0

すみません。私はかなり理解していない。もっと説明できますか? –

0

私はそれを引き起こした原因を知っています。しかし、なぜそれがそれをしたのかわかりません。しかし、私は同じオブジェクト上にcharachtercontrollerとrigidbodyを使用しました。あなたの時間を無駄にして申し訳ありません:/