屏幕2D的鼠标坐标( x , y , 0 )转换成鼠标在那一点时的空间坐标

先把你的人物的Transform放入 character
var character : Transform;
创建一个相机
var mainCamera : Camera;  

然后做一个平面
var playerMovementPlane : Plane;  

function Awake () {    
然后把mainCamera设为主相机
mainCamera = Camera.main;

然后把NEW出这个平面并且把这个平面放到角色上  
playerMovementPlane = new Plane (character.up, character.position);
}
function Update () {  
宣告屏幕2D的鼠标点
var cursorScreenPosition : Vector3 = Input.mousePosition; 

宣告空间中的鼠标点,这里要进行一些转换就可以得到了  mainCamera是你的主相机
var cursorWorldPosition : Vector3 = ScreenPointToWorldPointOnPlane (cursorScreenPosition, playerMovementPlane, mainCamera);
}

public static function ScreenPointToWorldPointOnPlane (screenPoint : Vector3, plane : Plane, camera : Camera) : Vector3 {  
    //将鼠标的屏幕位置转换成空间中的射线 ray = 射线
    var ray : Ray = camera.ScreenPointToRay (screenPoint);  
    // 找出射线与平面相交
    return PlaneRayIntersection (plane, ray);
}
public static function PlaneRayIntersection (plane : Plane, ray : Ray) : Vector3 {  
    var dist : float;  
    //光线投射 一条射线和平面相交。
    plane.Raycast (ray, dist);  
    //获取点 返回沿着射线在distance距离单位的点。
    return ray.GetPoint (dist);  

posted @ 2012-03-13 15:58  渡蓝  阅读(394)  评论(0)    收藏  举报