2017-07-09 9 views
0

キャラクターを動かすときに問題になるのは(彼は人型ではありません)彼のウォークアニメーションは動きの方向に沿っていません。例えば、Wを押すと、アニメーションが左に90度回転すると、どこに問題があるのか​​わかりません。ここで私が持っているコードです:ユニティと方向を合わせるアニメーション

public class PlayerControler : MonoBehaviour 
{ 

    public float MovSpeed = 3; 

    public float SmoothTime = 0.1f; 
    float TurnSmoothVelocity; 

    public float SpeedSmoothTime = 0.1f; 
    float SmoothVelocity; 
    float CurrentSpeed; 

    Animator animator; 

    void Start() 
    { 
     animator = GetComponent<Animator>(); 
    } 

    void Update() 
    { 

     Vector2 Input = new Vector2(UnityEngine.Input.GetAxisRaw("Horizontal"), UnityEngine.Input.GetAxisRaw("Vertical")); 
     Vector2 InputDirection = Input.normalized; 

     if (InputDirection != Vector2.zero) 
     { 
      float TargetRotation = Mathf.Atan2(InputDirection.x, InputDirection.y) * Mathf.Rad2Deg; 
      transform.eulerAngles = Vector3.up * Mathf.SmoothDampAngle(transform.eulerAngles.y , TargetRotation, ref TurnSmoothVelocity, SmoothTime); 
     } 

     float targetSpeed = MovSpeed * InputDirection.magnitude; 
     CurrentSpeed = Mathf.SmoothDamp(CurrentSpeed, targetSpeed, ref SmoothVelocity, SmoothTime); 

     transform.Translate(transform.forward * CurrentSpeed * Time.deltaTime, Space.World); 

     float animationSpeedPercent = .5f * InputDirection.magnitude; 
     animator.SetFloat("SpeedPercent", animationSpeedPercent, SpeedSmoothTime, Time.deltaTime); 

    } 
} 

答えて

1

アニメーションオブジェクトは、このスクリプトが割り当てられているコントローラの子でなければなりません。

EmptyGameObjectを作成し、このスクリプトを追加してアニメーションキャラクタの親をそのオブジェクトの下に置きます。

まだ正しく動作していない場合は、アニメーションに問題がある可能性があります。スクリプトは私に見えます。

関連する問題