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

怎么找网站建设学校网站建设的技术方案

怎么找网站建设,学校网站建设的技术方案,升学宴邀请函电子版免费制作软件,网站续费要多少钱最近DOTS发布了正式的版本,同时基于DOTS的理念实现了一套高性能的物理引擎#xff0c;今天我们给大家分享和介绍一下这个物理引擎的碰撞事件处理以及核心相关概念。 Unity.Physics物理引擎的主要流程与Pipeline Unity.Physics物理引擎做仿真迭代计算的时候主要通过以下步骤来…最近DOTS发布了正式的版本,同时基于DOTS的理念实现了一套高性能的物理引擎今天我们给大家分享和介绍一下这个物理引擎的碰撞事件处理以及核心相关概念。 Unity.Physics物理引擎的主要流程与Pipeline Unity.Physics物理引擎做仿真迭代计算的时候主要通过以下步骤来执行: step1: 从entity里面的ECS组件中获取我们当前的物体的状态数据; step2: 做粗略的broadphase计算阶段,遍历物理世界里面所有的body, 通过AABB包围计算,来快速的判断哪些物体可能相交;粗略计算把不会相交的排除掉, 不会相交的就不会改变运动状态; step3: narrowphase阶段: 把可能相交的物体做进一步的精确的计算;根据他们的物理形状计算出来准确的碰撞点与相关的碰撞信息; step4: 基于这些碰撞信息, 我们的物理引擎会计算具体的碰撞信息,关节,摩檫力阻力等计算, 结合物理的原理,计算出来我们的物理刚体的速度角速度等运动状态。 Step5: 根据基于全新的运动状态,把所有运动的物体向前迭代计算(线性速度角速度,摩擦力等),计算出这帧新的刚体的位置等信息; Step6: Unity Physic 通过 ExportPhysicsWorld System 把物理刚体的位置速度等,同步给节点Entity的LocalTransform组件与PhysicVelocity等组件,这样渲染的entity,就会跟着物理引擎的刚体同步移动; 对啦这里有个游戏开发交流小组里面聚集了一帮热爱学习游戏的零基础小白也有一些正在从事游戏开发的技术大佬欢迎你来交流学习。 DOTS中基于System与SystemGroup 树行结构来决定DOTS中的迭代顺序这个是DOTS中很重要的一个概念。Unity Physics将上面步骤与逻辑基于ECS设计思想,分别设计了相关的System与System Group,结构如下: --FixedStepSimulationSystemGroup --PhysicsSystemGroup --PhysicsInitializeGroup(System Group) --PhysicsSimulationGroup(SystemGroup) --PhysicsCreateBodyPairsGroup --PhysicsCreateContactsGroup --PhysicsCreateJacobiansGroup --PhysicsSolveAndIntegrateGroup --System: ExportPhysicsWorld 所有物理引擎的迭代计算都是基于FixedStepSimulationSystemGroup,即按照固定的时间间隔来迭代物理仿真保持物理引擎的一致性与稳定性。所有的物理引擎的仿真计算都放在PysicsSystemGroup下。PysicsSystemGroup包含PhysicsInitializeGroup ,PhysicsSimulationGroup 与一个ExportPhysicsWorld System。上面提到的Step1,在PhysicsInitializeGroup阶段完成 step2~step5在PhysicsSimulationGroup中完成, PhysicsSimulationGroup完成后物理引擎的一帧的迭代计算完成最后通过ExportPhysicsWorld的System把把物理引擎的内部数据同步到Entity的PhysicsVelocity, LocalTransform等ECS组件。在PhysicsSimulationGroup又有4个subgroup,他们分别对应step2~step5的执行步骤。 Unity Physics碰撞检测事件处理 当PhysicsSimulationGroup的分组执行完成以后就完成了整个物理引擎的仿真与迭代计算。仿真过程中会产生一个PhysicsWorld,物理世界里面的所有的刚体等相关物理数据(位置速度等)都可以通过PhysicsWorld得到最后还被导出到Entity的ECS组件里面。在物理仿真中所有的事件都会被保存到Simulation对象中,这些事件包括了我们常见的碰撞事件与触发器事件。传统模式下我们是通过回调函数来处理的DOTS模式下我们是在一个System环节内统一来处理这些事件。物理引擎的碰撞与触发事件处理流程如下: Step1: 编写一个System处理逻辑来处理物理事件; Step2: 指定好System执行的时机一定要在PhysicsSimulationGroup之前或者之后这样才能拿到碰撞事件的数据; Step3: 通过编写Job来遍历当前所有发生的碰撞事件然后编写每个碰撞事件的处理逻辑; Step4: 获取存储事件的Simulation单例传递给job来进行具体执行; 碰撞事件的处理: 当所有的模拟迭代计算完成后会把过程中的所有碰撞事件对存放到Simulation对象中我们可以通过(SystemBase|SystemAPI|EntityQuery).GetSingletonSimulationSingleton().AsSimulation()获取Simulation对象。 要处理所有的碰撞事件我们先编写一个System用来编写事件处理逻辑,然后编写一个Job,继承自IcollisionEventsJob这样就可以在Job中遍历所有的碰撞事件,每个碰撞事件都调用Job的Execute函数,在它里面来处理每个碰撞事件的逻辑。代码如下: [UpdateInGroup(typeof(FixedStepSimulationSystemGroup))] [UpdateBefore(typeof(PhysicsSimulationGroup))] // We are updating before PhysicsSimulationGroup - this means that we will get the events of the previous frame public partial struct GetNumCollisionEventsSystem : ISystem {[BurstCompile]public partial struct CountNumCollisionEvents : ICollisionEventsJob{public NativeReferenceint NumCollisionEvents;public void Execute(CollisionEvent collisionEvent){NumCollisionEvents.Value;}}[BurstCompile]public void OnUpdate(ref SystemState state){NativeReferenceint numCollisionEvents new NativeReferenceint(0, Allocator.TempJob);state.Dependency new CountNumCollisionEvents{NumCollisionEvents numCollisionEvents}.Schedule(SystemAPI.GetSingletonSimulationSingleton());// ...} } 触发器事件TriggerEvent处理: 触发器事件与碰撞事件类似我们只要编写一个ItriggerEventsJob就可以遍历当前所有的触发器事件了代码如下: [UpdateInGroup(typeof(FixedStepSimulationSystemGroup))] [UpdateAfter(typeof(PhysicsSimulationGroup))] // We are updating after PhysicsSimulationGroup - this means that we will get the events of the current frame. public partial struct GetNumTriggerEventsSystem : ISystem {[BurstCompile]public partial struct CountNumTriggerEvents : ITriggerEventsJob{public NativeReferenceint NumTriggerEvents;public void Execute(TriggerEvent collisionEvent){NumTriggerEvents.Value;}}[BurstCompile]public void OnUpdate(ref SystemState state){NativeReferenceint numTriggerEvents new NativeReferenceint(0, Allocator.TempJob);state.Dependency new CountNumTriggerEvents{NumTriggerEvents numTriggerEvents}.Schedule(SystemAPI.GetSingletonSimulationSingleton());// ...} } 今天的分享就到这里需要本篇文章完整的项目工具与源码的同学可以关注我们 视频教程如下 UnityDOTS专区​www.bycwedu.com/promotion_channels/1830504531​编辑
http://www.hkea.cn/news/14409401/

相关文章:

  • 电商企业门户网站建设方案外贸建站哪个最便宜
  • 济宁高端网站建设网站如何做直播轮播
  • 地州电视网站建设流程广州工商注册咨询
  • 杭州做产地证去哪个网站北京电力交易中心绿色电力交易实施细则
  • 公司云网站建设如何诚信网站平台建设
  • 网站开发如何洽谈客户深圳微信公众号开发
  • 分类网站有哪些软件定制开发的发展前景
  • 一个服务器做多个网站济南网站建设流程
  • 旅游公司网站 优帮云嵌入式软件开发兼职
  • 做企业网站有什么用东阳自适应网站建设
  • discuz可以做门户网站吗高端网址
  • seo网站外链工具网站设计与网页制作教程
  • 有祥云网站建设一个域名抢注的网站
  • 个人网站的服务器环境安装长春网站建设net
  • 网站可信认证在哪里做邯郸学校网站建设费用
  • 做软件项目需不需要有网站园林效果图网站
  • wordpress edit海南seo顾问服务
  • 巴南城乡建设网站建设一个征婚网站的程序
  • 昆明 做网站 vr旅行网站的建设目录
  • 微信小程序开发流程图嘉兴优化网站费用
  • 玉林网站设计供求信息网站开发背景
  • 青岛网站开发公司做网站好的网络公司
  • 外贸网站 设计安吉网站建设
  • 保山做网站建设恒峰网站建设问题
  • 企业部门网站建设流程电子商务网站设计思路
  • 建网站如果不买域名别人能不能访问唐山室内设计公司排名
  • 网站设计模板是什么做的物流网站
  • 网站访问大小 计算流量河南微网站建设公司
  • 营销型网站建设要点php 网站
  • 吉林省建设行业继续教续网站广东公路建设公司官网