お詫び
この記事は前後編の予定でしたが、文量や時間の都合で3~4編構成に分割させていただきます。ご了承下さい。
この記事ではChatGPTに前回書いてもらったコードの不具合をChatGPT自身に修正してもらいます。
前回
FirstPersonControllerの修正
まず、ファーストパーソンでプレイヤーが動くようにします。
前回作ってもらったFirstPersonController
をプレイヤーのゲームオブジェクトにアタッチして早速動かしてみます。
カメラが回ってしまいました。
これはFirstPersonController
内でカメラがx軸周りにも回転するような処理を行っているのに、回転処理とプレイヤーの移動処理を同一オブジェクトに対して行ってしまっているためです。
using UnityEngine;
public class FirstPersonController : MonoBehaviour
{
// 省略
void Start()
{
// Rigidbody コンポーネントをキャッシュしておく
// ここで自分のRigidbodyを取得している
playerRigidbody = GetComponent<Rigidbody>();
}
void Update()
{
// 省略
// マウスの移動量を元に、カメラの Transform を更新する
// 自分のtransformを更新
transform.Rotate(-mouseMovement.y, mouseMovement.x, 0.0f);
}
void FixedUpdate()
{
// 省略
// 自分のRigidbodyを更新
playerRigidbody.AddForce(movement * speed);
}
}
一旦スクリプトの責務を分けるため、ChatGPTにプレイヤーの移動スクリプトとカメラを動かすスクリプトを分割してもらいましょう。
答えが返ってきました。
言われたとおりに修正します。
カメラとプレイヤーを別々に動かすことができるようになりました。
ただ、カメラの向きとは関係なくワールドのz軸方向にプレイヤーの前方が向いてしまっているので操作しづらいのと、カメラが斜めに傾くので画面が見づらいですね。
これもChatGPTは直してくれるでしょうか?
簡単に直してくれました。
動かしてみます。
ちゃんと動くようになりました。