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

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

新規登録して質問してみよう
ただいま回答率
86.02%
Unity

Unityは、ユニティテクノロジーが開発したゲームエンジンです。 主にモバイルやブラウザ向けのゲーム製作に利用されていましたが、3Dの重力付きゲームが簡単に作成できることから需要が増え、現在はマルチプラットフォームに対応しています。 言語はC言語/C++で書かれていますが、C#、JavaScript、Booで書かれたコードにも対応しています。

Q&A

解決済

UnityのVector2や変数のエラーが治らない。

nagi__123
nagi__123

総合スコア1

Unity

Unityは、ユニティテクノロジーが開発したゲームエンジンです。 主にモバイルやブラウザ向けのゲーム製作に利用されていましたが、3Dの重力付きゲームが簡単に作成できることから需要が増え、現在はマルチプラットフォームに対応しています。 言語はC言語/C++で書かれていますが、C#、JavaScript、Booで書かれたコードにも対応しています。

2回答

0グッド

0クリップ

250閲覧

投稿2022/11/15 16:39

編集2022/11/15 16:53

前提
unityでerrorが出てしまい、ゲームが再生できない。

unityで2dのゲームを制作しています。
オブジェクトのスケールが0になった場合、変数を1にする機能を実装したいのですが、以下のエラーメッセージが発生しました。

error CS0029: Cannot implicitly convert type 'UnityEngine.Vector3' to 'bool'

実際に書いたコードは以下の通りです。

using System.Collections; using System.Collections.Generic; using UnityEngine; public class test : MonoBehaviour {   //変数を指定  public int a; void Start() { } // Update is called once per frame void Update() { void OnCollisionEnter2D(Collision2D collision) { // 衝突した相手に"ball"タグが付いているとき if (collision.gameObject.name == "ball") { // オブジェクトのスケールを0にする  transform.localScale = new Vector2(0.0f, 0.0f);         //オブジェクトが0の時に   if (transform.localScale = new Vector2(0.0f, 0.0f)) {      // aが1になる a = 1; } }

実現したいこと

-初心者のため、何が原因でエラーになっているのかがわかりません。

       //オブジェクトが0の時に   if (transform.localScale = new Vector2(0.0f, 0.0f)) {      // aが1になる a = 1; }

試しに上の演算子の部分を ~ localScale == new Vector2 ~
にしてみても別のエラーメッセージが出てきます。
error CS0034: Operator '==' is ambiguous on operands of type 'Vector3' and 'Vector2'

何が原因でこうなってるのかご教示いただけると幸いです。

以下のような質問にはグッドを送りましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

グッドが多くついた質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

回答2

0

ベストアンサー

回答としては既に回答されている方がおっしゃるように、比較対象がVector3型とVector2型で型が違うため、比較できません。解決方法としてはどちらか一方の型に合わせましょう。この場合は右辺をVector3.zeroとすればよいと思います。
CS0029エラーとは

ご自身でおっしゃられているように、初学者のためまずC#のいろはを身に着けるところから始めた方が良いと思います。おすすめの教材を添付しておくので、もしよければ参考にしてください。
パイザラーニングC#入門編

投稿2022/11/16 02:17

Y0241-N

総合スコア1010

良いと思った回答にはグッドを送りましょう。
グッドが多くついた回答ほどページの上位に表示されるので、他の人が素晴らしい回答を見つけやすくなります。

下記のような回答は推奨されていません。

  • 間違っている回答
  • 質問の回答になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

このような回答には修正を依頼しましょう。

回答へのコメント

nagi__123

2022/11/16 14:19

ありがとうございます!無事に解決しました。

0

まず、= 記号は代入演算子であり、比較には使えません。
比較には==を使って下さい

あとlocalscaleはvector3なのでvector2とは比較できません

投稿2022/11/16 01:17

Sobasenbei

総合スコア107

良いと思った回答にはグッドを送りましょう。
グッドが多くついた回答ほどページの上位に表示されるので、他の人が素晴らしい回答を見つけやすくなります。

下記のような回答は推奨されていません。

  • 間違っている回答
  • 質問の回答になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

このような回答には修正を依頼しましょう。

回答へのコメント

nagi__123

2022/11/16 14:19

ありがとうございます!無事解決しました。

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

ただいまの回答率
86.02%

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

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

質問する

関連した質問

同じタグがついた質問を見る

Unity

Unityは、ユニティテクノロジーが開発したゲームエンジンです。 主にモバイルやブラウザ向けのゲーム製作に利用されていましたが、3Dの重力付きゲームが簡単に作成できることから需要が増え、現在はマルチプラットフォームに対応しています。 言語はC言語/C++で書かれていますが、C#、JavaScript、Booで書かれたコードにも対応しています。