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の動作確認に関しては未検証です
回答1件
あなたの回答
tips
プレビュー