unity学习34:角色相关3,触发器trigger,铰链 hingejoint 等 spring joint, fixed joint
目录
1 触发的实现条件
1.1 碰撞的的实现条件
1.2 触发的实现条件
1.3 触发器trigger,直接拿 碰撞器collider修改下配置即可
2 触发器相关实验:触发开门效果
2.0 目标
2.1 player物体的属性
2.2 新建一个trigger 物体
2.3 新建一个被trigger 控制的物体
2.4 TestTrigger.cs脚本相关
2.4.1 对应的trigger 函数
2.4.2 找到对应gameObject
2.4.3 设置gameObject的激活
2.4.4 具体代码
2.5 测试效果
3 额外的:控制角色的翻转
4 勾选mesh render 可以控制物体的渲染 /隐身
5 有 collider,没有rigidboby的差别
5.1 如果只有 collider,没有rigidboby
5.2 如果只有 collider,没有rigidboby
6 开门的铰链: hinge joint
6.1 hinge joint 设置
6.2 上下旋转的门设置
6.3 左右旋转的门
6.4 旋转门的测试效果
6.5 自动门
7 弹簧 spring joint
7.1 准备工作
7.1.1 新建2个 cube
7.1.2 修改2个cube为 rigidbody
7.1.3 新增一个component为 spring Joint
7.1.4 把上面的刚体设置为 is kinematic
8 固定关联 fixed joint 像胶水一样的效果
8.1 可以设定破坏的力的大小
9 物体的物理材质New Physic Material,摩擦力和弹力
9.1 可能影响滑动的因素
9.2 新增一个New Physic Material
9.3 修改Physic Material属性
9.5 测试准备
9.6 注意材质影响的参数
1 触发的实现条件
1.1 碰撞的的实现条件
- 2个物体都有collider
- 且其中1个物体上有rigidbody
1.2 触发的实现条件
- 2个物体都有collider
- 且其中1个collider修改为trigger (额外修改条件)
- 且其中1个物体上有rigidbody
1.3 触发器trigger,直接拿 碰撞器collider修改下配置即可
- 触发器,直接拿 碰撞器collider修改下配置即可
- 碰撞器collider,修改为触发器后,将不触发碰撞,只会引发触发器
2 触发器相关实验:触发开门效果
2.0 目标
- 目标实现效果:控制player 走到trigger的范围,触发wall的消失
下面是各种准备工作
先把之前的地面扩大,或者新建一个地面
2.1 player物体的属性
- 必须有collider
- 设置为rigidbody
- 可以移动,参考之前的移动脚本
2.2 新建一个trigger 物体
- 设置其collider为 trigger
- 挂载一个 实现trgger效果的脚本,我这里是TestTrigger.cs
2.3 新建一个被trigger 控制的物体
- 也需要有collider
- 可以阻挡 player角色的通过
- gameObject名字为“wall”
2.4 TestTrigger.cs脚本相关
- 目标实现效果
- 控制player 走到trigger的范围,触发wall的消失
2.4.1 对应的trigger 函数
- private void OnTriggerEnter(Collider other){}
- private void OnTriggerStay(Collider other){}
- private void OnTriggerExit(Collider other){}
2.4.2 找到对应gameObject
- GameObject wall1=GameObject.Find("wall")
- if(wall1 != null)
2.4.3 设置gameObject的激活
- wall1.SetActive(false)
2.4.4 具体代码
using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class TestTrigger : MonoBehaviour
{// Start is called before the first frame updatevoid Start(){}// Update is called once per framevoid Update(){}private void OnTriggerEnter(Collider other){GameObject wall1=GameObject.Find("wall");if(wall1 != null){wall1.SetActive(false);}}private void OnTriggerStay(Collider other){}private void OnTriggerExit(Collider other){}}
2.5 测试效果
- wall阻挡 player过去
player 走到trigger 触发wall的消失
wall消失后,player可以随便移动到对面
3 额外的:控制角色的翻转
- 如果我这个用的不是球,是比较高的capsule 或者 长高立方体,
- 走到地图边缘会翻转掉下去,
- 但是控制这个可以不翻转
4 勾选mesh render 可以控制物体的渲染 /隐身
- 勾选mesh render 可以控制物体的渲染 /隐身
5 有 collider,没有rigidboby的差别
5.1 如果只有 collider,没有rigidboby
- 直接挡住,不会被撞倒
5.2 如果只有 collider,没有rigidboby
- 挡住
- 门本身也会被撞倒
6 开门的铰链: hinge joint
- 不同的开门效果,轴不同
- 可以设置 轴在不同的方向
6.1 hinge joint 设置
锚点:
- 把门看成一个长方体,那么X,Y,Z 这3个坐标分别表示 铰链在轴的百分比位置
- 而坐标中心在立方体的中心
- 所以上下的轴,就是Y=0.5或者 -0.5 ,这样就在最上面,或者最下面
- 所以左右的轴,就是x=0.5或者 -0.5 ,这样就在最左边,或者最右边
轴
- 轴:门沿着什么轴,旋转
- 比如上下旋转的门,就是沿着X轴旋转
- 比如左右旋转的门,就是沿着Y轴旋转
- 比如像水车那样旋转的门,就是沿着Z轴旋转
6.2 上下旋转的门设置
- 锚点:
- 轴:
6.3 左右旋转的门
- 锚点:
- 轴:
6.4 旋转门的测试效果
- 有点问题
- 门可能太厚了转不动
- 有时候门从正面撞不开
6.5 自动门
- 勾选 use Motor
- 下面选择速度和力度就可以自动了
- target velocity =
- force=
7 弹簧 spring joint
7.1 准备工作
7.1.1 新建2个 cube
- 只是默认带 collider
- 只是起到阻挡效果,但是没有物理效果
7.1.2 修改2个cube为 rigidbody
- 默认带 collider
- 且加上了rigidbody
- 现在上面的cube会自动受重力掉下来
7.1.3 新增一个component为 spring Joint
- 新增一个component为 spring Joint
- 并且把box1拖到里面,关联上(要求必须是刚体)
- 这样2个物体就中间有了弹簧效果
7.1.4 把上面的刚体设置为 is kinematic
- 这样,上面的物体不掉下来
- 而且下面的被弹簧牵引着
8 固定关联 fixed joint 像胶水一样的效果
- 去掉srping joint
- 新增一个 fixed joint
- 然后把box1 关联上,现在就像强力胶水的效果了
8.1 可以设定破坏的力的大小
9 物体的物理材质New Physic Material,摩擦力和弹力
9.1 可能影响滑动的因素
- 倾斜角度:会有物理效果
- 不同的摩擦力:地面和物体都有摩擦力
- 弹力:想象是橡皮球
9.2 新增一个New Physic Material
- 新增一个New Physic Material
- 拖入到地面的 material
9.3 修改Physic Material属性
- static fiction : 超过静态摩擦力后,开始移动,就会转向使用动态摩擦力
- dynamic fiction :
9.5 测试准备
- 新加斜面
- 新加斜面贴面的立方体
- 斜面增加一个 Physic Material 然后调整属性
- 可以测试摩擦力大小,斜面移动的效果不同
9.6 注意材质影响的参数
- static fiction : 超过静态摩擦力后,开始移动,就会转向使用动态摩擦力
- dynamic fiction :
- bounciness 弹力
- fiction combine, 取2个相互摩擦物体的摩擦力的平均值,还是其他?
相关文章:

unity学习34:角色相关3,触发器trigger,铰链 hingejoint 等 spring joint, fixed joint
目录 1 触发的实现条件 1.1 碰撞的的实现条件 1.2 触发的实现条件 1.3 触发器trigger,直接拿 碰撞器collider修改下配置即可 2 触发器相关实验:触发开门效果 2.0 目标 2.1 player物体的属性 2.2 新建一个trigger 物体 2.3 新建一个被trigger 控…...

HarmonyOS Next 方舟字节码文件格式介绍
在开发中,可读的编程语言要编译成二进制的字节码格式才能被机器识别。在HarmonyOS Next开发中,arkts会编译成方舟字节码。方舟字节码长什么样呢?我们以一个demo编译出的abc文件: 二进制就是长这样,怎么去理解呢&…...

计算机视觉语义分割——Attention U-Net(Learning Where to Look for the Pancreas)
计算机视觉语义分割——Attention U-Net(Learning Where to Look for the Pancreas) 文章目录 计算机视觉语义分割——Attention U-Net(Learning Where to Look for the Pancreas)摘要Abstract一、Attention U-Net1. 基本思想2. Attention Gate模块3. 软注意力与硬注意力4. 实验…...

html 列动态布局
样式说明: /* 列动态布局,列之间以空格填充 */ li {display: flex;/* flex-direction: column; */justify-content: space-between; }...

DeepSeek开源多模态大模型Janus-Pro部署
DeepSeek多模态大模型部署 请自行根据电脑配置选择合适环境配置安装conda以及gitJanus 项目以及依赖安装运行cpu运行gpu运行 进入ui界面 请自行根据电脑配置选择合适 本人家用电脑为1060,因此部署的7B模型。配置高的可以考虑更大参数的模型。 环境配置 安装conda…...

DeepSeek结合Langchain的基本用法
DeepSeek结合Langchain的基本用法 DeepSeek 基于Openai接口规范的Prompt应答Deepseek结合LangchainDeepSeek 基于langchain的结构化返回 DeepSeek 基于Openai接口规范的Prompt应答 首先我们需要先基于pip 安装 pip install openai最开始我们先熟悉如何使用openai的接口规范&a…...

Redis持久化的两种方式:RDB和AOF
redis中的数据存储在缓存中,如果没有持久化的策略,Redis一旦宕机,那么将会导致数据丢失;因此redis提供了以下两种持久化方式:RDB和AOF 一般来说,大部分公司对这两种方式都是同时开启的 一、RDB RDB策略全…...
每日一题——131.分割回文串
题目链接:131. 分割回文串 - 力扣(LeetCode) 代码: class Solution { private:vector<vector<string>> result;vector<string> path;void backtracking (const string& s,int startindex){if(startindex …...

内容中台赋能人工智能技术提升业务创新能力
内容概要 在当今快速变化的市场环境中,企业需要不断寻求创新以保持竞争力。内容中台作为一种新型的内容管理架构,能够极大地提升企业在内容创建、管理和分发方面的效率。通过与人工智能技术的深度融合,企业能够将海量的数据和信息转化为有价…...

第七节 文件与流
基本的输入输出(iostream) C标准库提供了一组丰富的输入/输出功能,C的I/O发生在流中,流是字节序列。如果字节流是从设备(键盘、磁盘驱动器、网络连接等)流向内存,叫做输入操作。如果字节流是从…...

软件工程 项目管理
软件项目管理中可以分成两部分: 软件创新 软件项目管理项目是定义明确的任务,这是为了实现某个目标(例如,软件开发和交付)进行的一系列操作的集合。一个项目可以表征为: 每个项目都可以有一个独特而鲜明的目标。 项目不是日常活…...
通过类加载和初始化的一些题目理解Java类加载过程
通过题目重点理解:Class加载流程和运行时区域 目录 子类和父类static变量父子类加载顺序2class.forName初始化 子类和父类static变量 class Parent {static int a 1;static int b 2;static int c;static {c 3;System.out.println("parent static block&quo…...
LLMs之DeepSeek r1:TinyZero的简介、特点、安装和使用方法、案例应用Logic-RL的简介、安装和使用方法、案例应用之详细攻略
LLMs之DeepSeek r1:TinyZero的简介、特点、安装和使用方法、案例应用Logic-RL的简介、安装和使用方法、案例应用之详细攻略 目录 TinyZero的简介 1、TinyZero的特点 TinyZero的安装和使用方法 1、安装 创建 conda 环境 数据准备 (倒计时任务) 多GPU (适用于 …...
爬取豆瓣电影 Top250 数据的脚本及调整方法
以下是一个完整的 Python 脚本,用于爬取豆瓣电影 Top250 的数据,包括电影名称、评分和短评。同时,我将提供应对豆瓣页面结构更新和反爬虫机制的调整方法。 安装必要的库 首先,确保安装了必要的库: bash复制 pip install requests beautifulsoup4 pandas示例代码 Pyth…...

Deepseek 接入Word处理对话框(隐藏密钥)
硅基流动邀请码:1zNe93Cp 邀请链接:网页链接 亲测deepseek接入word,自由调用对话,看截图有兴趣的复用代码(当然也可以自己向deepseek提问,帮助你完成接入,但是提问逻辑不一样给出的答案是千差万…...

Jupyter Notebook自动保存失败等问题的解决
一、未生成配置文件 需要在命令行中,执行下面的命令自动生成配置文件 jupyter notebook --generate-config 执行后会在 C:\Users\用户名\.jupyter目录中生成文件 jupyter_notebook_config.py 二、在网页端打开Jupyter Notebook后文件保存失败;运行代码…...

基于机器学习时序库pmdarima实现时序预测
目录 一、Pmdarima实现单变量序列预测1.1 核心功能与特性1.2 技术优势对比1.3 python案例1.3.1 时间序列交叉验证1.3.1.1 滚动交叉验证1.3.1.2 滑窗交叉验证 时间序列相关参考文章: 时间序列预测算法—ARIMA 基于VARMAX模型的多变量时序数据预测 基于机器学习时序库…...
Dart语言的云计算
Dart语言在云计算中的应用 引言 云计算作为一种新兴的计算模式,为各行各业带来了重大变革。借助于云计算,用户可以通过互联网获取和使用各种资源,如计算能力、存储、数据库等。随着云计算的快速发展,编程语言的选择变得愈发重要…...
每日一题--数组中只出现一次的两个数字
数组中只出现一次的两个数字 题目描述数据范围提示 示例示例1示例2 题解解题思路位运算方法步骤: 代码实现代码解析时间与空间复杂度按位与操作获取最小位1的原理为什么选择最低有效的 1 位而不是其他位? 题目描述 一个整型数组里除了两个数字只出现一次…...
【数据】数据领域常用名词解释(第一批40个)+ 例子
导读:这些名词解释是基于数据领域的基本原理、技术方法、行业实践以及政策规范等多方面因素综合制定的,旨在为社会各界提供统一、权威的参考标准,推动数据领域的健康有序发展。 目录 数据 原始数据 数据资源 数据要素 数据产品和服务 数…...

《Qt C++ 与 OpenCV:解锁视频播放程序设计的奥秘》
引言:探索视频播放程序设计之旅 在当今数字化时代,多媒体应用已渗透到我们生活的方方面面,从日常的视频娱乐到专业的视频监控、视频会议系统,视频播放程序作为多媒体应用的核心组成部分,扮演着至关重要的角色。无论是在个人电脑、移动设备还是智能电视等平台上,用户都期望…...
【SpringBoot】100、SpringBoot中使用自定义注解+AOP实现参数自动解密
在实际项目中,用户注册、登录、修改密码等操作,都涉及到参数传输安全问题。所以我们需要在前端对账户、密码等敏感信息加密传输,在后端接收到数据后能自动解密。 1、引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId...
基于Uniapp开发HarmonyOS 5.0旅游应用技术实践
一、技术选型背景 1.跨平台优势 Uniapp采用Vue.js框架,支持"一次开发,多端部署",可同步生成HarmonyOS、iOS、Android等多平台应用。 2.鸿蒙特性融合 HarmonyOS 5.0的分布式能力与原子化服务,为旅游应用带来…...

第 86 场周赛:矩阵中的幻方、钥匙和房间、将数组拆分成斐波那契序列、猜猜这个单词
Q1、[中等] 矩阵中的幻方 1、题目描述 3 x 3 的幻方是一个填充有 从 1 到 9 的不同数字的 3 x 3 矩阵,其中每行,每列以及两条对角线上的各数之和都相等。 给定一个由整数组成的row x col 的 grid,其中有多少个 3 3 的 “幻方” 子矩阵&am…...

vue3+vite项目中使用.env文件环境变量方法
vue3vite项目中使用.env文件环境变量方法 .env文件作用命名规则常用的配置项示例使用方法注意事项在vite.config.js文件中读取环境变量方法 .env文件作用 .env 文件用于定义环境变量,这些变量可以在项目中通过 import.meta.env 进行访问。Vite 会自动加载这些环境变…...

Maven 概述、安装、配置、仓库、私服详解
目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...

处理vxe-table 表尾数据是单独一个接口,表格tableData数据更新后,需要点击两下,表尾才是正确的
修改bug思路: 分别把 tabledata 和 表尾相关数据 console.log() 发现 更新数据先后顺序不对 settimeout延迟查询表格接口 ——测试可行 升级↑:async await 等接口返回后再开始下一个接口查询 ________________________________________________________…...

接口自动化测试:HttpRunner基础
相关文档 HttpRunner V3.x中文文档 HttpRunner 用户指南 使用HttpRunner 3.x实现接口自动化测试 HttpRunner介绍 HttpRunner 是一个开源的 API 测试工具,支持 HTTP(S)/HTTP2/WebSocket/RPC 等网络协议,涵盖接口测试、性能测试、数字体验监测等测试类型…...
苹果AI眼镜:从“工具”到“社交姿态”的范式革命——重新定义AI交互入口的未来机会
在2025年的AI硬件浪潮中,苹果AI眼镜(Apple Glasses)正在引发一场关于“人机交互形态”的深度思考。它并非简单地替代AirPods或Apple Watch,而是开辟了一个全新的、日常可接受的AI入口。其核心价值不在于功能的堆叠,而在于如何通过形态设计打破社交壁垒,成为用户“全天佩戴…...
安卓基础(Java 和 Gradle 版本)
1. 设置项目的 JDK 版本 方法1:通过 Project Structure File → Project Structure... (或按 CtrlAltShiftS) 左侧选择 SDK Location 在 Gradle Settings 部分,设置 Gradle JDK 方法2:通过 Settings File → Settings... (或 CtrlAltS)…...