一种基于Unity的物体避免碰撞的方法及终端技术

技术编号:21453523 阅读:42 留言:0更新日期:2019-06-26 04:39
本发明专利技术公开了一种基于Unity的物体避免碰撞的方法及终端,根据待移动物体所有的有效碰撞器计算所述待移动物体的碰撞盒信息,根据所述待移动物体的碰撞盒信息、投射中心及投射向量确定所述待移动物体在移动过程中的待爬升物体,根据所述待爬升物体和所述碰撞盒信息计算所述待移动物体下一帧的位置向量从而移动所述待移动物体,可以在不关注待移动物体的具体形状和结构特殊性的情况下实现待移动物体在移动过程中的自动爬升,从而避免碰撞,提高实现物体移动时自动爬升的代码的复用性,提高代码编辑的效率。

【技术实现步骤摘要】
一种基于Unity的物体避免碰撞的方法及终端
本专利技术涉及Unity
,尤其是涉及一种基于Unity的物体避免碰撞的方法及终端。
技术介绍
在Unity中,物体在移动过程中与其他物体碰撞,会出现停顿、不跟随主控等问题,导致用户操作体验欠佳,也可能在移动过程中与其他物体重叠导致穿模穿帮,目前的解决方法是在物体移动过程中采用物体自动爬升的方式来避免与其他物体的碰撞,但仍然存在一些问题。由于每个物体具有差异性,在Unity中针对某个物体编写的自动爬升方法存在特殊性,难以将该物体的自动爬升方法进行复用,这时若要实现其他物体移动时的自动爬升,只能通过重写自动爬升的方法或是改写自动爬升代码进行重用,代码复用性差,效率低下。
技术实现思路
本专利技术所要解决的技术问题是:提供一种基于Unity的物体避免碰撞的方法及终端,可以提高实现物体移动时自动爬升的代码的复用性,提高效率。为了解决上述技术问题,本专利技术采用的一种技术方案为:一种基于Unity的物体避免碰撞的方法,包括步骤:S1、根据待移动物体所有的有效碰撞器计算所述待移动物体的碰撞盒信息,所述碰撞盒信息包括碰撞盒中心及碰撞盒范围,并确定所述待移动物体的投射中心及投射向量;S2、根据所述待移动物体的碰撞盒信息、投射中心及投射向量确定所述待移动物体在移动过程中的待爬升物体;S3、根据所述待爬升物体和所述碰撞盒信息计算所述待移动物体下一帧的位置向量,根据所述下一帧的位置向量移动所述待移动物体。为了解决上述技术问题,本专利技术采用的另一种技术方案为:一种基于Unity的物体避免碰撞的终端,包括存储器、处理器及存储在存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现以下步骤:S1、根据待移动物体所有的有效碰撞器计算所述待移动物体的碰撞盒信息,所述碰撞盒信息包括碰撞盒中心及碰撞盒范围,并确定所述待移动物体的投射中心及投射向量;S2、根据所述待移动物体的碰撞盒信息、投射中心及投射向量确定所述待移动物体在移动过程中的待爬升物体;S3、根据所述待爬升物体和所述碰撞盒信息计算所述待移动物体下一帧的位置向量,根据所述下一帧的位置向量移动所述待移动物体。本专利技术的有益效果在于:根据待移动物体所有的有效碰撞器计算所述待移动物体的碰撞盒信息,根据所述待移动物体的碰撞盒信息、投射中心及投射向量确定所述待移动物体在移动过程中的待爬升物体,根据所述待爬升物体和所述碰撞盒信息计算所述待移动物体下一帧的位置向量从而移动所述待移动物体,可以在不关注待移动物体的具体形状和结构特殊性的情况下实现待移动物体在移动过程中的自动爬升,从而避免碰撞,提高实现物体移动时自动爬升的代码的复用性,提高代码编辑的效率。附图说明图1为本专利技术实施例的一种基于Unity的物体避免碰撞的方法的步骤流程图;图2为本专利技术实施例的一种基于Unity的物体避免碰撞的终端的结构示意图;图3为本专利技术实施例相机视角中待移动物体的投射中心及投射向量示意图;图4为本专利技术实施例相机视角中待移动物体的下一帧的位置向量示意图;图5为本专利技术实施例的一种待移动物体爬升前的示意图;图6为本专利技术实施例的一种待移动物体爬升中的示意图;图7为本专利技术实施例的一种待移动物体爬升后的示意图;图8为本专利技术实施例的一种待移动物体爬升前的示意图;图9为本专利技术实施例的一种待移动物体爬升中的示意图;图10为本专利技术实施例的一种待移动物体爬升后的示意图;标号说明:1、一种基于Unity的物体避免碰撞的终端;2、存储器;3、处理器。具体实施方式为详细说明本专利技术的
技术实现思路
、所实现目的及效果,以下结合实施方式并配合附图予以说明。本专利技术最关键的构思在于:根据待移动物体所有的有效碰撞器计算所述待移动物体的碰撞盒信息,根据所述碰撞盒确定所述待移动物体移动过程中的待爬升物体,并计算所述待移动物体下一帧的位置向量从而移动所述待移动物体。请参照图1,一种基于Unity的物体避免碰撞的方法,包括步骤:S1、根据待移动物体所有的有效碰撞器计算所述待移动物体的碰撞盒信息,所述碰撞盒信息包括碰撞盒中心及碰撞盒范围,并确定所述待移动物体的投射中心及投射向量;S2、根据所述待移动物体的碰撞盒信息、投射中心及投射向量确定所述待移动物体在移动过程中的待爬升物体;S3、根据所述待爬升物体和所述碰撞盒信息计算所述待移动物体下一帧的位置向量,根据所述下一帧的位置向量移动所述待移动物体。从上述描述可知,本专利技术的有益效果在于:根据待移动物体所有的有效碰撞器计算所述待移动物体的碰撞盒信息,根据所述待移动物体的碰撞盒信息、投射中心及投射向量确定所述待移动物体在移动过程中的待爬升物体,根据所述待爬升物体和所述碰撞盒信息计算所述待移动物体下一帧的位置向量从而移动所述待移动物体,可以在不关注待移动物体的具体形状和结构特殊性的情况下实现待移动物体在移动过程中的自动爬升,从而避免碰撞,提高实现物体移动时自动爬升的代码的复用性,提高代码编辑的效率。进一步的,所述步骤S1中根据待移动物体所有的有效碰撞器计算所述待移动物体的碰撞盒信息具体为:获取所述待移动物体的所有碰撞器,过滤不参与计算的碰撞器和属性为触发器的碰撞器,得到所述待移动物体所有的有效碰撞器;将所述待移动物体所有的有效碰撞器的中心相加除以有效碰撞器的个数得到所述碰撞盒中心的位置;将所述待移动物体的所有有效碰撞器的范围的并集作为所述碰撞盒范围。由上述描述可知,根据所述待移动物体的所有有效碰撞器计算碰撞盒的中心及范围,可以在不关注所述待移动物体的具体形状、结构的情况下,实现所述待移动物体的碰撞检测和自动爬升避免碰撞,提高了代码的复用性,扩大了适用性范围,提高工作效率。进一步的,所述步骤S1中确定所述待移动物体的投射中心及投射向量具体为:计算所述碰撞盒中心与所述待移动物体轴心的偏移向量;所述待移动物体的投射向量=所述待移动物体当前轴心所在位置向量+所述碰撞盒中心与所述待移动物体轴心的偏移向量+所述待移动物体的移动偏移向量-当前相机所在位置向量;所述待移动物体的投射中心=当前相机所在位置。由上述描述可知,根据上述公式计算所述待移动物体的投射向量和投射中心,可以根据实际碰撞盒形成的碰撞区域进行投射,从而检测出所述待移动物体移动后将会碰撞到的物体,而不是根据所述待移动物体的轴心进行投射,为待移动物体与碰撞盒的分离提供了支持,方便后续检测所述待移动物体移动后将会碰撞到的物体。进一步的,所述步骤S2具体为:根据所述投射中心和投射向量,获取所有落入所述碰撞盒范围的碰撞物体;通过碰撞盒射线检测得到所述待移动物体与每一碰撞物体的碰撞点位置;分别确定所述相机所在位置与每一碰撞物体的碰撞点位置的距离,并对所有距离进行排序;选取最小距离对应的碰撞物体作为所述待移动物体在移动过程中的待爬升物体。由上述描述可知,根据所述待移动物体的投射向量和投射中心确定落入所述碰撞盒范围的物体,这些物体即是会与移动后的所述待移动物体发生碰撞的物体,通过距离排序得到待爬升物体,可以迅速确定所述待移动物体需要爬升的物体,提高效率。进一步的,所述步骤S3具体为:将所述相机所在位置到所述待爬升物体的碰撞点的距离作为贴边距离,根据所述贴边距离进行贴边处理;计算所述待移动物体下一帧的位置向量:下一帧的位置向量=当前本文档来自技高网
...

【技术保护点】
1.一种基于Unity的物体避免碰撞的方法,其特征在于,包括步骤:S1、根据待移动物体所有的有效碰撞器计算所述待移动物体的碰撞盒信息,所述碰撞盒信息包括碰撞盒中心及碰撞盒范围,并确定所述待移动物体的投射中心及投射向量;S2、根据所述待移动物体的碰撞盒信息、投射中心及投射向量确定所述待移动物体在移动过程中的待爬升物体;S3、根据所述待爬升物体和所述碰撞盒信息计算所述待移动物体下一帧的位置向量,根据所述下一帧的位置向量移动所述待移动物体。

【技术特征摘要】
1.一种基于Unity的物体避免碰撞的方法,其特征在于,包括步骤:S1、根据待移动物体所有的有效碰撞器计算所述待移动物体的碰撞盒信息,所述碰撞盒信息包括碰撞盒中心及碰撞盒范围,并确定所述待移动物体的投射中心及投射向量;S2、根据所述待移动物体的碰撞盒信息、投射中心及投射向量确定所述待移动物体在移动过程中的待爬升物体;S3、根据所述待爬升物体和所述碰撞盒信息计算所述待移动物体下一帧的位置向量,根据所述下一帧的位置向量移动所述待移动物体。2.根据权利要求1所述的一种基于Unity的物体避免碰撞的方法,其特征在于,所述步骤S1中根据待移动物体所有的有效碰撞器计算所述待移动物体的碰撞盒信息具体为:获取所述待移动物体的所有碰撞器,过滤不参与计算的碰撞器和属性为触发器的碰撞器,得到所述待移动物体所有的有效碰撞器;将所述待移动物体所有的有效碰撞器的中心相加除以有效碰撞器的个数得到所述碰撞盒中心的位置;将所述待移动物体的所有有效碰撞器的范围的并集作为所述碰撞盒范围。3.根据权利要求1或2所述的一种基于Unity的物体避免碰撞的方法,其特征在于,所述步骤S1中确定所述待移动物体的投射中心及投射向量具体为:计算所述碰撞盒中心与所述待移动物体轴心的偏移向量;所述待移动物体的投射向量=所述待移动物体当前轴心所在位置向量+所述碰撞盒中心与所述待移动物体轴心的偏移向量+所述待移动物体的移动偏移向量-当前相机所在位置向量;所述待移动物体的投射中心=当前相机所在位置。4.根据权利要求1或2所述的一种基于Unity的物体避免碰撞的方法,其特征在于,所述步骤S2具体为:根据所述投射中心和投射向量,获取所有落入所述碰撞盒范围的碰撞物体;通过碰撞盒射线检测得到所述待移动物体与每一碰撞物体的碰撞点位置;分别确定所述相机所在位置与每一碰撞物体的碰撞点位置的距离,并对所有距离进行排序;选取最小距离对应的碰撞物体作为所述待移动物体在移动过程中的待爬升物体。5.根据权利要求4所述的一种基于Unity的物体避免碰撞的方法,其特征在于,所述步骤S3具体为:将所述相机所在位置到所述待爬升物体的碰撞点的距离作为贴边距离,根据所述贴边距离进行贴边处理;计算所述待移动物体下一帧的位置向量:下一帧的位置向量=当前相机所在位置向量–所述待爬升物体的轴心与所述碰撞盒中心的偏移向量+投射向量归一化*贴边距离;根据所述待移动物体下一帧的位置向量与所述待移动物体的当前位置向量之间的偏移移动所述待移动物体。6.一种基于Unity的物体避免碰撞的终端,包括存储...

【专利技术属性】
技术研发人员:刘德建陈宇翔林琛
申请(专利权)人:福建天晴数码有限公司
类型:发明
国别省市:福建,35

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1