

2Dゲームを作成していますが、スクリプトの下にある`normalized`に「CS1061」などとエラーが出ても、なんとなく`normalized`じゃなくて他のなにかが入るんだということしかわかりません。

参考にしたサイトです。

[2Dトップダウンの移動アニメーション-
上下左右-【Unityゲーム制作】](https://nosystemnolife.com/unity2d_walking_anim_002/)

ここで書いたコードは間違えているところがあるかもしれないんですけど、サイトに書いている通りに書いてエラーが出てきたので、もう私にはどうすることもできません。

C#でVisual Studioを使って作成しています。  
使っている端末はMacBookでUnityでゲームを作っています。

以下、作成したスクリプトです。

[code]

    using UnityEngine;
    
    public class PlayerMove : MonoBehaviour
    {
        private Rigidbody2D _rd;
        private Animator anim;
        private vecort2 methot;
    
        private float speed = 5.0;
        private object movement;
        
        private void awake()
        {
            _rb = GetAxisRaw<Rigidbody2D>();
            anim = GetAxisRaw<"Animator"();
        }
        
        private void updete()
        { 
            method.x = Input.GetAxisRaw("Horizontal");
            method.y = Input.GetAzisRaw("Vertical");
            anim.SetBool("isWalking",method != vector2.zero);
            if (method != vector2.zero)
            {
               anim.SetFloat("X",method.x);
               anim.SetFloat("Y",method.y);
            }
        }
        private void FixedUpdete()
        {
             _rb.MovePosition(_rb.position + movement.normalized * Time.fixedDeltaTime);
        }
    }
    
[/code]


CC BY-SA 4.0
2023-11-08T09:40:11.017
96714
2023-11-09T02:57:00.467
2023-11-09T02:57:00.467
3060
60358
question
c# unity2d
normalizedにCS1061のエラーが出ていてどうすれば良いかわかりません


提示されたコードは、「参考にしたサイト」に書かれているコードとはまったく別物になってしまっています。よく見比べてください。

「参考にしたサイト」に書かれている手順の通りにUnityを **正確に** 操作して、なおかつスクリプトコードを **正確に**
入力してください（手入力ではなくコピー＆ペーストでもいいので）。

C#プログラムというのは、たとえ1文字でも誤字脱字衍字があったり、大文字・小文字が違ったりするだけでも、コンパイルやビルド（プログラムを実行可能な状態にするための処理）が通らなくなってしまったり、たとえ通ったとしても意図しない動作をするものとなってしまったりします。

「参考にしたサイト」のコード例に存在しない謎のフィールド（クラスのメンバー変数）が追加されていたり、名前が間違っていたり、ジェネリクスの型指定が間違っていたりと、全体的に構文が間違っており、明らかにC#コードとしてコンパイルが通らない状態になっています。本来、そういった間違いというのは、コンパイラがソースファイルの行番号とともに出力してくれるエラーメッセージをヒントに、自分で1つ1つ修正していく必要があります。なぜエラーが出ているのかをよく考えて、自分で修正していくのがプログラミングです。  
おそらく大量のコンパイルエラーが発生しているはずで、1つのエラーだけに着目してもあまり効果的な指摘はできませんが、とりあえず標題のCS1061についてのみ解説しておきます。

C#のコンパイルエラーCS1061は、存在しないメソッドやプロパティなどにアクセスしようとしたときに表示されるエラーです。

  * [コンパイラ エラー CS1061 - C# | Microsoft Learn](https://learn.microsoft.com/ja-jp/dotnet/csharp/language-reference/compiler-messages/cs1061)

`normalized`についてコンパイラがCS1061で指摘しているのは、`movement.normalized`によるアクセス箇所のはずです。  
`movement`は`object`型のフィールドとしてクラス内に定義されていますが、この`object`型は`System.Object`型の別名であり、この型には`normalized`というメンバーは存在しません。そのためエラーになります。

  * [組み込み型 - C# リファレンス - C# | Microsoft Learn](https://learn.microsoft.com/ja-jp/dotnet/csharp/language-reference/builtin-types/built-in-types)
  * [Object Class (System) | Microsoft Learn](https://learn.microsoft.com/en-us/dotnet/api/system.object)

Unityには`Vector2`や`Vector3`といったベクトルを定義するための構造体型 (`struct`)
が定義されています。これらの型は、正規化ベクトル（大きさが1のベクトル）を計算して返す`normalized`プロパティを持っています。  
つまり、`normalized`プロパティを使いたければ`movement`変数の型をこのような型にする必要がある、ということです。

  * [Unity - Scripting API: Vector2](https://docs.unity3d.com/2023.2/Documentation/ScriptReference/Vector2.html)
  * [Unity - Scripting API: Vector3](https://docs.unity3d.com/2023.2/Documentation/ScriptReference/Vector3.html)

いきなりUnityを使おうとすると挫折するので、まずは簡単なコンソールベースアプリケーションのC#コードを理解して自分で書けるようになってからUnityを使うようにしたほうがよいです。Unityで2D/3Dグラフィックスプログラミングをするためには、高校レベルの基本的な数学の知識も必要となります。


CC BY-SA 4.0
2023-11-08T18:38:42.203
96721
2023-11-08T18:38:42.203
15413
96714
answer