亲爱的Unity游戏开发者们,
今天我有一个问题,看起来很简单,但我花了很长时间才解决。为了说明我想要实现什么,我制作了一个简单的插图。
我正在开发一个使用拖放系统的简单移动游戏;然而,正如你所想象的那样,当人们触摸屏幕时,手指通常会挡住触摸位置的视野,因此我使用一些偏移量实例化物体。现在我有这个简单的代码,可以很好地实现我想要的效果。
Ray ray = camera.ScreenPointToRay(Input.mousePosition)
if(Physics.Raycast(ray, out hit, someDistance))
{
Instantiate(prefab, hit.point + MyOffsetVector3, Quaternion.identity)
}
然而,该系统存在缺陷,如被击中位置与生成位置不同,这会阻止您执行某些操作,例如物体避免。因此,在从相机的屏幕点返回射线之前(该射线使用像素坐标Input.MousePosition),我想要进行偏移,就像插图中那样,这样我就可以实现一个偏移后的实例化位置,这是射线投射的实际hit.point,我可以对其进行一些条件检查。简单来说,我希望Unity的行为就像我当前在屏幕上触摸了更高的位置。
如果您知道如何对像素坐标进行偏移,例如在世界坐标中等效于(0,0,2),而不考虑手机的像素大小,则可能需要一些帮助。
感谢您的帮助,祝好。