0
私はユニティで3Dゲームを作成しています。マウスを使って見ることができるスクリプトがあります。見ている方向にプレーヤーを移動するために、私はtransform.forwardを使用しています。私の問題は、天井を見て「W」(前進)を押すと、彼らは空気の中に浮上し始めるということです。基本的には、x軸とz軸だけを動かすことができるtransform.forward
のメソッドまたはサブメソッドがあるかどうかを知る必要があります。ユニティでのY軸の動きを防ぐ `transform.forward`
if (transform.rotation.x < -10)
{
//do no forward or backward movement
Debug.Log("Rotation too great to forward move...");
tooGoodForMovement = true;
}
else
{
tooGoodForMovement = false;
if (Input.GetKey(KeyCode.W))
{
//Forward
player.velocity = (transform.FindChild("Main Camera").transform.forward * moveSpeed);
}
if (Input.GetKey(KeyCode.S))
{
//Back
player.velocity = (-transform.FindChild("Main Camera").transform.forward * moveSpeed);
}
}
if (Input.GetKey(KeyCode.A))
{
//Left
player.velocity = -transform.FindChild("Main Camera").transform.right * moveSpeed;
}
if (Input.GetKey(KeyCode.D))
{
//Right
player.velocity = transform.FindChild("Main Camera").transform.right * moveSpeed;
}
これはokです。毎回行われた 'FindChild(" Main Camera ")'の修正を加えてください。それをキャッチすると良いでしょう。 – Programmer
これは機能しました。ありがとうございました!私はそれを早期に考えていたはずです。また@Programmer、 'FindChild(" Main Camera ")'を修正するとどういう意味ですか? –
@ Sub6Resources更新された回答を確認してください。 'FindChild'を使うのはずっとコストがかかります。トランスフォームをキャッシュします。 – Programmer