Unity3d 在投射之前从摄影机偏移光线

Unity3d 在投射之前从摄影机偏移光线,unity3d,raycasting,Unity3d,Raycasting,亲爱的Unity游戏开发者您好 今天我有一个看似简单的问题,但我很难解决它。为了解释我想要达到的目标,我做了一个简单的说明 我目前正在开发一个简单的手机游戏,使用拖放系统;然而,正如你可以猜到的,当人们触摸屏幕时,手指通常会挡住触摸位置的视图,因此我用一点偏移来实例化对象。现在我有了这个简单的代码,它可以很好地实现我想要的 Ray ray = camera.ScreenPointToRay(Input.mousePosition) if(Physics.Raycast(ray, out h

亲爱的Unity游戏开发者您好

今天我有一个看似简单的问题,但我很难解决它。为了解释我想要达到的目标,我做了一个简单的说明

我目前正在开发一个简单的手机游戏,使用拖放系统;然而,正如你可以猜到的,当人们触摸屏幕时,手指通常会挡住触摸位置的视图,因此我用一点偏移来实例化对象。现在我有了这个简单的代码,它可以很好地实现我想要的

 Ray ray = camera.ScreenPointToRay(Input.mousePosition)
 if(Physics.Raycast(ray, out hit, someDistance))
 {
       Instantiate(prefab, hit.point + MyOffsetVector3, Quaternion.identity)
 }
但是,这个系统有一些缺陷,比如命中位置与繁殖位置不同,这会阻止你做某些事情,比如避免物体。因此,在我从使用pixel Coordination Input.MousePosition的摄影机屏幕点返回光线之前,我希望像图中那样对其进行偏移,以便我可以获得偏移的实例化位置,即光线投射的实际命中点,我可以检查一些条件。简单地说,我希望unity表现得像我在屏幕上触摸到的比现在更高

如果你们中的任何人知道如何偏移一个像素坐标,不管手机的像素大小如何,这个像素坐标在世界坐标中等于(0,0,2),我可能需要一些帮助


谢谢您的帮助,干杯。

您可以将屏幕点偏移*0.1f(任何数字都适用)。 您将被屏幕高度的百分比所抵消。

试试看

Vector3 offset=camera.transform.up*0.1//向上偏移某个值
光线=摄影机.屏幕指针方向盘(输入.鼠标位置)
ray.origin+=偏移//将偏移添加到光线起点
如果(物理.光线投射(光线,命中率,一定距离))
{
实例化(预置,hit.point+MyOffsetVector3,四元数.identity)
}

它需要一些调整,谢谢,我不知道我可以更改光线的原点。