🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
C#

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

Unity3D

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

オブジェクト

オブジェクト指向において、データとメソッドの集合をオブジェクト(Object)と呼びます。

Unity

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

Q&A

解決済

1回答

3106閲覧

Unity 車を動かしたい

Fertyo

総合スコア1

C#

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

Unity3D

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

オブジェクト

オブジェクト指向において、データとメソッドの集合をオブジェクト(Object)と呼びます。

Unity

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

0グッド

0クリップ

投稿2021/03/22 15:58

前提・実現したいこと

Unity初心者です。車を動かすプログラムを作りたくて下記のサイトを参考に車のスクリプトを作っていたのですがどうしても詰んでしまい進まなくなってしまいました。30分くらい見ていたのですが、サイトをみてみるとRigidBodyを取得していないのに使われていたり、宣言していないMaxSpeedが現れたりとよくわからなくなってしまいました。。。誰か助けてくれませんか><

https://monolizm.com/sab/pdf/%E7%AC%AC51%E5%9B%9E_%E3%83%97%E3%83%AC%E3%82%BC%E3%83%B3%E8%B3%87%E6%96%99(%E3%80%9C%E5%88%9D%E5%BF%83%E8%80%85%E5%90%91%E3%81%91%E8%AC%9B%E5%BA%A7%EF%BC%81%E7%B0%A1%E6%98%93%E3%83%AC%E3%83%BC%E3%82%B9%E3%82%B2%E3%83%BC%E3%83%A0%E5%88%B6%E4%BD%9C%E3%81%A7Unity%E3%82%92%E8%A6%9A%E3%81%88%E3%82%88%E3%81%862%E3%80%9C).pdf

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

Assets\Scenes\script\CarMove.cs(16,17): error CS1519: Invalid token '=' in class, struct, or interface member declaration

Assets\Scenes\script\CarMove.cs(16,42): error CS1519: Invalid token '(' in class, struct, or interface member declaration

Assets\Scenes\script\CarMove.cs(16,43): error CS8124: Tuple must contain at least two elements.

Assets\Scenes\script\CarMove.cs(16,44): error CS1519: Invalid token ';' in class, struct, or interface member declaration

該当のソースコード

C#
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class CarMove : MonoBehaviour
{

[SerializeField] float m_accelSpec = 5f; // 加速力 [SerializeField] float m_maxForce = 100f; // 前に進ませる力の上限 float m_force = 0f; // 前に進ませる力 m_rigidBody = GetComponent<Rigidbody>(); [SerializeField] float m_corneringSpec = 5f; // 1秒に切れるハンドル角 [SerializeField] float m_maxCornering = 50f; // 最高ハンドル切れ角 float m_steering = 0; // 現在のハンドル切れ角 bool m_forward = false; bool m_back = false; bool m_left = false; bool m_right = false; ///前進操作 public bool Forward { set{ m_forward = value; } } ///後退操作 public bool Back { set{ m_back = value; } } ///左に曲がる操作 public bool Left { set{ m_left = value; } } ///右に曲がる操作 public bool Right { set{ m_right = value; } } ///ペダル操作 void Pedal() { //アクセル if(m_forward) { m_force += m_accelSpec * Time.deltaTime; } //ブレーキバック else if(m_back) { m_force -= m_accelSpec * Time.deltaTime; } else { m_force = Mathf.Lerp(m_force, 0, 0.2f * Time.deltaTime); } //最高速度キャップ m_force = Mathf.Clamp(m_force, -m_maxSpeed, m_maxSpeed); //前方向に力を加える m_rigidBody.AddForce(transform.forward * m_force * Time.deltaTime, ForceMode.Acceleration); } ///ステアリング操作 void Steering() { if(m_left) { m_steering -= m_corneringSpec * Time.deltaTime; } else if (m_right) { m_steering += m_corneringSpec * Time.deltaTime; } else { m_steering = Mathf.Lerp(m_steering,0,0.1f); } m_steering = Mathf.Clamp(m_steering, -m_maxCornering, m_maxCornering); Vector3 rot = transform.rotation.eulerAngles; rot.y += m_steering; transform.rotation = Quaternion.Euler(rot); } // Start is called before the first frame update void Start() { } // Update is called once per frame void Update() { // ステアリング Steering(); // ペダル操作 Pedal(); // 操作を初期化 m_forward = false; m_back = false; m_left = false; m_right = false; Vector3 targetVector = transform.forward; // 車体の向き float magunitude = m_rigidBody.velocity.magnitude; // 車体にかかっている力の強さ targetVector.y = m_rigidBody.velocity.y / magunitude; // 車体にかかっている下向きの力 // 現在かかっている力を、車体の向いている方向に近づける m_rigidBody.velocity = Vector3.Lerp(m_rigidBody.velocity, targetVector * magunitude, 0.5f * Time.deltaTime); }

}

試したこと

色々見てみましたが何もできず。。。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

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

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

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

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

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

guest

回答1

0

ベストアンサー

エラーメッセージで示されている通りです。
16行目に文法的に成立しない「=」などの文字があるためエラーが発生しており、コードは全く動かない状態です。
C#のclassについて基本的な学習をしてください。

投稿2021/03/22 16:42

ku__ra__ge

総合スコア4524

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

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

Fertyo

2021/03/23 15:08

ちゃんとエラーを確認して調べたら直りました!もっと勉強します!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問