我需要从我的玩家角色到我的相机光线投射的命中对象进行光线投射,但是我无法使我的代码正常工作,它似乎总是偏移.
void Update () {
RaycastHit hit;
Ray playeraim = playerCamera.GetComponent < Camera > ().ScreenPointToRay(new Vector3(Screen.width / 2, Screen.height / 2 ));
Physics.Raycast(playeraim, out hit);
Debug.DrawRay(playeraim.origin, playeraim.direction * hit.distance, Color.green);
if (Physics.Raycast(playeraim, out hit)){
// something was hit
RaycastHit playerHit;
Physics.Raycast(transform.position, hit.transform.position, out playerHit);
Debug.DrawRay(transform.position, playerHit.transform.position, Color.red);
Debug.Log ("distance from camera: "+ hit.distance);
Debug.Log ("distance from player: "+ playerHit.distance);
}
}
http://i.stack.imgur.com/HzdVU.jpg
我以为Debug.DrawRay(transform.position,playerHit.transform.position,Color.red);应该从我的播放器到摄像机命中点的绿线之间画一条红线,而不是射入地面.
解决方法:
将Debug.DrawRay更改为Debug.DrawLine!
Debug.DrawRay需要将Vector3作为原点,将Vector3作为方向,而不是第二个“目标”位置.
这是我的解决方案!
void FixedUpdate() {
RaycastHit cameraHit;
Ray cameraaim = playerCamera.GetComponent < Camera > ().ScreenPointToRay(new Vector3(Screen.width / 2, Screen.height / 2 ));
Physics.Raycast(cameraaim, out cameraHit, 100f);
Debug.DrawLine(cameraaim.origin, cameraHit.point, Color.green);
Vector3 cameraHitPoint = cameraHit.point;
float cameradistance = cameraHit.distance;
if (Physics.Raycast(cameraaim, out cameraHit)){
// something was hit
RaycastHit playerHit;
Physics.Raycast(transform.position + new Vector3 (0f, 1.8f, 0f), cameraHitPoint-transform.position - new Vector3 (0f, 1.8f, 0f), out playerHit, 100f);
Debug.DrawRay(transform.position + new Vector3 (0f, 1.8f, 0f), cameraHitPoint-transform.position - new Vector3 (0f, 1.8f, 0f), Color.red);
float playerdistance = playerHit.distance;
Debug.Log ("distance from player: "+ playerdistance);
Debug.Log ("distance from camera: "+ cameradistance);
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。