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

Unreal Engine UPrimitiveComponent

Unreal

  • 🎮 Unreal Engine - UPrimitiveComponent
    • 🏛 定义
    • 🧬 类继承
    • ⚡ 关键特性
    • ⚙️ 常见配置
    • 📝 使用方法
      • 🛠️ 添加组件到 Actor
      • ⚡ 设置碰撞属性
      • 🏋️ 启用物理模拟
      • 🔗 可见性控制
    • 🏊 典型应用场景
    • 📚 常见子类与用途
    • 📦 小结

🎮 Unreal Engine - UPrimitiveComponent

🏛 定义

UPrimitiveComponent 是 所有可见组件(Visible Components)和可碰撞组件(Collidable Components)的基类

它负责处理 渲染、碰撞、物理模拟,是 Unreal Engine 中一切可见对象和物理对象的核心组件。

🧬 类继承

  • 👤 继承关系

    UObject → UActorComponent → USceneComponent → UPrimitiveComponent

  • 📝 子类示例

    • UStaticMeshComponent:用于静态网格渲染与碰撞
    • USkeletalMeshComponent:用于骨骼网格与动画
    • UParticleSystemComponent:用于粒子效果
    • UShapeComponent:基础几何体(如 Box、Sphere、Capsule)

⚡ 关键特性

  • 🔗 渲染支持:提供渲染代理(Render Proxy),负责绘制到场景中
  • 🛠️ 碰撞系统:内置碰撞检测和查询(Overlap、Hit)
  • 🏋️ 物理模拟:支持刚体物理(Rigidbody)、重力、力与扭矩作用
  • 📦 LOD 与可见性:支持裁剪(Culling)、LOD 渲染优化
  • ⚙️ 移动与变换:继承自 USceneComponent,可直接设置位置、旋转、缩放

⚙️ 常见配置

  • 🏷 CollisionEnabled:开启/禁用碰撞检测(NoCollision / QueryOnly / PhysicsOnly / QueryAndPhysics)
  • 🏷 CollisionResponse:控制与不同对象的交互方式(Block、Overlap、Ignore)
  • 🏷 SimulatePhysics:是否启用物理模拟
  • 🏷 bVisible:是否可见
  • 🏷 bCastDynamicShadow:是否投射阴影
  • 🏷 Mobility:可移动性(Static / Stationary / Movable)

📝 使用方法

🛠️ 添加组件到 Actor

// 在 C++ 中创建静态网格组件并附加到 Root
UStaticMeshComponent* MeshComp = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("MeshComp"));
RootComponent = MeshComp;

⚡ 设置碰撞属性

MeshComp->SetCollisionEnabled(ECollisionEnabled::QueryAndPhysics);
MeshComp->SetCollisionResponseToAllChannels(ECR_Block);

🏋️ 启用物理模拟

MeshComp->SetSimulatePhysics(true);
MeshComp->AddForce(FVector(0,0,500));  // 给物体施加向上的力

🔗 可见性控制

MeshComp->SetVisibility(false); // 隐藏组件

🏊 典型应用场景

  • 🤖 静态物体渲染:墙壁、地板、建筑物(UStaticMeshComponent)
  • 🪂 动态角色:骨骼动画角色(USkeletalMeshComponent)
  • ⚙️ 物理交互:可推动、受力、模拟刚体的物体
  • 📦 触发区域:通过 UShapeComponent(如 Box/Sphere)设置触发体积
  • 🔗 特效显示:粒子、光效、特效组件

📚 常见子类与用途

  • 🏛 UStaticMeshComponent:显示静态网格
  • 🏋️ USkeletalMeshComponent:骨骼网格与动画
  • 📦 UShapeComponent(如 Box、Sphere):碰撞体与触发区域
  • 🔥 UParticleSystemComponent:粒子效果
  • 🎮 UDecalComponent:贴花效果

📦 小结

  • UPrimitiveComponent可见性 + 碰撞 + 物理模拟 的核心组件基类
  • ✅ 几乎所有游戏世界中 能看见或能交互的对象 都是它的子类
  • ✅ 提供了 渲染代理、碰撞检测、物理接口,是游戏表现与交互的基础
  • ✅ 开发时通常不会直接使用它,而是通过其子类(UStaticMeshComponentUSkeletalMeshComponent 等)来完成具体需求
http://www.xdnf.cn/news/18599.html

相关文章:

  • 数据分析编程第二步: 最简单的数据分析尝试
  • day58 拓扑排序 (kama117. 软件构建) dijkstra(朴素版)(kama47. 参加科学大会)
  • 无人机电机与螺旋桨的匹配原理及方法(一)
  • JavaSSM框架从入门到精通!第三天(MyBatis(二))!
  • Python训练营打卡Day40-简单CNN
  • 【51单片机数码管字符左移】2022-11-11
  • 如何低门槛自制Zigbee 3.0温湿度计?涂鸦上新开发包,开箱即用、完全开源
  • 开源AI编程工具Kilo Code的深度分析:与Cline和Roo Code的全面对比
  • Tiger任务管理系统-13
  • 【jar包启动,每天生成一个日志文件】
  • Unity UnityWebRequest高级操作
  • Ubuntu部署K8S集群
  • Jmeter+Jenkins接口压力测试持续集成
  • 【motion】基于标签重合度的匹配算法1:原理
  • 3D打印小批量低成本打印玩具工艺品模型-中科米堆CASAIM
  • 字节Seed-OSS开源,不卷参数卷脑子
  • 从零开始搭 Linux 环境:VMware 下 CentOS 7 的安装与配置全流程(附图解)
  • 如何修复“DNS服务器未响应”错误
  • AP服务发现PRS_SOMEIPSD_00160的解析
  • 开源版CRM客户关系管理系统源码包+搭建部署教程
  • 深度学习入门详解:从神经网络到实践应用
  • vggt复现
  • 正点原子【第四期】Linux之驱动开发学习笔记-2.1LED灯驱动实验(直接操作寄存器)
  • Mysql InnoDB 底层架构设计、功能、原理、源码系列合集【四、事务引擎核心 - MVCC与锁机制】
  • 【AI应用】向量数据库Milvus详细命令
  • 找不到vcruntime140_1.dll 无法执行的故障要怎么搞?解决方法分享
  • MiniCPM-V4.0开源并上线魔乐社区,多模态能力进化,手机可用,还有最全CookBook!
  • CVPR焦点 | 神经网络新范式:轻量化与精度并行,重塑视觉任务性能天花板
  • 树状数组【原理+详解+例题】
  • 在Excel和WPS表格中如何隐藏单元格的公式