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

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

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

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

Unity3D

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

Unity

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

Q&A

解決済

1回答

4832閲覧

エラーが出て、bool型を使うことができない

退会済みユーザー

退会済みユーザー

総合スコア0

C#

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

Unity3D

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

Unity

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

0グッド

0クリップ

投稿2019/07/16 07:10

Unityでゲーム製作をしていたところこのようなエラーが出てきてしまいました。解決方法を教えていただけるとありがたいです。

** error CS1660: Cannot convert lambda expression to type 'bool' because it is not a delegate type**

コードはこちらになります。

C#

1using System.Collections; 2using UnityEngine; 3 4public class ButtonEvent : MonoBehaviour { 5 GameObject BattleAngle; 6 Rigidbody rb; 7 float moveSpeed = 1f; 8 float Timer; 9 bool isMoving = false; 10 11 void Start () { 12 BattleAngle = this.transform.GetChild (7).gameObject; 13 rb = GetComponent<Rigidbody> (); 14 Vector3 MoveCmd = BattleAngle.transform.forward; 15 } 16 17 public void OnForward () { 18 BattleAngle.transform.rotation = Quaternion.AngleAxis (0, new Vector3 (0, 1, 0)); 19 isMoving = true; 20 } 21 public void OnRightForward () { 22 BattleAngle.transform.rotation = Quaternion.AngleAxis (60, new Vector3 (0, 1, 0)); 23 isMoving = true; 24 } 25 public void OnLeftForward () { 26 BattleAngle.transform.rotation = Quaternion.AngleAxis (-60, new Vector3 (0, 1, 0)); 27 isMoving = true; 28 } 29 public void OnBack () { 30 BattleAngle.transform.rotation = Quaternion.AngleAxis (180, new Vector3 (0, 1, 0)); 31 isMoving = true; 32 } 33 public void OnRightBack () { 34 BattleAngle.transform.rotation = Quaternion.AngleAxis (120, new Vector3 (0, 1, 0)); 35 isMoving = true; 36 } 37 public void OnLeftBack () { 38 BattleAngle.transform.rotation = Quaternion.AngleAxis (-120, new Vector3 (0, 1, 0)); 39 isMoving = true; 40 } 41 42 void Update () { 43 if (isMoving) { 44 Timer += Time.deltaTime; 45 } 46 47 if (Timer => 3 && isMoving) { 48 rb.velocity = BattleAngle.transform.forward * moveSpeed * Time.deltaTime; 49 }  50 else if (Timer < 3) { 51 isMoving = false; 52 Timer = 0; 53 } 54 } 55}

また、publicになっている関数は、ボタンを押すと呼び出されます。

理想的な処理は、
関数が呼び出される

isMovingがtrueになりTimerに1フレームが足されていく

velocityの値に値を代入されていく

Timerが3を超えたところでisMovingがfalseになり、Timerの値が初期化

Update関数内はどの条件も満たしていないので、他の関数によりisMovingがtrueになるのを待つ。

※まだ動いていないのでrb.velocityの動作確認に関しては未検証です

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

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

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

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

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

y_waiwai

2019/07/16 07:14

どこの行にそのエラーが出てるんでしょう
guest

回答1

0

ベストアンサー

if (Timer => 3 && isMoving) {
この行は
if (Timer >= 3 && isMoving) {
こうですね。

=>はラムダ表記等で使う矢印の意味になってしまうので、「3以上」を示す場合は>=です。

「unity error CS1660: Cannot convert lambda expression to type 'bool' because it is not a delegate type」で検索すると出て来る以下ページと同ケースかと。
Cannot convert 'lambda expression' to non-delegate type 'bool' - Unity Answers

(あとエラー文内に「どのスクリプトのどの行で発生したか」が書いてあると思うので、そこも質問に書いてもらえると解決が早まります)

投稿2019/07/16 07:24

編集2019/07/16 07:26
sakura_hana

総合スコア11427

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

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

退会済みユーザー

退会済みユーザー

2019/07/16 08:09

該当のエラー行も張っておくべきでした... 次からは気をつけます... 無事解決いたしました! ありがとうございました。 y_waiwai さんもありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問