当前位置: 首页 > 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.yayakq.cn/news/3114/

相关文章:

  • 电子商务网站建设期末试题网站开发整体流程
  • 外贸网站案例wordpress图片站模板
  • 简单网站建设软件有哪些方面app制作用什么软件
  • H5网站整站重庆景观设计公司有哪些
  • 网站建设静态部分总结彩票网站建设开发
  • seo网站基础建设移动应用软件开发
  • 优化网站推广排名百度一下百度搜索
  • 西安哪里做网站长沙的网站建设公司哪家好
  • 关于电子商务网站建设的论文电子商务网站建设的一般过程
  • 什么是空壳网站刷题网站建设
  • php网站后台验证码不显示设计机构网站
  • 做竞猜网站犯法吗php网站整合discuz
  • 杭州市规划建设网站亚马逊雨林探险之旅作文
  • 查房价的官方网站WordPress多站点恢复
  • 建设跨境电商网站设计社交网站
  • 装饰网站建设的方案行业门户网站建设方案
  • 莆田网站建设费用广东东莞出行最新政策
  • 什么是网站流量优化搜索优化整站优化
  • 外贸营销型网站策划中seo层面包括杭州网站关键词推广
  • dedecms做门户网站wordpress空间免费
  • 团队网站怎么做广州市网站建设公
  • 公司门户网站建设方案建设企业网站官网下载中心
  • 平乡县网站建设平台位置游戏网站建设方案
  • 四川住房城乡建设厅官网优化网站平台
  • 丹徒网站建设哪家好眼镜企业网站建设方案
  • 福田深圳网站建设资料库网站开发报价
  • 聊城企业网站建设费用韩国风格网站php源码
  • 建筑公司网站源码 开源 免费遵义公司网站制作哪家好
  • 气动喷枪网站建设html5 metro风格网站模板
  • 网站备案邮寄资料嵌入式开发要学哪些