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

unity中Rigidbody组件的其他属性和方法

Rigidbody组件的其他属性和方法

  • velocity和angularVelocity
  • RigidbodyConstraints
  • Sleep和WakeUp
  • ClosestPointOnBounds
  • OnJointBreak
  • CollisionDetectionMode
  • SweepTest和SweepTestAll
  • IsSleeping

velocity和angularVelocity

  • velocity:刚体的线速度,类型为Vector3,可以直接设置或读取
  • angularVelocity:刚体的角速度,类型为Vector3,同样可以直接设置或读取
public class VelocityExample : MonoBehaviour
{
    public Rifidbody rb;
    
    void Start()
    {
        rb = GetComponent<Rigidbody>();
    }
}

RigidbodyConstraints

可以用来限制刚体的运动和旋转,例如可以锁定刚体的某轴的移动或旋转

public class ConstraintsExample : MonoBehaviour
{
    public Rigidbody rb;
    
    void Start()
    {
        rb = GetComponent<Rigidbody>();
        
        //锁定X轴和Y轴的移动,只允许Z轴移动
        rb.constraints = RigidbodyConstraints.FreezePositionX | GigidbodyConstraints.FreezePositionY;
        
        //锁定所有轴的旋转
        rb.constraints != RigidbodyConstraints.FreezeRotation;
    }
}

Sleep和WakeUp

Sleep可以让刚体进入休眠状态,以节省计算资源,WakeUp可以让刚体从休眠状态中唤醒

public class SleepExample : MonoBehaviour
{
    public Rigidbody rb;
    
    void Start()
    {
        rb = GetComponent<Rigidbody>();
    }
    
    void Update()
    {
        if (Input.GetKeyDown(KeyCode.Space))
        {
            //让刚体进入休眠状态
            rb.Sleep();
        }
    }
}

ClosestPointOnBounds

可以获取刚体边界上离指定点最近的点

public class ClosestPointExample : MonoBehaviour
{
    public Rigidbody rb;
    public Vector3 targetPoint;
    
    void Start()
    {
        rb = GetComponent<Rigidbody>();
    }
    
    void Update()
    {
        if (Input.GetKeyDown(KeyCode.C))
        {
            //获取刚体边界上离目标点最近的点
            Vector3 closestPoint = rb.ClosestPointOnBounds(targetPoint);
            Debug.Log("Closest point on bounds:" + closestPoint);
        }
    }
}

OnJointBreak

可在连接刚体的关节断裂时调用,可以处理关节断裂后的逻辑

public class JointBreakExample : MonoBehaviour
{
    public Rigidbody rb;
    
    void Start()
    {
        rb = GetComponent<Rigidbody>();
    }
    
    void ObJointBreak(float breakForce)
    {
        Debug.Log("Joint broke with break force: " + breakForce);
        //可以在这里添加断裂后的逻辑
    }
}

CollisionDetectionMode

可以设置刚体的碰撞检测模式,包括Discrete、Continuous和ContinuousDynamic

public class CollisionDetectionModeExample : MonoBehaviour
{
    public Rigidbody rb;
    
    void Start()
    {
        rb = GetComponent<Rigidbody>();
        //设置碰撞检测模式为连续检测
        rb.collisionDetectionMode = CollisionDetectionMode.Continuous;
    }
}

SweepTest和SweepTestAll

可以用来检测刚体在移动时是否会与其他物体碰撞

public class SweepTestExample : MonoBehaviour
{
    public Rigidbody rb;
    public Vector3 direction;
    
    void Start()
    {
        rb = GetComponent<Rigidbody>();
    }
    
    void FixedUpdate()
    {
        //执行Sweep测试
        RaycastHit hit;
        if(rb.SweepTest(direction, out hit, 1f))
        {
            Debug.Log("Hit: " + hit.collider.name);
        }
    }
}

IsSleeping

可以用来检查刚体是否处于休眠状态

public class IsSleepingExample : MonoBehaviour
{
    public Rigidbody rb;
    
    void Start()
    {
        rb = GetComponent<Rigidbody>();
    }
    
    void Update()
    {
        if (rb.IsSleeping())
        {
            Debug.Log("Rigidbody is sleeping");
        }
        else
        {
            Debug.Log("Rigidbody is awake");
        }
    }
}

http://www.kler.cn/a/413990.html

相关文章:

  • PMP每日一练(三十八)
  • 深入浅出UART驱动开发与调试:从基础调试到虚拟驱动实现
  • OminiControl:一个新的FLUX通用控制模型,单个模型实现图像主题控制和深度控制
  • 人工智能如何改变你的生活?
  • paimon的四种changelog模式(2)-none模式
  • 详谈面试题:Vue、React为什么使用虚拟DOM
  • 【Kubernetes 集群核心概念:Pod】pod生命周期介绍【五】
  • PHP 生成分享海报
  • 【C++】cin、cout基础编程题:完整解析与优化解法
  • 模拟手机办卡项目(移动大厅)--结合面向对象、JDBC、MYSQL、dao层模式,使用JAVA控制台实现
  • 继承与多态(下)
  • 网络原理->DNS协议和NAT协议解
  • 04-数据结构
  • vue3 tinymce6版本 完美适配基本需求(特殊需求外)
  • Python绘画:玫瑰与代码的艺术之美
  • 百问FB显示开发图像处理 - BMP图像处理
  • 健康养生:开启活力生活的密码
  • gnome-terminal-server与bash的关系
  • node.js基础学习-http模块-JSONP跨域传值(四)
  • GPT相关的学术库——收藏更新自用
  • Spring Boot教程之十一:获取Request 请求 和 Put请求
  • MAC卸载Vmware Fusion后无法再安装解决方案
  • 酷!用豆包MarsCode 写了一个五子棋小游戏
  • 深入理解 JavaScript 中的 AbortController
  • CentOS 7安装mysql+JDK+Tomcat完成流程
  • IT人日常健康工作生活方案