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

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.dtcms.com/a/365661.html

相关文章:

  • K8S 部署 NFS Dynamic Provisioning(动态存储供应)
  • Grafana可视化平台深度解析:选型、竞品、成本与资源消耗
  • SpringCloud整合分布式事务Seata
  • C语言(长期更新)第13讲:指针详解(三)
  • 毒蛇品种检测识别数据集:12个类别,6500+图像,全yolo标注
  • 印度股票数据API对接文档
  • 硬件(一)51单片机
  • 【和春笋一起学C++】(三十九)类作用域
  • [鸿蒙心迹]带新人学鸿蒙的悲欢离合
  • “企业版维基百科”Confluence
  • Docker实战指南:从安装到架构解析
  • 【QT特性技术讲解】QPrinter、QPdf
  • leetcode 38 外观数列
  • 联想开天X7:携手海光,开启信创PC高性能新时代
  • Java中 String、StringBuilder 和 StringBuffer 的区别?
  • WHAT - 协程及 JavaScript 具体代码示例
  • PgManage:一款免费开源、跨平台的数据库管理工具
  • Packet Radio Network,PRNET
  • 从发现到恢复,看瑞数信息如何构建“抗毁重构”实战路径
  • VR节约用水模拟体验系统:沉浸式体验如何改变我们的用水习惯
  • 全员0门槛数据分析:纷享销客BI Agent,让数据价值直抵业务
  • 实现信号的小波分解和重构
  • 自动化仓库托盘搬运减少错误和损坏的方法有哪些?实操案例解读
  • 12、Docker基本概念 容器与镜像与安装
  • MyBatis xml配置文件
  • 借助Aspose.ZIP SDK,在 C# 中压缩和提取 LZIP 文件
  • ubuntu的2T新硬盘分区、格式化并挂载
  • Linux学习:生产者消费者模型
  • 明远智睿 3568 核心板:四核 Cortex - A55 架构驱动的性能新标杆
  • C++中cdecl、stdcall、fastcall、thiscall异同——10分钟弄清