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。