Unity基础 物理系统 刚体组件下的移动.碰撞.触发检测

       当在Unity中创建游戏或应用程序时,重力系统是一个非常重要的组成部分。它可以模拟物体受到地球引力的影响,并产生逼真的物理效果。在Unity中,我们可以使用刚体组件和重力向量来控制重力系统。

       首先,在Unity中创建一个物体,并将其设为刚体。可以通过在场景中选择物体并在Inspector面板中勾选"Is Kinematic"选项来确保物体不受其他力的影响。

首先我们先了解一下重力组件Rigidbody 

质量(Mass):对象的质量

阻力(Drag):模拟运动时受到的阻力

角阻力(AngularDrag):模拟旋转时受到的阻力

使用重力(UseGravity):是否使用重力

IsKinematic:是否是启用动力学,如果取消勾选物体就不会有重力下落了

插值(Interpolate):物体运动位置的插值器 

碰撞检测(CollisionDetection):可以增加碰撞检测频率

Constraints:控制刚体运动的约束


 

碰撞检测条件

1.两个物体必须都包含碰撞体组件

2.至少有一个物体包含刚体组件

碰撞检测的方法

OnCollisionEnter( Collision collisionInfo )  当两个对象开始碰撞的时候触发一次
OnCollisionExit( Collision collisionInfo )     当两个对象碰撞结束的时候触发一次
OnCollisionStay( Collision collisionInfo )    当两个对象持续碰撞的一直触发

using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class RigCollisionTest : MonoBehaviour
{void OnCollisionEnter(Collision other){Debug.Log("碰撞开始");}void OnCollisionStay(Collision other){Debug.Log("持续碰撞");}void OnCollisionExit(Collision other){Debug.Log("碰撞结束");}
}

 

触发检测条件

1.两个物体必须都包含碰撞体组件,并且其中一个对象是勾选了是触发器

2.至少有一个物体包含刚体组件

触发检测的方法

OnTriggerEnter( Collider other )    当两个对象开始碰撞的时候触发一次
OnTriggerExit( Collider other )       当两个对象碰撞结束的时候触发一次
OnTriggerStay( Collider other )      当两个对象持续碰撞的一直触发

using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class TriggerTest : MonoBehaviour
{void OnTriggerEnter(Collider other){Debug.Log("触发开始");}void OnTriggerStay(Collider other){Debug.Log("持续触发");}void OnTriggerExit(Collider other){Debug.Log("触发结束");}
} 

 

 下面是一个简单的示例代码,展示了如何在Unity中使用刚体组件移动和跳跃:

using UnityEngine;public class GravityDemo : MonoBehaviour
{Rigidbody m_Rigidbody;//移动速度public float m_Speed = 20f;//跳跃力public float jumpforce = 200;void Start(){m_Rigidbody = GetComponent<Rigidbody>();}void Update(){float hor = Input.GetAxis("Horizontal");float ver = Input.GetAxis("Vertical");Vector3 m_Input = new Vector3(hor, 0, ver) * Time.deltaTime * m_Speed;//移动m_Rigidbody.MovePosition(transform.position + m_Input);if (Input.GetKeyDown(KeyCode.E)){//跳跃m_Rigidbody.AddForce(transform.up * jumpforce);}}} 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/8480.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于Echarts2.X的地图数据可视化指南

目录 前言 一、关于Echarts版本 1、为什么用Echarts2.2.7 2、文件目录说明 二、地图数据可视化 1、新建map.html 2、Echarts图表初始化 3、参数设置 三、源码展示分析 1、初始化阶段 2、timelineOption.js模拟数据 总结 前言 在前面的博文&#xff08;数据会说话-从我国…

(学习日记)2023.04.29

写在前面&#xff1a; 由于时间的不足与学习的碎片化&#xff0c;写博客变得有些奢侈。 但是对于记录学习&#xff08;忘了以后能快速复习&#xff09;的渴望一天天变得强烈。 既然如此 不如以天为单位&#xff0c;以时间为顺序&#xff0c;仅仅将博客当做一个知识学习的目录&a…

1.7 完善自定位ShellCode后门

在之前的文章中&#xff0c;我们实现了一个正向的匿名管道ShellCode后门&#xff0c;为了保证文章的简洁易懂并没有增加针对调用函数的动态定位功能&#xff0c;此类方法在更换系统后则由于地址变化导致我们的后门无法正常使用&#xff0c;接下来将实现通过PEB获取GetProcAddre…

github上传超过100M的大文件

当上传的工程中有超过100M的文件时&#xff0c;直接上传github会产生如下报错&#xff1a; remote: error: File retinaface-R50/R50-0000.params is 112.54 MB; this exceeds GitHubs file size limit of 100.00 MB! [remote rejected] master -> master (pre-receive ho…

2023年07月数据库流行度最新排名

点击查看最新数据库流行度最新排名&#xff08;每月更新&#xff09; 2023年07月数据库流行度最新排名 TOP DB顶级数据库索引是通过分析在谷歌上搜索数据库名称的频率来创建的 一个数据库被搜索的次数越多&#xff0c;这个数据库就被认为越受欢迎。这是一个领先指标。原始数…

软件设计模式与体系结构-设计模式-结构型软件设计模式-桥接模式

四、桥接模式 桥接模式&#xff08;Bridge Pattern&#xff09;是一种软件设计模式&#xff0c;它用于将抽象部分与其具体实现部分解耦&#xff0c;使它们可以独立地变化。桥接模式的核心思想是将一个系统分为多个维度&#xff0c;并通过桥接连接这些维度&#xff0c;从而实现…

登录远程Linux桌面

远程桌面连接主要使用两种协议&#xff0c;一种是Windows上RDP协议&#xff0c;第二种是VNC协议&#xff0c;从使用效果来看&#xff0c;vnc更优秀。 一、VNC 使用x11vnc 1.安装x11vnc sudo apt install x11vnc 2.启动x11vnc x11vnc -passwd orangepi -display :0 -forever…

linux 时间同步 chrony

Chrony介绍 chrony 是基于NPT协议的实现时间同步服务&#xff0c;它既可以当做服务端&#xff0c;也可以充当客户端。chrony是ntp的代替品&#xff0c;能更精确的时间和更快的速度同步时钟&#xff0c;chrony 占用系统资源少&#xff0c;只有被唤起时才占用少部分CPU&#xff0…

云原生|kubernetes|centos7下离线化部署kubesphere-3.3.2---基于kubernetes-1.22.16(从网络插件开始记录)

前言&#xff1a; kubesphere的离线化部署指的是通过自己搭建的harbor私有仓库拉取镜像&#xff0c;完全不依赖于外部网络的方式部署。 我的kubernetes集群是一个单master节点&#xff0c;双工作节点&#xff0c;总计三个节点的版本为1.22.16的集群。 该集群只是初始化完成了…

详解DNS协议!

前言 想要不同的计算机之间进行通信&#xff0c;是需要知道对方的IP的&#xff0c;可是为什么我们平时很少用到ip&#xff0c;而是用到域名这种东西呢&#xff1f; 其实主要是为了方便阅读&#xff0c;让我们记住一串的ip还不如记域名来的方便。 当我们访问域名的时候&#xf…

C 学习笔记1-基础语法合集

C 基础语法 文章目录 C 基础语法注意 C 其他知识点编译过程编译器数据模型区别32/64位机器中&#xff0c;各数据类型所占位数assert() 断言&#xff08;宏&#xff09;用法总结与注意事项 C 函数printf()putchar()sizeof() C 位域位域声明位域的定义和位域变量的说明位域的使用…

微信小程序实现抖音视频效果

当我们进行开发的时候可能会遇到需要实现抖音视频效果的需求&#xff0c;并且网上该效果的开源代码少&#xff0c;找到的开源代码代码量大&#xff0c;很难进行二次开发 对此我将自己的代码进行简化&#xff0c;仅留下可动性高的代码模块 以上是实现效果与此处demo的模板 wx…