Unity3D对象在旋转时不移动

Unity3D对象在旋转时不移动,unity3d,Unity3d,我尝试使用光线投射使对象旋转并朝那个方向移动。但是,当对象旋转时,它不会向新方向移动。相反,它只是沿着它一直在移动的方向移动。你知道为什么它不会改变方向吗? 公共类控制车:单一行为{ CharacterController controller; public int Speed; public int Raydir; public int RotateSpeed; public int FrontRay; public int RayDist; // Use this for initial

我尝试使用光线投射使对象旋转并朝那个方向移动。但是,当对象旋转时,它不会向新方向移动。相反,它只是沿着它一直在移动的方向移动。你知道为什么它不会改变方向吗? 公共类控制车:单一行为{

CharacterController controller;
public int Speed;
public int Raydir;
public int RotateSpeed;
public int FrontRay;
public int RayDist;

// Use this for initialization
void Start () {
    controller = GetComponent<CharacterController>();

    RayDist = 4;
    FrontRay = 3;
    RotateSpeed = 10;
}

// Update is called once per frame
void Update () {
    Move ();
    HandleRay ();

}

void Move(){
        transform.position += Vector3.forward * Speed * Time.deltaTime;

    }

void HandleRay(){
    //Front Ray
    Vector3 Front = transform.TransformDirection(0,0,1) * FrontRay;
    if (Physics.Raycast (transform.position, Front, 10)) {
        Debug.Log ("Front hit!");
            }

    //Front right
    Vector3 FrontR = transform.TransformDirection(1,0,1) * RayDist;
    if (Physics.Raycast (transform.position, FrontR, 10)) {
        Debug.Log ("Right hit!");
        transform.Rotate(new Vector3(0,-RotateSpeed * Time.deltaTime,0));

    }

    //Front Left
    Vector3 FrontL = transform.TransformDirection(-1,0,1) * RayDist;
    if (Physics.Raycast (transform.position, FrontL, 10)) {
        Debug.Log ("Left hit!");
        transform.Rotate(new Vector3(0,RotateSpeed * Time.deltaTime,0));
    }




    //DebugRay
    Debug.DrawRay(transform.position, FrontL, Color.green);
    Debug.DrawRay(transform.position, FrontR, Color.red);
    Debug.DrawRay(transform.position, Front, Color.blue);
    }
}
我的整个项目可以在这里看到:


提前感谢!

试着交换这两个

  void Update () 
  {
       HandleRay ();
       Move ();
  }

然后,向前应用时,移动应朝向正确的方向。

Vector3.forward始终返回等效的:new Vector30,0,1。它实际上与变换的旋转无关


Vector3.forward始终是北的,Vector3.back始终是南的,Vector3.right始终是东的,Vector3.left始终是西的,Vector3.up始终是上的,Vector3.down始终是下的,Vector3.one在一次调用中是右的,向上的,向前的。Vector3.zero本质上是:新的Vector30,0,0。

旋转速度和FrontRay设置为多少?FrontRay=3;RotateSpeed=10;请注意,transform也有类似的命名属性,用于将局部方向与全局spacetransform.position+=transform.forward*Speed*Time.deltaTime关联;现在可以工作了,感谢您的帮助!我甚至不知道transform.forward属性,所以这对我来说是新闻。干杯,Aravol。