前提・実現したいこと
Unity初心者です。車を動かすプログラムを作りたくて下記のサイトを参考に車のスクリプトを作っていたのですがどうしても詰んでしまい進まなくなってしまいました。30分くらい見ていたのですが、サイトをみてみるとRigidBodyを取得していないのに使われていたり、宣言していないMaxSpeedが現れたりとよくわからなくなってしまいました。。。誰か助けてくれませんか><
発生している問題・エラーメッセージ
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/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/03/23 15:08