質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

Q&A

解決済

1回答

1513閲覧

Vector2とrigidbody2Dのエラーの内容がわかりません

退会済みユーザー

退会済みユーザー

総合スコア0

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

0グッド

0クリップ

投稿2021/02/22 08:33

キャラクターを左右に動かすスクリプトを作成したのですが、以下の図のようなエラーが出ます。
これらのエラーを解決したく思います。
イメージ説明
イメージ説明
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); } } コード

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2021/02/22 09:52

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なんてものはありません、何か書き忘れはないですか?って問われているのです。
退会済みユーザー

退会済みユーザー

2021/02/22 11:39

ありがとうございます。 やはりどちらもカンマとピリオドを間違えたから出てきたエラーなんですね。 気をつけます。
guest

回答1

0

ベストアンサー

値が1個しか入ってないから、Yに入れる値が見つからんぞって怒られてます。

cs

1rigidbody2D.velocity = new Vector2(speed.rigidbody2D.velocity.y); 2// ↑ここがカンマではなく、ピリオドになっている

                      
こんな感じで、XとYに値を入れてみたらどうですか
rigidbody2D.velocity = new Vector2(speed, rigidbody2D.velocity.y);

投稿2021/02/22 09:37

hogefugapiyo

総合スコア3302

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2021/02/22 09:46

ありがとうございます。思い切りピリオドになってましたね。助かりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問