工程包下载: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.调整主摄影机的属性,使视野显示需要操作的角色。