Godot中鼠标点击3D对象
Godot中鼠标点击3D对象
方法一:调用RigidBody3D中的input_event事件
RigidBody3D中有信号input_event可以接受鼠标的输入,用这个信号可以处理点击事件。
具体用法如下:
- 新建一个demo场景
- 连接上信号input_event
- 代码如下:判断是否有鼠标点击事件即可。
public void _on_rigid_body_3d_input_event(Camera3D camera, InputEvent inputevent, Vector3 postion, Vector3 normal, int shape_idx)
{
if(inputevent is InputEventMouseButton)
{
if((inputevent as InputEventMouseButton).IsPressed())
{
GD.Print("Click Ball");
}
}
}
方法二:调用PhysicsRayQuery
从camera到鼠标点击的位置发射一条射线,检查与哪些对像有碰撞,既获得相应的对像并处理相关的事件。
public override void _PhysicsProcess(double delta)
{
base._PhysicsProcess(delta); var mousepostion = GetViewport().GetMousePosition(); # 相机发射射线的开始点与结束点
var rayOrigin = c3d.ProjectRayOrigin(mousepostion);
var rayEnd = c3d.ProjectRayNormal(mousepostion)*100000; # 检查有哪些碰撞
var query = PhysicsRayQueryParameters3D.Create(rayOrigin, rayEnd);
var spaceState = GetWorld3D().DirectSpaceState;
# 在这里可以可以找到碰撞点
var results = spaceState.IntersectRay(query); if(results.Count>0)
{
# 可以找到碰撞对像并进行操作
var mi3 = GetNode<MeshInstance3D>("RigidBody3D/MeshInstance3D");
var material = mi3.GetActiveMaterial(0);
material.Set("albedo_color",new Color(255,0,0));
}
else
{
var mi3 = GetNode<MeshInstance3D>("RigidBody3D/MeshInstance3D");
var material = mi3.GetActiveMaterial(0);
material.Set("albedo_color",new Color(0,255,0));
}
}
Godot中鼠标点击3D对象的更多相关文章
- 鼠标点击input时,placeholder中的提示信息消失
html代码: <input type="text" placeholder="多个关键词空格隔开"> 鼠标点击input时,placeholder ...
- 使用JS或jQuery模拟鼠标点击a标签事件代码
原文 使用JS或jQuery模拟鼠标点击a标签事件代码 这篇文章主要介绍了使用JS或jQuery模拟鼠标点击a标签事件代码,需要的朋友可以参考下 <a id="alink" ...
- (转载)Unity UGUI鼠标点击UI不受影响方法IsPointerOverGameObject
这几天在做捕鱼达人游戏时发现,当鼠标点击UI时,炮台的子弹也会发射子弹,这样会影响用户体验. 然后网上百度了一波,发现在UGUI系统上,EventSystem提供了一些方法.那就是EventSyste ...
- Teamviewer 远程控制时 无法正常操作鼠标点击
其中一种可能: 本机开启了360的64位Intel-VT核晶防护后,用Teamviewer远程到本机,远程电脑无法操作本机的鼠标点击(左右键都不行),查看日志显示拦截了模拟按键.关闭核晶防护就可以正常 ...
- 当鼠标点击input框时,想让全选input框的所有内容只需要加“onfocus="this.select();”就可以了
当鼠标点击input框时,想让全选input框的所有内容只需要加“onfocus="this.select();”就可以了
- 鼠标点击input框后里面的内容就消失
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- unity3d中gameObject捕获鼠标点击
gameObject需加上Colider 一.在update中(推荐) void Update () { //左键 )) disFlag = true; //右键 )) disFlag = true; ...
- 使用JS或jQuery模拟鼠标点击a标签事件
<a id="alink" href="abc.aspx" style="visibility: hidden;">下一步&l ...
- 【PyQt5-Qt Designer】添加图片+鼠标点击
添加图片+鼠标点击 graphicsView中添加图片 效果图 添加之后左边1处 生成qrc文件 选择文件右键编译-生成图片的16进制文件 课后作业:
- 使用jQuery模拟鼠标点击a标签事件
来源于:https://mo2g.com/view/42/ <html> <head> <meta charset="UTF-8"> <t ...
随机推荐
- 为何 WPF 对 vcruntime140 有引用
通过阅读 WPF 官方开源仓库的代码和文档,可以了解到在进行独立发布的时候会在仓库里面带上 vcruntime140 的原因 在独立发布的时候,可以在仓库里面找到 vcruntime140.dll 这 ...
- kafka connect gui 可视化管理工具
kafka connect gui 可视化管理工具 官网地址:http://www.redisant.cn/ka 连接到 Kafka Connect 支持各种认证方式,支持 SSL/TLS 安全连接 ...
- 将Go开发的代码部署到k8s集群
一.在服务器上编译go程序 1.1 编译go语言程序 # 安装go yum install go -y mkdir /root/test && cd /root/test # 设置代理 ...
- 开启 ssh 服务
开启 ssh 服务 vim /etc/ssh/sshd_config 重启 ssh 服务:/etc/init.d/ssh restart 设置服务自启动:update-rc.d ssh enable
- iPad 远程控制 Mac 电脑远程办公的终极解决方案
作为安全技术人员来说,用 iPad 远程控制 Mac 电脑,在我看来是一件很酷的事情! 首先吐槽一下自己为什么会有这个奇怪的想法,原因是因为,目前我有一个16寸的mac,我每天下班的第一个动作就是先把 ...
- 我的书《Unity3D动作游戏开发实战》出版了
首先感谢帮助和参与前期检阅的朋友们.本书是我经验积累的提炼,书中既有干货分享也有对基础内容的详解补充. 同时由于是第一次撰写书籍,许多地方仍有不足还请读者朋友们见谅. 在京东或当当等都可以购买到本书: ...
- 策略梯度玩 cartpole 游戏,强化学习代替PID算法控制平衡杆
cartpole游戏,车上顶着一个自由摆动的杆子,实现杆子的平衡,杆子每次倒向一端车就开始移动让杆子保持动态直立的状态,策略函数使用一个两层的简单神经网络,输入状态有4个,车位置,车速度,杆角度,杆速 ...
- C 语言编程 — 高级数据类型 — 结构体与位域
目录 文章目录 目录 前文列表 结构体 定义结构体 初始化结构体变量 访问结构体成员 将结构体作为实参传入函数 指向结构体变量的指针 位域 定义位域 使用位域结构体的成员 前文列表 <程序编译流 ...
- 日常Bug排查-偶发性读数据不一致
日常Bug排查-偶发性读数据不一致 前言 日常Bug排查系列都是一些简单Bug的排查.笔者将在这里介绍一些排查Bug的简单技巧,同时顺便积累素材. Bug现场 业务场景 先描述这个问题出现的业务场景. ...
- 实用!!!!springBoot加入微信扫码支付功能,有一说一还是挺有意思的
基于springboot微服务加入微信支付的功能 在线微信支付开发文档: https://pay.weixin.qq.com/wiki/doc/api/index.html native扫码支付方式: ...