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

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

新規登録して質問してみよう
ただいま回答率
85.46%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity3D

Unity3Dは、ゲームや対話式の3Dアプリケーション、トレーニングシュミレーション、そして医学的・建築学的な技術を可視化する、商業用の開発プラットフォームです。

Unity

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

Q&A

1回答

3215閲覧

CS0019・CS0201のエラー

integral2ydx

総合スコア7

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity3D

Unity3Dは、ゲームや対話式の3Dアプリケーション、トレーニングシュミレーション、そして医学的・建築学的な技術を可視化する、商業用の開発プラットフォームです。

Unity

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

0グッド

0クリップ

投稿2022/01/10 11:10

前提・実現したいこと

CS0019・CS0201のエラーを解消させたいです。

ここに質問の内容を詳しく書いてください。
Unityで加速度を表示させるプログラムを作っているのですが、オペランド?というエラーでうまく処理されません。

発生している問題・エラーメッセージ

Assets\Acceleration.cs(51,24): error CS0029: Cannot implicitly convert type 'UnityEngine.Vector3' to 'float' Assets\Acceleration.cs(50,20): error CS0019: Operator '-' cannot be applied to operands of type 'Vector3' and 'float'

該当のソースコード

C#

1float lastVelocity = 0.0f; 2 3 void FixedUpdate() 4 { 5 // 前のフレームからどれだけ移動したかを求め、それを経過時間で割って速度とする 6 this.velocity = (this.rigidbody2D.position - this.previousPosition) / Time.deltaTime; 7 8 // その後、次回の更新に備えて現在の位置をpreviousPositionに保存する 9 this.previousPosition = this.rigidbody2D.position; 10 // 加速度 11 float a = (this.velocity - lastVelocity) / Time.deltaTime; 12 lastVelocity = this.velocity; 13 // 速度を表示 14 Debug.Log(gameObject.name+"の加速度: " ); 15 }

試したこと

https://teratail.com/questions/176643に同じような人がエラーで起こっていたので、=を==に変えたりしましたが、ダメでした。

https://www.tairax.com/entry/Csharp/CS1002-errorも参考にしましたが、セミコロンのミスもなく、自分の力では八方塞がりです。ご教授していただけると大変助かります。

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

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

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

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

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

guest

回答1

0

エラーメッセージが言っているのは、

  • UnityEngine.Vector3 型からfloat型に変換できないよ
  • Vector3 型と float型の引き算はできないよ

ということです。

そこで怪しまれるのは

this.velocity = (this.rigidbody2D.position - this.previousPosition) / Time.deltaTime;

ですね。

推測するに、this.rigidbody2D.position が Vector3 型で、this.previousPosition が float 型なのでは?

まずは型を確認しましょう。

そして三次元の移動量を計算したいのなら、2つの位置ベクトルの差から移動ベクトルを求めて、そのベクトルの大きさ(→スカラ量)を求める必要があるでしょう。

投稿2022/01/10 11:31

itagagaki

総合スコア8402

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

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

integral2ydx

2022/01/11 02:04

型の確認とはどうやって行えばいいのでしょうか?何かチェックできるサイトがあるのでしょうか?
itagagaki

2022/01/11 02:57

あなたが書いたコードについては、あなたが型を知っているはずです。 クラスライブラリのメンバーの型はリファレンスドキュメントに掲載されていて確認できるはずです。 そもそもどんな優秀な人でもリファレンスを見ずにコーディングなどできませんよね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問