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

大学网站开发模板免费下载wordpress评论富文本

大学网站开发模板免费下载,wordpress评论富文本,免费微信小程序开发者工具,温州网站关键词排名最近DOTS发布了正式的版本,同时基于DOTS的理念实现了一套高性能的物理引擎,今天我们来给大家分享和介绍一下这个物理引擎的使用。 Unity.Physics的设计哲学 Unity.Physics是基于DOTS设计思想的一个高性能C#物理引擎的实现, 包含了物理刚体的迭代计算与碰撞检测等查…

  最近DOTS发布了正式的版本,同时基于DOTS的理念实现了一套高性能的物理引擎,今天我们来给大家分享和介绍一下这个物理引擎的使用。

Unity.Physics的设计哲学

  Unity.Physics是基于DOTS设计思想的一个高性能C#物理引擎的实现, 包含了物理刚体的迭代计算与碰撞检测等查询。Unity.Physics的设计理念与PhyX和Havok有所不同,它们追求的是全特性的物理模拟,而Unity.Physics追求的是最常用的一些物理机制的实现,相比传统的物理引擎,它实现的是物理引擎的核心子集,这样导致比传统的物理引擎实现起来更简单与高效,同时能满足大部分的需求。

  传统的物理引擎在迭代计算的时候为了保证物理引擎计算结果的稳定性,缓存了很多的状态,这样就给整个系统设计增加了复杂度与开销。比如传统物理引擎还考虑到了网络游戏的情况下,你整个物理引擎的回滚与向前迭代计算。Unity.Physics就丢弃掉了这些,使得更容易控制和更高效。Unity.Physics物理引擎的迭代与计算都是基于Job与ECS机制的,由于没有cache计算中的物理状态,导致它的性能会比传统的物理引擎在某些方面性能要好。Unity.Physics的里面的物理参数与数据描述与传统的Havok物理引擎兼容,这样如果我们的项目中要追求物理引擎的全面性与稳定性,我们可以很容易的使用Havok等商业的物理引擎。在Unity DOTS里面,如果你获得了物理引擎Havok的授权,你可以直接在Unity DOTS中使用Havok物理引擎。

  Unity.Physics的源码目录结构如下:

  • Base: 包含了Unity.Pysics物理引擎使用的基本数据容器与数学计算;
  • Collistion: 包含了所有的碰撞检测与空间检测的算法代码;
  • DFG:包含了DataFlowGraph数据,在碰撞世界里面执行碰撞与设想检测;
  • Dynamics:包含了所有的物理引擎的运动计算,约束计算,迭代计算;
  • ECS: 包含了将ECS的组件数据导入,导出到Unity.Physics引擎中;
  • Extensions: 包含了一些工具性质的代码,扩展的一些组件,调试工具等;   

Unity.Physics的物理引擎的全局设置

  要对Unity DOTS的物理引擎做全局设置,我们可以给DOTS里面的SubScene添加一个”PhysicsStep”的组件实例。如下图所示:   

  • Simulation Type: 下拉选项包含Unity Physics, Havok Physics, None,你可以来选择物理引擎的内核,如果你获得了Havok的商业授权,你就可以看到Havok Physics的选项。
  • Gravity: 设置整个物理世界的张力加速度;
  • Solver Iteration Count: 设置每次迭代计算的次数,次数越大,计算结果越精确稳定,但是也消耗更多的性能;
  • Multi Threaded: 是否基于多线程来进行迭代物理计算,如果勾选上,物理引擎会使用较多的线程来进行迭代计算,否则就使用少量的线程来迭代计算。

Unity DOTS 物理引擎简单的案例

  接下来利用Unity DOTS来实现一个简单的物理引擎的案例,编写一个脚本TargetAuthoring.cs, 代码如下:

using Unity.Entities;
using UnityEngine;public struct Target : IComponentData
{public Entity TargetEntity;public float MaxDistance;
}public class TargetAuthoring : MonoBehaviour
{public GameObject TargetGameObject;public float MaxDistance;
}public class TargetAuthoringBaker : Baker<TargetAuthoring>
{public override void Bake(TargetAuthoring authoring){var component = new Target{MaxDistance = authoring.MaxDistance,TargetEntity = GetEntity(authoring.TargetGameObject)};AddComponent(component);}
}

  再新建一个MovingBodyAuthoring.cs的文件,代码如下:

using Unity.Entities;
using Unity.Mathematics;
using Unity.Physics;
using Unity.Transforms;
using UnityEngine;public struct MovingBody : IComponentData
{public float Velocity;
}public class MovingBodyAuthoring : MonoBehaviour
{public float Velocity;
}class MovingBodyAuthoringBaker : Baker<MovingBodyAuthoring>
{public override void Bake(MovingBodyAuthoring authoring){var component = new MovingBody{Velocity = authoring.Velocity};AddComponent(component);}
}public partial struct MovingBodySystem : ISystem
{public void OnUpdate(ref SystemState state){foreach (var(target, transform, moving, velocity) in SystemAPI.Query<RefRO<Target>, RefRO<LocalTransform>, RefRW<MovingBody>, RefRW<PhysicsVelocity>>().WithAll<MovingBody>()){var targetPosition = SystemAPI.GetComponent<LocalTransform>(target.ValueRO.TargetEntity).Position;var direction = math.normalize(targetPosition - transform.ValueRO.Position);if (math.distance(targetPosition, transform.ValueRO.Position) < target.ValueRO.MaxDistance)velocity.ValueRW.Linear = moving.ValueRO.Velocity * direction;elsevelocity.ValueRW.Linear = new float3(0, 0, 0);}}
}

打开SubScene场景,创作3个物体,一个地面(Cube),一个球体(Sphere),一个立方体节点(Target)。在球体上挂TargetAuthoring与MoveBodyAuthoring两个组件,并设置MoveBodyAuthoring的Velocity与MaxDistance为1与5,设置TargetAuthoring组件的的TargetGameObject为Target节点对象。   

   

运行,效果如下:

  

  今天的分享就到这里,需要本篇文章完整的项目工具与源码的同学可以+ 企.鹅.裙 428 540 563 


  下面是DOTS的VIP课程前18节视频,免费观看

Unity DOTS进阶与项目实战(B站18集)

第001课DOTS的环境安装与准备事项

第002课 DOTS的核心机制与概述

第003课DOTS的SubScene

第004课Component的概述与普通组件的Baker

第005课System与SystemGroup概述

第006课DOTS中的ECS核心概念总结

第007课Baking系列之Baking与Baker详解

第008课Baking系列之BakingSystem与BakingWorld详解

第009课FilterBakingOutput与PrefabsInBaking

第010课BlobAsset核心机制分析

第011课Aspect核心机制分析

第012课 StructChange核心机制详解

第013课Managed与Unmanaged Component详解与性能分析

第014课ShareComponent核心机制与性能分析

第015课CleanupComponent核心分析

第016课 Dynamic Buffer Component详解与分析

第017课Tag与Chunk Component详解与分析

第018课Enableable与Singleton组件详解与分析

http://www.yayakq.cn/news/768558/

相关文章:

  • 网站建设与维护网站备案条件
  • hmm船公司网站it建设人才网
  • 网站二级目录 修改路径wordpress怎么建立网站吗
  • 网页设计师联盟网站怎么申请域名注册备案平台
  • 女的和男做那个视频网站视频多的网站建设
  • 自己建网站买玩具如何在免费网站上做推扩
  • 郑州网站建设最便宜2023能用的磁力搜索引擎
  • 网站域名怎么查询销售口才900句
  • 百度云怎么做网站新格建站
  • 动漫设计工作室网站宣传片制作网站建设属于办公费吗
  • 深圳外贸网站公司驾校网站制作
  • php怎么做全网小视频网站wordpress单栏简洁
  • 建一家网站多少钱网站开发后的经验总结
  • 建设公司网站入账大连网站建设酷网科技
  • 湖北专业网站建设公司长泰网站建设
  • 企业网站的建立多少钱wordpress自适应自媒体主题
  • 网站宣传图免费在线网页代理
  • 蝙蝠做等级的网站济南seo优化
  • 专业的网站建设联系方式湛江seo排名
  • 如何查询企业有没有做网站小组用jsp做的网站论文
  • php 移动网站开发查商标官网
  • 网站建设业务市场营销论文湖南省住房与城乡建设网站
  • 饲料公司网站建设方案哈尔滨怎样快速建站
  • 织梦网站模板更换如何建设网站济南兴田德润简介电话
  • 深圳企业网站制作广告公司怎么设置网站关键字
  • 成都市建设厅网站网站首页的功能
  • 西宁市城乡规划和建设局网站阳江问政平台官网入口
  • 襄阳市网站建设上海阳性增多
  • 登陆空间商网站七牛 wordpress
  • 网站首页的名字通常是python新手代码