unity3D拾取物体
今天虚拟现实课程实验中需要用到使用物理射线来实现拾取物体的操作,借由老师的代码修改并从自己的角度理解和梳理;
没有过于深入的逻辑和方法,大家只要把每一行注释的内容理解了就好,每行注释我都根据老师加入自己的一些理解来表达。其中包含了几个自己对于射线方面的方法理解和学习。
下面展示一些 内联代码片
。
public class shiqu : MonoBehaviour {
public float smooth = 3f;//拾取移动的速度参数
Transform currentObject;//射线实现的需要拾取的物体
Vector3 mouse3DPosition;//鼠标光标的位置(射线的一个重要参数)
public GameObject terrian;//为避免拾取中点击地板而造成混乱(这里只有一个地板
//所以单独设置了物体,如果不想拾取的物体较多建议使用tag标签来识别)
// Use this for initialization
// Update is called once per frame
void Update () {
if (Input.GetMouseButton(0))
{
Ray rays = Camera.main.ScreenPointToRay(Input.mousePosition);//从鼠标光标为起点创建一个射出的射线
Debug.DrawRay(rays.origin, rays.direction , Color.blue,1);//这个方法我们如果不加最后一个参数的话是没有任何视觉效果的,
//因为第四个参数(duration)是画出拾取物体和摄像机机位的距离射线的持续时间,如果不加的话默认是0相当于不显示这里稍微解释一下
RaycastHit hit;//创建变量存储射线反馈信息
if(Physics.Raycast(rays,out hit))