Unity3D:角色拾取技术

工程包下载:Unity3D虚拟现实开发之角色拾取

//这个是成品图

角色拾取的原理是:由摄像机与屏幕上鼠标点击的位置确定一条射线,由此射线射向3D世界,最先和此射线相交的物体就是被选中的物体,然后对该物体的操控编写对应的代码即可。具体代码如下:

#鼠标控制
#pragma strict

var flag : boolean=true ;//通过初始化flag赋给物体初始坐标
function Start(){
}
function Update () {
	 if (Input.GetMouseButton (0)) {    

		//声明一条由鼠标位置发出垂直于屏幕的射线
     	var ray = Camera.main.ScreenPointToRay (Input.mousePosition);    
         	var hit : RaycastHit;		
		if (Physics.Raycast (ray, hit)){		//判断此物理事件
            if(hit.transform.root.transform==this.transform) {	
            	flag=!flag;	
    } } } 
    if(flag){
		this.transform.position=Vector3(0,0,2);
	}
	else if(!flag){
		this.transform.position=Vector3(2,0,2);
	}
}

下面是相关的说明:

1.关于Physics.Raycast:

根据Unity圣典的解释:

Returns

bool - True when the ray intersects any collider, otherwise false.

当光线投射与任何碰撞器交叉时为真,否则为假。

Description描述

Casts a ray against all colliders in the scene.

在场景中投下可与所有碰撞器碰撞的一条光线。

因此,这里要求角色必须是或者添加了碰撞器,否则

if (Physics.Raycast (ray, hit)){        //判断此物理事件
            if(hit.transform.root.transform==this.transform) {    
                flag=!flag;    


这个语句不会按照预期执行,flag不会发生改变。

2.调整主摄影机的属性,使视野显示需要操作的角色。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值