如何制作一个MOBA游戏控件?

How to make a MOBA game control?

我想像在 Dota 中一样进行控制。在那里,当你点击任何地形时,角色需要去的地方会出现一个点。如何制作这个系统?我正在尝试用射线来做这个,但找不到结束位置:

var space_state = get_world().direct_space_state
if Input.is_action_pressed("LefftClick"):
        _to_ray_cast = translation
        _to_ray_cast.y -= 15
        ray_cast = space_state.intersect_ray(
            translation, _to_ray_cast)
        print(ray_cast)

怎么做?屏幕尺寸可能会改变

例子。 https://i.ibb.co/SdMJ5vW/2021-05-19-21-23.png 我将鼠标悬停在红点上并单击。我需要我点击的世界中的确切红衣主教。这些坐标旁边有一堵墙

如果你想从相机到用户指向的地方进行光线投射,使用这些:

var ray_length = 100 # some large number
var mouse_pos = get_viewport().get_mouse_position()
var from = camera.project_ray_origin(mouse_pos)
var to = camera.project_ray_normal(mouse_pos).normalized() * ray_length

当前相机所在位置Camera.

那么fromto就是intersect_ray的参数。