gpt4 book ai didi

unity3d - 转换前从相机偏移射线

转载 作者:行者123 更新时间:2023-12-04 04:10:56 26 4
gpt4 key购买 nike

亲爱的 Unity 游戏开发者,您好

今天我有一个看似简单但我很难解决的问题。为了解释我想要实现的目标,我做了一个简单的插图。

ray offset illust

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

 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) 的像素坐标,而不管手机的像素大小如何,我可能会需要一些帮助。

感谢您的帮助,干杯。

最佳答案

尝试

    Vector3 offset = camera.transform.up * 0.1 //offset upwards by some value
Ray ray = camera.ScreenPointToRay(Input.mousePosition)
ray.origin += offset //add offset to ray start
if(Physics.Raycast(ray, out hit, someDistance))
{
Instantiate(prefab, hit.point + MyOffsetVector3, Quaternion.identity)
}

关于unity3d - 转换前从相机偏移射线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61750754/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com