首页 > 解决方案 > 如何制作一款MOBA游戏控件?

问题描述

我想像在 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 我将鼠标悬停在红点上并单击。我需要我点击的世界中的确切红衣主教。这些坐标旁边有一堵墙

标签: gdscript

解决方案


如果您想从相机向用户指向的位置进行光线投射,请使用以下命令:

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


推荐阅读