如何将3d世界快速播放到屏幕(unity3d)

如何将3d世界快速播放到屏幕(unity3d),unity3d,unity5,Unity3d,Unity5,在我的拍摄方法中,我通过精确的屏幕中部获得光线投射,效果很好,但现在为了更合适,我想将其在世界中更改为屏幕(以及交叉头发之间,而不是从屏幕中部)。但我没有得到任何指示。提前谢谢你的帮助。下面是我的屏幕到世界的代码 public void Shoot () { //bullet_target var layerMask = (1 << 8); layerMask = ~layerMask; Vector3 bullet_target = Vector3

在我的拍摄方法中,我通过精确的屏幕中部获得光线投射,效果很好,但现在为了更合适,我想将其在世界中更改为屏幕(以及交叉头发之间,而不是从屏幕中部)。但我没有得到任何指示。提前谢谢你的帮助。下面是我的屏幕到世界的代码

public void  Shoot ()
{
    //bullet_target
    var layerMask = (1 << 8);
    layerMask = ~layerMask;
    Vector3 bullet_target = Vector3.zero;
    Ray ray = Camera.main.ScreenPointToRay( new Vector3(screen_width_mid, screen_height_mid, 0) );
    RaycastHit hit;
    GameObject hit_game_object;
    Transform hit_transform;
    if (Physics.Raycast (ray.origin, ray.direction * 1000 ,out hit, 1500.0f , layerMask) ) 
        {
            bullet_target = hit.point;
            hit_game_object = hit.transform.gameObject;
            hit_transform = hit.transform;
        }else
        {
            hit_game_object = null; 
        }
        if(hit_game_object!=null)
            {               
                if( hit_game_object.tag=="head" )
                    {
                        //blah blah do any stuf
                    }
            }
        }
}
public-void-shot()
{
//子弹头

var layerMask=(1如果您想获取对象在屏幕空间中的位置,只需使用Camera.WorldToScreenPoint()

我假设你已经有了一个十字线游戏对象,它正在跟随你的鼠标,并且可能被限制在离你的弓箭手一定距离的地方


世界到银幕?这是怎么回事?摄像机。世界到屏幕点你能解释一下你的拍摄是如何工作的吗?你想从世界到银幕拍摄吗?有什么意义?我想知道十字线中间在世界的哪个点上,得到那个点,然后在那个点上做一些事情..为了更精确地制作射箭游戏,为了这个目的rpose需要精确的点击光线投射点并进行填充Vector3 worldPos=crosshair.position;Vector3 screenPos=Camera.main.WorldToScreenPoint(worldPos);var layerMask=(1 Vector3 screenPos=Camera.main.WorldToScreenPoint(worldPos);应该是Vector3 screenPos=Camera.main.worldPos;和Camera.main.screenpointroay(screenpos);应该是Camera.main.screenpointoray(screenpos);键入错误..这不是实际问题..它给出一些-1360,-262,-430..位置不正确..它的播放器侧位置很晚才接受答案,但非常感谢。完美的解决方案:-)
Transform crosshair;

Vector3 GetCrosshairScreenPos()
{
    if(crosshair)
    {
        Vector3 worldPos = crosshair.position;
        Vector3 screenPos = Camera.main.WorldToScreenPoint(crosshair.position);
        return screenPos;
    }
}