

日本語訳すると「パラメーター "MoveSpeed"
は存在しません。」ということだと思いますが、似たようなエラーでよくあるスクリプトのタイプミスなどは確認しました。  
移動スピードをanimatorに反映させるためのスクリプトです。何卒よろしくお願いします。

**エラー本文**

[code]

    Parameter 'MoveSpeed' does not exist.
    UnityEngine.Animator:SetFloat (string,single)
    PlayerController:Update () (at Assets/iigeemu/script/PlayerController.cs:51)
    
[/code]

**ソースコード**

[code]

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    
    public class PlayerController : MonoBehaviour
    {
        [SerializeField] private Animator animator;
        [SerializeField] private float moveSpeed = 10;
        [SerializeField] private float jumpPower = 3;
        private CharacterController _characterController;
    
        private Transform _transform;
        private Vector3 _moveVelocity;
        private Transform _transform;
        private Vector3 _moveVelocity;
    
        // Start is called before the first frame update
        void Start()
        {
            _characterController = GetComponent<CharacterController>();
    
            _transform = transform;
        }
    
        // Update is called once per frame
        void Update() {
            {
                Debug.Log(_characterController.isGrounded ? "地上にいます" : "空中です");
    
    
                _moveVelocity.x = Input.GetAxis("Horizontal") * moveSpeed;
                _moveVelocity.z = Input.GetAxis("Vertical") * moveSpeed;
    
                _transform.LookAt(_transform.position + new Vector3(_moveVelocity.x, 0, _moveVelocity.z));
                if (_characterController.isGrounded)
                {
                    if (Input.GetButtonDown("Jump"))
                    {
    
                        Debug.Log("ジャンプ!");
                        _moveVelocity.y = jumpPower;
                    }
                }
                else
                {
    
                    _moveVelocity.y += Physics.gravity.y * Time.deltaTime;
                }
    
                _characterController.Move(_moveVelocity * Time.deltaTime);
            }
            
            animator.SetFloat("MoveSpeed", new Vector3(_moveVelocity.x, 0,_moveVelocity.z).magnitude);
        }
    }      
    
[/code]


CC BY-SA 4.0
2022-02-22T02:24:50.037
86506
2022-02-23T03:26:58.090
2022-02-22T02:52:12.230
3060
51552
question
unity3d
unityで　Parameter 'MoveSpeed' does not exist. というエラーが出ます！


Animaor.SetFloat() メソッドは Animator コンポーネントを通じて（Animator
コンポーネントにアサインされている）Animator Controller アセットにパラメーターを渡すメソッドです。

該当のエラーによってわかることは、現在対象となっている Animator Controller に該当のパラメーターが存在していない、ということです。

あとは、パラメーター名を間違えたならそれを直すなり、Animator Controller のパラメーターを追加するなり適宜修正すればよいです。

### 参照

  * [Unity ユーザーマニュアル - アニメーションパラメーター](https://docs.unity3d.com/ja/2020.3/Manual/AnimationParameters.html)


CC BY-SA 4.0
2022-02-22T16:47:00.770
86518
2022-02-22T17:21:29.877
2022-02-22T17:21:29.877
48297
48297
86506
answer


animator.SetFloat("MoveSpeed" のSpeed→speedに小文字変換したらどうでしょうか？


CC BY-SA 4.0
2022-02-23T03:26:58.090
86525
2022-02-23T03:26:58.090
51570
86506
answer