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

Unity检测地面坡度丨人物上坡检测

Unity检测地面坡度

  • 前言
    • 使用
  • 代码

前言

此功能为,人物在爬坡等功能时可以检测地面坡度从而完成向某个方向给力或者完成其他操作

使用

其中我们创建了脚本GradeCalculation,把脚本挂载到人物上即可,或者有其他的使用方式,可自行拆分使用,注:其中需要修改地形的layer层级或者使用默认的就不用修改了。

代码

using System.Collections;
using System.Collections.Generic;
using System.Linq;
using UnityEngine;public class GradeCalculation : MonoBehaviour
{private Vector3 mLastPosition; // 上一帧的位置private Vector3 mForward; // 当前方向public float NeedleDistance = 1.0f; // 针尖距离public float NeedleHeightOffset = 1.0f; // 针尖高度偏移// Start is called before the first frame updatevoid Start(){// 在这里进行初始化}// Update is called once per framevoid Update(){// 在每一帧更新时输出坡度的读数Debug.Log("坡度的读数" + speedctr());}// 计算坡度的方法private float speedctr(){if (mLastPosition == null){mLastPosition = transform.position;}// 计算当前方向Vector3 forward = (transform.position - mLastPosition);mLastPosition = transform.position;mForward = forward.normalized;// 计算针尖位置Vector3 pos = transform.position + (mForward * NeedleDistance);pos.y += NeedleHeightOffset;float steepness = 0.0f; // 坡度值初始化// 创建射线以检测地面Ray ray = new Ray(transform.position + new Vector3(0, NeedleHeightOffset, 0), Vector3.down);RaycastHit hitCur;// 如果射线与地面碰撞if (Physics.Raycast(ray, out hitCur, 100.0f, LayerMask.GetMask("Default")))//“Default”是你的地面Layer层级名字{ray = new Ray(pos, Vector3.down);// 沿着当前方向发射射线,按距离排序var hitsForward = Physics.RaycastAll(ray, 100.0f, LayerMask.GetMask("Default")).OrderBy(h => h.distance).ToArray();if (hitsForward.Count() == 0)steepness = 0f; // 如果没有碰到地面,坡度为0else{// 计算坡度float deltaH = hitsForward[0].point.y - hitCur.point.y;float dist = (hitsForward[0].point - hitCur.point).magnitude;if (dist != 0){steepness = Mathf.Asin(deltaH / dist) / Mathf.PI * 180.0f;}}}return steepness; // 返回坡度值}
}

相关文章:

Unity检测地面坡度丨人物上坡检测

Unity检测地面坡度 前言使用 代码 前言 此功能为,人物在爬坡等功能时可以检测地面坡度从而完成向某个方向给力或者完成其他操作 使用 其中我们创建了脚本GradeCalculation,把脚本挂载到人物上即可,或者有其他的使用方式,可自行…...

SASS循环

<template><div><button class"btn type-1">默认按钮</button><button class"type-2">主要按钮</button><button class"type-3">成功按钮</button><button class"type-4">信息…...

Java超高精度无线定位技术--UWB (超宽带)人员定位系统源码

UWB室内定位技术是一种全新的、与传统通信技术有极大差异的通信新技术。它不需要使用传统通信体制中的载波&#xff0c;而是通过发送和接收具有纳秒或纳秒级以下的极窄脉冲来传输数据&#xff0c;从而具有GHz量级的带宽。 UWB&#xff08;超宽带&#xff09;高精度定位系统是一…...

系列十一、解压文件到指定目录

一、解压文件到指定目录 1.1、需求 Linux的/opt目录有一个文件zookeeper-3.4.11.tar.gz&#xff0c;我现在想把该文件解压至/usr/local/目录&#xff0c;那么应该怎么做呢&#xff1f; 语法&#xff1a;tar -zxvf xxx -C /usr/local/ tar -zxvf zookeeper-3.4.11.tar.gz -C /u…...

PHP Swoole Client

PHP常用socket创建TCP连接&#xff0c;使用CURL创建HTTP连接&#xff0c;为了简化操作&#xff0c;Swoole提供了Client类用于实现客户端功能&#xff0c;并增加了异步非阻塞模式&#xff0c;让用户在客户端也能使用事件循环。 作为客户端使用&#xff0c;Swoole Client可以在F…...

《QDebug 2023年12月》

一、Qt Widgets 问题交流 1. 二、Qt Quick 问题交流 1.Q_REVISION 标记的信号槽或者 REVISION 标记的属性&#xff0c;在子类中访问 Q_REVISION 是 Qt 用来做版本控制的一个宏。以 QQuickWindow 为例&#xff0c;继承后去访问 REVISION 标记的 opacity 属性或者 Q_REVISION…...

sklearn 中matplotlib编制图表

代码 # 导入pandas库&#xff0c;并为其设置别名pd import pandas as pd import matplotlib.pyplot as plt# 使用pandas的read_csv函数读取名为iris.csv的文件&#xff0c;将数据存储在iris_data变量中 iris_data pd.read_csv(data/iris.txt,sep\t)# 使用groupby方法按照&quo…...

【Docker-Dev】Mac M2 搭建docker的redis环境

Redis的dev环境docker搭建 1、前言2、官方文档重点信息提取2.1、创建redis实例2.2、使用自己的redis.conf文件。 3、单机版redis搭建4、redis集群版4.1、一些验证4.2、一些问题 结语 1、前言 本文主要针对M2下&#xff0c;相应进行开发环境搭建&#xff0c;然后做一个文档记录…...

docker +gitee+ jenkins +maven项目 (一)

jenkins环境和插件配置 文章目录 jenkins环境和插件配置前言一、环境版本二、jenkins插件三、环境安装总结 前言 现在基本都是走自动化运维&#xff0c;想到用docker 来部署jenkins &#xff0c;然后jenkins来部署java代码&#xff0c;做到了开箱即用&#xff0c;自动发布代码…...

IDEA 开发中常用的快捷键

目录 Ctrl 的快捷键 Alt 的快捷键 Shift 的快捷键 Ctrl Alt 的快捷键 Ctrl Shift 的快捷键 其他的快捷键 Ctrl 的快捷键 Ctrl F 在当前文件进行文本查找 &#xff08;必备&#xff09; Ctrl R 在当前文件进行文本替换 &#xff08;必备&#xff09; Ctrl Z 撤…...

Ubuntu Desktop 死机处理

Ubuntu Desktop 死机处理 当 Ubuntu Desktop 死机时&#xff0c;除了长按电源键重启&#xff0c;还可以使用如下两种方式处理。 方式1&#xff1a;ctrlaltFn 使用 ctrl alt F3~F6: 切换到其他 tty 命令行。 执行 top 命令查看资源占用最多的进程&#xff0c;然后使用 kill…...

Hermite矩阵

Hermite矩阵 文章目录 Hermite矩阵一、正规矩阵【定义】A^H^矩阵【定理】 A^H^的运算性质【定义】正规矩阵、特殊的正规矩阵【定理】与正规矩阵酉相似的矩阵也是正规矩阵【定理】正规的上(下)三角矩阵必为对角矩阵【定义】复向量的内积【定理】Schmitt正交化 二、酉矩阵&#x…...

HTML 实操试题(二)

创建一个简单的HTML文档&#xff1a; 包含<!DOCTYPE html>声明。包含<html>标签&#xff0c;并设置lang属性为英语。包含<head>标签&#xff0c;其中包含<meta charset"UTF-8">和一个自定义的页面标题。包含<body>标签&#xff0c;其…...

MongoDB 面试题

MongoDB 面试题 1. 什么是MongoDB&#xff1f; MongoDB是一种非关系型数据库&#xff0c;被广泛用于大型数据存储和分布式系统的构建。MongoDB支持的数据模型比传统的关系型数据库更加灵活&#xff0c;支持动态查询和索引&#xff0c;也支持BSON格式的数据存储&#xff0c;这…...

LeetCode 1154. 一年中的第几天:2023年最后一道每日一题

【LetMeFly】1154.一年中的第几天&#xff1a;2023年最后一道每日一题 力扣题目链接&#xff1a;https://leetcode.cn/problems/day-of-the-year/ 给你一个字符串 date &#xff0c;按 YYYY-MM-DD 格式表示一个 现行公元纪年法 日期。返回该日期是当年的第几天。 示例 1&…...

《深入理解JAVA虚拟机笔记》OutOfMemoryError 异常

在《Java 虚拟机规范》的规定里&#xff0c;除了程序计数器外&#xff0c;虚拟机内存的其他几个运行时区域都有发生 OutOfMemoryError &#xff08;下文称 OOM&#xff09;异常的可能。 Java堆溢出 Java 堆用于储存对象实例&#xff0c;我们只要不断地创建对象&#xff0c;并…...

R306指纹识别模块指令系统

一&#xff1a;指令集 1. GR_GetImage 指令代码&#xff1a;01H 功能&#xff1a;从传感器上读入图像存于图像缓冲区 2. GR_GenChar 指令代码&#xff1a;02H 功能&#xff1a;根据原始图像生成指纹特征存于 CharBuffer1 或 CharBuffer2 3. GR_Match 指令代码&#xff…...

redis的搭建及应用(三)-Redis主从配置

Redis主从配置 为提升Redis的高可用性&#xff0c;需要搭建多个Redis集群以保证高可用性。常见搭建方式有&#xff1a;主从&#xff0c;哨兵集群等&#xff0c;本节我们搭建一主二从的多Redis架构。 redis主从安装1主2从的方式配置&#xff0c;以端口号为redis的主从文件夹。 主…...

Java学习,一文掌握Java之SpringBoot框架学习文集(1)

&#x1f3c6;作者简介&#xff0c;普修罗双战士&#xff0c;一直追求不断学习和成长&#xff0c;在技术的道路上持续探索和实践。 &#x1f3c6;多年互联网行业从业经验&#xff0c;历任核心研发工程师&#xff0c;项目技术负责人。 &#x1f389;欢迎 &#x1f44d;点赞✍评论…...

javaWeb学生信息管理系统2

一、学生信息管理系统SIMS 一款基于纯Servlet技术开发的学生信息管理系统&#xff08;SIMS&#xff09;&#xff0c;在设计中没有采用SpringMVC和Spring Boot等框架。系统完全依赖于Servlet来处理HTTP请求和管理学生信息&#xff0c;实现了信息的有效存储、检索和更新&#xf…...

UWB-IMU、UWB定位对比研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…...

谷歌seo如何发布外链? 新站首月发布的频率与节奏

域名注册后的前30天&#xff0c;谷歌爬虫会对新站点进行密集的抓取与记录。这个阶段的站点就像一张白纸&#xff0c;每一个外源信号都会被放大记录。很多站长习惯在上线首周就去购买几百条低质链接&#xff0c;试图拉高权重&#xff0c;但这往往会导致站点在沙盒期停留更久。根…...

Windows 11任务栏拖放功能终极修复指南:3步恢复高效操作体验

Windows 11任务栏拖放功能终极修复指南&#xff1a;3步恢复高效操作体验 【免费下载链接】Windows11DragAndDropToTaskbarFix "Windows 11 Drag & Drop to the Taskbar (Fix)" fixes the missing "Drag & Drop to the Taskbar" support in Windows…...

保姆级教程:用Intel官方工具搞定Realsense D435深度不准和黑点问题

深度视觉优化实战&#xff1a;Intel RealSense D435深度校准全流程解析 刚拆封的RealSense D435摄像头在深度模式下出现零星黑点&#xff1f;深度图某些区域数值明显失真&#xff1f;这些问题往往不是硬件缺陷&#xff0c;而是出厂校准参数与实际使用环境不匹配导致的。作为计算…...

SkillSync MCP:为AI技能市场构建自动化安全门禁系统

1. 项目概述&#xff1a;为AI技能市场装上“安全门” 如果你和我一样&#xff0c;是Claude Code、Cursor这类AI编程助手的深度用户&#xff0c;那你一定对“技能”&#xff08;Skills&#xff09;这个概念不陌生。简单来说&#xff0c;技能就是一些预定义的提示词模板或工具脚…...

离线AI教育工具开发实战:模型轻量化、边缘计算与五大应用场景

1. 项目概述&#xff1a;当AI导师走进离线课堂“每个学生都值得拥有一位AI导师”——这个想法听起来很美好&#xff0c;但在全球范围内&#xff0c;一个残酷的现实是&#xff1a;稳定、高速的网络连接并非理所当然。在许多乡村学校、资源匮乏的地区&#xff0c;甚至在城市里信号…...

PHP反序列化漏洞实战:从CTFshow F5杯‘eazy-unserialize’两道题,到文件包含与协议利用的完整避坑指南

PHP反序列化漏洞实战&#xff1a;从CTF题目到真实漏洞利用的深度解析 在CTF竞赛中&#xff0c;PHP反序列化漏洞一直是Web安全方向的热门考点。这类漏洞不仅考验选手对PHP语言特性的理解&#xff0c;更要求具备将多个知识点串联运用的能力。本文将以一道典型CTF题目为例&#xf…...

Next.js功能开关实践:用happykit/flags实现灰度发布与A/B测试

1. 项目概述&#xff1a;为什么我们需要一个功能开关系统&#xff1f;在软件开发&#xff0c;尤其是现代Web应用和微服务架构的迭代过程中&#xff0c;我们经常面临一个经典困境&#xff1a;新功能开发完成后&#xff0c;是直接全量发布给所有用户&#xff0c;还是先小范围灰度…...

通过 curl 命令在 Ubuntu 终端快速测试 Taotoken 的 API 连通性

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 通过 curl 命令在 Ubuntu 终端快速测试 Taotoken 的 API 连通性 在服务器或容器环境中进行开发或部署时&#xff0c;直接使用 curl…...

Chrome QRCode:浏览器原生二维码生成与解析的极简技术方案

Chrome QRCode&#xff1a;浏览器原生二维码生成与解析的极简技术方案 【免费下载链接】chrome-qrcode :zap: A Chrome plugin to Genrate QRCode of URL / Text, or Decode the QRcode in website. 一个Chrome浏览器插件&#xff0c;用于生成当前URL或者选中内容的二维码&…...