当前位置: 首页 > java >正文

Unity 枪械红点瞄准器计算

今天突然别人问我红点瞄准器在镜子上如何计算,之前的吃鸡项目做过不记得,今天写个小用例整理下。

主体思想记得是目标位置到眼睛穿过红点瞄准器获取当前点的位置就可以。应该是这样吧,:)

武器测试结构

首先整个结构:
枪上Cube是握把,瞄准器就是镜子,红点,远处100米放一个目标点便于观察红点位置。
很多人说瞄准走枪管,不要这样想,绿色的瞄准线平行于枪管就可以了。
在这里插入图片描述

实现代码

先上代码:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UIElements;public class Testhongdian : MonoBehaviour
{public Camera camerMain;public Transform jingzi;public Transform hongdian;public float dis = 100f;// Start is called before the first frame updatevoid Start(){camerMain = Camera.main;}// Update is called once per framevoid Update(){//模拟枪口方向有目标点Vector3 targetPoint = jingzi.transform.position + jingzi.transform.forward * dis;//目标点到相机的dir , 因为枪位置可能变化, 所以要计算目标到眼睛Vector3 dir = (camerMain.transform.position - targetPoint).normalized; float denominator = Vector3.Dot(dir, jingzi.transform.forward);float numerator = Vector3.Dot(jingzi.transform.position - targetPoint, jingzi.transform.forward);float t = numerator / denominator;Debug.Log(denominator.ToString("F5") + "," + numerator.ToString("F5") + "," + t.ToString("F5"));//红点坐标Vector3 newat = targetPoint + dir * t;Debug.DrawLine(targetPoint, newat , Color.green);hongdian.transform.position = newat;// at + jingzi.transform.position;}
}

首先计算目标点位置,因为武器标准位置就是目标,所以是镜子的forward方向就是目标。
计算一个向量,然后用Dot计算夹角的比值,就知道偏移,dir * t就是在镜子上的偏移。
最后把红点的位置给上,当然自己要处理出去了怎么办。

实现效果

附上效果GIF:
请添加图片描述

http://www.xdnf.cn/news/19889.html

相关文章:

  • linux内核 - 服务进程是内核的主要责任
  • dockerfile文件的用途
  • 机器能否真正语言?人工智能NLP面临的“理解鸿沟与突破
  • 键盘上面有F3,四,R,F,V,按下没有反应,维修记录
  • Echo- Go Web Framework的介绍
  • MCP over SSE 通信过程详解:双通道架构下的高效对话
  • 关于牙科、挂号、医生类小程序或管理系统项目 项目包含微信小程序和pc端两部分
  • 《计算机网络安全》实验报告一 现代网络安全挑战 拒绝服务与分布式拒绝服务攻击的演变与防御策略(1)
  • createrepo生成yum仓库元数据xml文件
  • 【机器学习学习笔记】逻辑回归实现与应用
  • 微信小程序预览和分享文件
  • AI生成内容的版权迷局:GPT-4输出的“创意”版权风险与规避之道
  • 解决服务器 DNS 解析失败,从这几步排查开始
  • MiniCPM-V 4.5 模型解析
  • 代码随想录算法训练营第二天| 209.长度最小的子数组
  • 变频器实习DAY42 VF与IF电机启动方式
  • 开源网络流量分析利器:tproxy
  • 嵌入式 - 硬件:51单片机(2)
  • daily notes[9]
  • 校园外卖点餐系统(代码+数据库+LW)
  • try-catch:异常处理的最佳实践与陷阱规避
  • MMD动画(一)模型、动作、音乐导入
  • Graphpad Prism 实战教程(一):小鼠体重变化曲线绘制全流程(含数据处理与图表美化)
  • 9月3日
  • 网格图--Day04--网格图DFS--2684. 矩阵中移动的最大次数,1254. 统计封闭岛屿的数目,130. 被围绕的区域
  • 现代软件栈全景解析,揭示从用户界面到基础设施的层层构建与关键技术
  • FFmpeg-Batch:GitHub开源视频批量处理工具,高效解决视频转格式与画质压缩需求
  • 华为HCIE证书多久续一次费?费用多少?
  • 接口保证幂等性你学废了吗?
  • Kafka Topic(主题)详解