2017-07-14 15 views
0

私は、単一のボールモデルに添付された簡単なスクリプトを持っています。ボールをコントロールするために、私はthisの例をドキュメントで提供しようとしました。私が受け取る問題は、ボールが視覚的に物理的なローテーションの変化の半分の速さで回転することです。Unity C#CharacterController Script

例:360度の物理的回転を行うとボールが視覚的に180度回転します。

パブリッククラスPlayerController:MonoBehaviour {

public float MoveSpeed; 
public float RotationSpeed; 
CharacterController controller; 

void Start() 
{ 
    controller = GetComponent<CharacterController>(); 
} 

void Update() 
{ 
    transform.Rotate(new Vector3(0, Input.GetAxis("Horizontal") * RotationSpeed, 0)); 
    Vector3 forward = Input.GetAxis("Vertical") * transform.TransformDirection(transform.forward) * MoveSpeed; 

    controller.Move(forward); 
} 

私が達成したいと思い、何がその物理コントロールの回転に合わせて回転するボールのためです。

+1

'transform.TransformDirection(transform.forward)'が必要ですか? 'transform.forward'も仕事をしませんか? –

+0

あなたはそれを解決したまあホットダグ。私はそれに違う議論を渡そうとしていて、それが問題だと思った。私はそれを受け入れることができるように答えとして投稿したいですか? – Ryan

+0

私は8分間それを受け入れることができませんが、私はそれを確認します。もう一度ありがとう – Ryan

答えて

3

トランスフォームのローカル順方向ベクトルを同じトランスフォームの順方向ベクトルに変換しようとしているため、transform.TransformDirection(transform.forward)を取り除くだけです。

代わりに単純なtransform.forwardを使用してください。