gdscript - 如何制作一款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 我将鼠标悬停在红点上并单击。我需要我点击的世界中的确切红衣主教。这些坐标旁边有一堵墙
解决方案
如果您想从相机向用户指向的位置进行光线投射,请使用以下命令:
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
。
推荐阅读
- jqgrid - JqGrid DateTime 格式不保存
- python - 如何在 Python 中读取和写入文本文件的多行
- javascript - 如何使 render_field 提交按钮触发弹出框?
- architecture - onuon 架构中常见的第三方库,例如 Money
- javascript - babel-plugin-angularjs-annotate 仅使用 AngularJS ^1.8.0 和 Webpack 中断一次服务注入
- angular - 角路由器子剂量渲染
- javascript - 为什么我的错误没有被捕获和处理?
- angular - 如何将此代码转换为使用异步?
- reactjs - package.json 依赖项中的打字稿
- android - 如何在我的屏幕指针中添加动画?