如何制作一个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
.
那么from
和to
就是intersect_ray
的参数。
我想像在 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
.
那么from
和to
就是intersect_ray
的参数。