【发布时间】:2014-11-11 06:30:36
【问题描述】:
我正在尝试使用 Raycast 使我的对象旋转并朝那个方向移动。但是,当我的对象旋转时,它不会移动到新的方向。相反,它只是朝着它一直在移动的方向移动。知道为什么它不改变方向吗? 公共类 ControlCar : MonoBehaviour {
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);
}
}
我的整个项目可以在这里看到:https://www.dropbox.com/sh/d7yxhjg5humw3vo/AAD5IfBW8slRw8-AT072DsWea?dl=0
提前致谢!
【问题讨论】:
-
RotateSpeed 和 FrontRay 设置为多少?
-
FrontRay = 3;旋转速度 = 10;
标签: unity3d