キャラクターを左右に動かすスクリプトを作成したのですが、以下の図のようなエラーが出ます。
これらのエラーを解決したく思います。
Vector2.Vector2(float.float)とはどこを示しているのでしょうか。
floatにrigidbody2Dの定義が含まれていないとはどういうことでしょうか。コンポーネント取得だけではだめだということでしょうか。
スクリプトは以下になります。
using System.Collections; using System.Collections.Generic; using UnityEngine; public class PlayerManager : MonoBehaviour { //public変数 //[Header("横方向速度")] public float xspeed = 3; //プライベート変数 private float speed; public enum DIRECTION_TYPE { STOP, RIGHT, LEFT, } DIRECTION_TYPE direction = DIRECTION_TYPE.STOP; Rigidbody2D rigidbody2D; private void Start() { rigidbody2D = GetComponent<Rigidbody2D>(); } private void Update() { float horizontalKey = Input.GetAxis("Horizontal"); if(horizontalKey == 0) { //止まっている direction = DIRECTION_TYPE.STOP; } else if (horizontalKey > 0) { //右向きに進む direction = DIRECTION_TYPE.RIGHT; } else if (horizontalKey < 0) { //左向きに進む direction = DIRECTION_TYPE.LEFT; } } private void FixedUpdate() { switch (direction) { case DIRECTION_TYPE.STOP: speed = 0; break; case DIRECTION_TYPE.RIGHT: speed = 3; break; case DIRECTION_TYPE.LEFT: speed = -3; break; } rigidbody2D.velocity = new Vector2(speed.rigidbody2D.velocity.y); } } コード
1つ目、
Vector2に引数1つのコンストラクタは存在しません。2つ指定してください。
Vector2にカーソルを合わせてF12キーを押してみてください。
public Vector2(float x, float y);
コンストラクタはこれしかありません。newするにはfloat型のxとyの2つの値が必要です。
2つ目、
speed.rigidbody2D.
speedという変数にrigidbody2D存在しません。
フィールドでspeedはfloatの値型として定義しています。なのでspeedが持っているものはfloat型、4byteの浮動小数点で表す値しか持っていませんのでrigidbody2Dなんてものは存在しませんってエラーです。
後のusingや参照が不足っていうのは、それらを使用するための定義を書き忘れていませんか?ってエラーです。
例えばusing UnityEngine;を消すと、
public class PlayerManager : MonoBehaviour {}
このMonoBehaviourの部分で同じようなエラーがでます。MonoBehaviourなんてものはありません、何か書き忘れはないですか?って問われているのです。
ありがとうございます。
やはりどちらもカンマとピリオドを間違えたから出てきたエラーなんですね。
気をつけます。
回答1件
あなたの回答
tips
プレビュー