
レッスン 1.4 - ドライバーのシートにステップイン
Tutorial
Beginner
+0XP
50 mins
(315)
Unity Technologies

概要:
このレッスンでは、道路に出て車両を制御する必要があります。そのためには、プレイヤーが矢印キーを押していることを検出し、その入力に基づいて車両を加速および回転させる必要があります。新しいメソッド、ベクトル、および変数を使用して、車が前方または後方に移動したり、左右に曲がれるようにします。
プロジェクトの成果:
プレイヤーが上下の矢印キーを押すと、車両は前後に移動します。また、プレイヤーが左右の矢印キーを押すと、車両が回転します。
Languages available:
1. 導入
2. 車両を左右に動かせるようにする
これまで、車両は道路に沿ってまっすぐ進むことしかできませんでした。障害物を回避するために、左右に移動できるようにする必要があります。
- PlayerController.cs の先頭に、public float turnSpeed; を追加します。
- Update() で、transform.Translate(Vector3.right * Time.deltaTime * turnSpeed); を追加します。
- ゲームを実行します。turnSpeed 変数のスライダーを動かすと、車が左右に移動します。
3. 入力に基づいて左右に動かす
現在、インスペクターでしか車の左右の動きを制御できません。プレイヤーの能力を拡張して、プレイヤーが自分でその動きを制御できるようにする必要があります。
- PlayerController.cs で、新しく public float horizontalInput; 変数を追加します。
- Update() で horizontalInput = Input.GetAxis("Horizontal"); と代入を行い、テストしてインスペクターで確認します。
- 車をコントロールできるように、車を左右に動かす Translate メソッドに horizontalInput 変数を追加します。
- インスペクターで、turnSpeed を設定し、speed 変数を変更して、微調整します。
4. 車の速度をコントロールする
プレイヤーがハンドルを制御できるようになったので、アクセルペダルとブレーキも制御できるようにしましょう。
- 新しく public forwardInput 変数を宣言します。
- Update() で、forwardInput = Input.GetAxis("Vertical"); と代入を行います。
- forwardInput 変数を車を前方向に動かす Translate メソッドに追加して、テストします。
5. 車をスライドさせるのではなく、回転させる
いま、車は少し奇妙な動きをしています...回転するのではなく、左へ右へとスライドしながら走っています。実車のように車両を回転させましょう。
- Update() で、transform.Rotate(Vector3.up, horizontalInput); を呼び出し、テストします。
- 車を左右に移動するコードの行を削除して、テストします。
- その行に「* turnSpeed * Time.deltaTime」を追加し、テストします。
6. コードと Hierarchy をきれいにする
このレッスンでは、新しいものをたくさん追加しました。先に進み、より専門的なことを学ぶ前に、スクリプトと Hierarchy をきれいにして、スクリプトを整理しておきましょう。
- Hierarchy 内で右クリックして Create Empty を選択し、「Obstacles」と名前を変更して、すべての障害物をドラッグします。
- PlayerController で変数の値を初期化し、すべての変数を private にします(player 変数を除く)。
- 「//」を使って、コードの各セクションにコメントを追加します。
7. レッスンのまとめ
新しい機能
- プレイヤーが上下の矢印キーを押すと、車両が前後に移動する
- プレイヤーが左右の矢印キーを押すと、車両が回転する
新しい概念とスキル
- 空のオブジェクト
- ユーザー入力の取得
- Translate と Rotate