私はUnityの初心者です。最初の試合では、テンプルランのような無限のランナーを作ることにしました。基本的な地形を設定しましたが、プレーヤーを正しく動かすことに問題があります。私のプレイヤーは3Dキューブであり、ゲームが始まるとすぐに前方に移動します。左矢印キーを押して左折し、ターンの方向に移動し続けます。右矢印キーを押すと、右折してターンの方向に移動し続ける。Unity3dのプレイヤーの移動
現在、私はVector3.left
とVector3.right
とtransform.rotate
を使用しています。これは望ましい効果を与えません。たとえば、右矢印キーを押すと、オブジェクトが回転して右回転しますが、右にもう一度右回転すると、オブジェクトだけが回転します(オブジェクトはすでにベクトル方向に移動しています)。
うまくいけば、これは理にかなっています。どんな助けもありがとう。前もって感謝します。 :)
これは私が使用しているコードであり、動作しません。
using UnityEngine;
using System.Collections;
public class NewBehaviourScript : MonoBehaviour
{
public float speed;
private Vector3 dir;
// Use this for initialization
void Start()
{
dir = Vector3.zero;
}
// Update is called once per frame
void Update()
{
if (Input.GetKeyDown(KeyCode.UpArrow))
{
dir = Vector3.forward;
}
if (Input.GetKeyDown(KeyCode.RightArrow))
{
dir = Vector3.right;
transform.Rotate(0, 90, 0);
Quaternion.AngleAxis(90, Vector3.up);
}
if (Input.GetKeyDown(KeyCode.LeftArrow))
{
dir = Vector3.left;
transform.Rotate(0, -90, 0);
Quaternion.AngleAxis(-90, Vector3.up);
}
float amountToMove = speed * Time.deltaTime;
transform.Translate(dir * amountToMove);
}
}