【发布时间】:2020-05-12 11:38:09
【问题描述】:
亲爱的 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),无论手机的像素大小如何,我都可能需要一些帮助。
感谢您的帮助,干杯。
【问题讨论】:
标签: unity3d raycasting