实现一个简单的Unity3D三维拾取——3D Picking (1)

本文介绍了如何在Unity3D中实现3D拾取(3D Picking),通过从相机发射射线并检测与物体的碰撞来完成。文章详细讲解了使用Input、Camera.ScreenPointToRay、Physics.Raycast等API的过程,并通过实例展示了如何设置Layer和LayerMask以区分不同的碰撞对象。最终,通过代码示例展示了当射线击中Sphere和Plane时的不同反馈效果。
摘要由CSDN通过智能技术生成

3D Picking 原理就是从相机位置向空间中发射一条射线,根据射线击中的物体来进行拾取。

 

这里我们使用触摸屏触摸来进行拾取,鼠标的拾取原理一样,只不过选用的API不同。


unity3D官网Manual里找到以下Input内容:

http://docs.unity3d.com/Documentation/Manual/Input.html

其中有段例子程序:

Following is an example script which will shoot a ray whenever the user taps on the screen:

var particle : GameObject;
function Update () {
    for (var touch : Touch in Input.touches) {
        if (touch.phase == TouchPhase.Began) {
            // Construct a ray from the current touch coordinates
            var ray = Camera.main.ScreenPointToRay (touch.position);
            if (Physics.Raycast (ray)) {
                // Create a particle if hit
                Instantiate (particle, transform.position, transform.rotation);
            }
        }
  }
}

var ray = Camera.main.ScreenPointToRay (touch.position);
            if (Physics.Raycast (ray))
这两句代码是关键代码,我们从这里入手。

查找ScreenPointToRay文档:

http://docs.unity3d.com/Documentation/ScriptReference/Camera.ScreenPointToRay.html

节选文档中主要描述和一段例子

Ray ScreenPointToRay(

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值