首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从摄像机到世界

从摄像机到世界
EN

Stack Overflow用户
提问于 2022-08-06 12:02:41
回答 2查看 281关注 0票数 1

有人能告诉我我的密码出了什么问题吗?我用GDScript编写了这个函数,然后用C#重写了它。它在GDScript中运行得很好,但我似乎在C#中得到了一本空洞的字典。

我所要做的就是从摄像机里向世界投射一束光线。

GDScript:

代码语言:javascript
复制
func shootRay():
    var space_state = get_world().direct_space_state
    var mouse_position = get_viewport().get_mouse_position()
    rayOrigin = cam.project_ray_origin(mouse_position)
    rayEnd = rayOrigin + cam.project_ray_normal(mouse_position) * 2000
    var intersection = space_state.intersect_ray(rayOrigin, rayEnd)

    if not intersection.empty():
        return intersection

C#:

代码语言:javascript
复制
private Dictionary shootRay(){
    PhysicsDirectSpaceState spaceState = GetWorld().DirectSpaceState;
    Vector2 mouseScreenPos = GetViewport().GetMousePosition();
    _rayOrigin = _camera.ProjectRayOrigin(mouseScreenPos);
    _rayEnd = _rayOrigin + _camera.ProjectLocalRayNormal(mouseScreenPos) * 2000;
    Dictionary intersection = spaceState.IntersectRay(_rayOrigin, _rayEnd);

    return intersection;
}

编辑:当我停留在我的视口的某一特定区域时,它实际上检测到了一个光线投射,即使在这个区域里什么都没有。即使我移动相机,它探测到的区域也保持不变。

编辑:我必须将ProjectLocalRayNormal更改为ProjectRayNormal

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-08-06 12:08:03

--它在GDScript中工作得很好,但我似乎在C#上得到了一本空洞的字典

您可以看到GDScript专门检查空的Dictionary

代码语言:javascript
复制
    if not intersection.empty():
        return intersection

GDScript将在空Dictionary的情况下返回null ( GDScript中的方法没有指定返回类型,因此它返回一个变量,如果没有命中return语句,则为null )。对于C#中的代码来说不是这样。

您可以阅读intersect_ray的文档

如果光线没有交叉任何内容,则返回一个空字典。

它确认了一个空的Dictionary是预期的。

增编:虽然我一开始没有注意到,但在所讨论的代码中,project_ray_normal在GDScript中被翻译成了C#中的ProjectLocalRayNormal。应该是ProjectRayNormal__。

票数 2
EN

Stack Overflow用户

发布于 2022-08-06 12:34:31

我不得不改变

_rayEnd = _rayOrigin + _camera.ProjectLocalRayNormal(mouseScreenPos) * 2000;

_rayEnd = _rayOrigin + _camera.ProjectRayNormal(mouseScreenPos) * 2000;

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73259570

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档