1、ray与raycasthit的概念?
ray是一个射线,有起点与终点,但是一般在碰撞检测中这两点并不决定射线长度。一般在raycast中用distance来表示射线的终点长度。
physics.raycast是一个用来的进行射线碰撞检测的函数。
raycasthit是一个用来装射线碰撞到的物体的集合。
2、如何计算鼠标点中了什么物体,或者屏幕正中的射线击中了什么物体?
void Update ()
{
RaycastHit hits1;
//Ray ray1=new Ray(transform.position,transform.forward);
//上面这句只有放在main camera时是正确的,不能放在first controler里作为脚本,否则,first controler是无法上下转动的,只有camera才能上下转动。
//Ray ray1 = Camera.main.ScreenPointToRay(Input.mousePosition);
//上面这句可以检测屏幕中心到鼠标位置的射线
Ray ray1 =new Ray(GameObject.Find("Main Camera").transform.position,GameObject.Find("Main Camera").transform.forward);
//上面这句,检测摄象机中心点发射的射线。
if(Input.GetMouseButton(0)&&Physics.Raycast(ray1,out hits1,1000.0f))
{
if(hits1.collider.rigidbody)
{
hits1.collider.rigidbody.AddForce(0,1000,0);
//Debug.Log(hits1.collider.gameObject.name);
}
}
}