本发明涉及信息可视化技术领域,尤其涉及一种限制物体移动的方法及终端。
背景技术:
目前,在unity中的平面区域限制物体的移动通常是通过编写固定算法的代码进行实现,但是由于针对某些特定物体的区域限制存在特殊性,并不能通过原来编写的固定算法的代码对特殊物体的移动进行限制,因此只能通过改写算法进行实现,从而导致代码的复用性很差,限制物体移动的实现不具有通用性。
技术实现要素:
本发明所要解决的技术问题是:提供一种限制物体移动的方法及终端,实现限制物体移动的通用性。
为了解决上述技术问题,本发明采用的一种技术方案为:
一种限制物体移动的方法,包括:
s1、创建限制区域,预设物体移动的偏移值,计算所述物体在未受限状态下根据所述偏移值移动后与所述限制区域的重叠区域;
s2、根据所述物体的位置以及所述重叠区域确定所述物体的实际偏移值。
为了解决上述技术问题,本发明采用的另一种技术方案为:
一种限制物体移动的终端,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
s1、创建限制区域,预设物体移动的偏移值,计算所述物体在未受限状态下根据所述偏移值移动后与所述限制区域的重叠区域;
s2、根据所述物体的位置以及所述重叠区域确定所述物体的实际偏移值。
本发明的有益效果在于:通过创建限制区域,预设物体移动的偏移值,计算所述物体在未受限状态下根据所述偏移值移动后与所述限制区域的重叠区域,根据所述物体的位置以及所述重叠区域确定所述物体的实际偏移值;避免通过手动改写代码来实现限制物体移动的麻烦,从而为限制物体移动提供了一个通用的解决方案,提高了代码的复用性。
附图说明
图1为本发明实施例的限制物体移动的方法流程图;
图2为本发明实施例的限制物体移动的终端结构示意图;
图3为本发明实施例的限制物体移动的方法的生成横向重叠区域的第一种情况的示意图;
图4为本发明实施例的限制物体移动的方法的生成横向重叠区域的第二种情况的示意图;
图5为本发明实施例的限制物体移动的方法的生成横向重叠区域的第三种情况的第一示意图;
图6为本发明实施例的限制物体移动的方法的生成横向重叠区域的第三种情况的第二示意图;
标号说明:
1、限制物体移动的终端;2、存储器;3、处理器。
具体实施方式
为详细说明本发明的技术内容、所实现目的及效果,以下结合实施方式并配合附图予以说明。
本发明最关键的构思在于:通过计算物体在未受限状态下根据预设偏移值移动后与限制区域的重叠区域,根据物体的位置以及重叠区域确定物体的实际偏移值,从而为限制物体移动提供了一个通用的解决方案。
请参照图1,一种限制物体移动的方法,包括:
s1、创建限制区域,预设物体移动的偏移值,计算所述物体在未受限状态下根据所述偏移值移动后与所述限制区域的重叠区域;
s2、根据所述物体的位置以及所述重叠区域确定所述物体的实际偏移值。
从上述描述可知,本发明的有益效果在于:通过创建限制区域,预设物体移动的偏移值,计算所述物体在未受限状态下根据所述偏移值移动后与所述限制区域的重叠区域,根据所述物体的位置以及所述重叠区域确定所述物体的实际偏移值;避免通过手动改写代码来实现限制物体移动的麻烦,从而为限制物体移动提供了一个通用的解决方案,提高了代码的复用性。
进一步的,所述s1中创建限制区域包括:
根据所述物体的移动平面类型、限制区域的坐标最小点以及坐标最大点创建与所述物体的移动平面类型对应的限制区域。
由上述描述可知,通过物体的移动平面类型、限制区域的坐标最小点和坐标最大点创建与所述物体的移动平面类型对应的限制区域,从而能够准确地确定所述限制区域的位置信息。
进一步的,所述s1中计算所述物体在未受限状态下根据所述偏移值移动后与所述限制区域的重叠区域包括:
根据所述偏移值判断所述物体在未受限状态下下一帧移动到的位置是否穿过所述限制区域或位于所述限制区域内;
若是,则计算所述物体在未受限状态下根据所述偏移值移动后与所述限制区域的重叠区域。
由上述描述可知,当所述物体在未受限状态下下一帧移动到的位置穿过所述限制区域或位于所述限制区域内时,则计算所述物体在未受限状态下根据所述偏移值移动后与所述限制区域的重叠区域,从而能够科学地计算出所述重叠区域,合理性强。
进一步的,所述计算所述物体在未受限状态下根据所述偏移值移动后与所述限制区域的重叠区域包括:
分别计算所述物体在未受限状态下根据所述偏移值移动后与所述限制区域的横向重叠区域和纵向重叠区域;
根据所述横向重叠区域和纵向重叠区域计算所述物体在未受限状态下根据所述偏移值移动后与所述限制区域的重叠区域。
由上述描述可知,通过计算所述横向重叠区域和纵向重叠区域确定所述物体与所述限制区域的重叠区域,提高了重叠区域获取的严谨性和完整性。
进一步的,所述步骤s1中所述限制区域有多个,每生成一个针对一限制区域的重叠区域,将所述重叠区域加入第一列表;
所述s2包括:
s21、针对所述第一列表中的每一重叠区域,执行:
根据所述物体的位置以及所述重叠区域对所述重叠区域对应的限制区域进行贴边处理,进行贴边处理后的限制区域可限制所述物体沿所述贴边移动;
根据所述物体的位置计算所述物体移动至贴边处理后的限制区域的偏移值,将所述偏移值加入第二列表;
s22、取所述第二列表中的偏移值中的最小值作为所述物体的实际偏移值。
由上述描述可知,通过上述方法,能够令物体在碰到多个限制区域时,提供一个合理的解决方法从而得到最终的实际偏移值,从而提高了在不同场景下限制物体移动的兼容性和通用性。
请参照图2,一种限制物体移动的终端,包括存储器、处理器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
s1、创建限制区域,预设物体移动的偏移值,计算所述物体在未受限状态下根据所述偏移值移动后与所述限制区域的重叠区域;
s2、根据所述物体的位置以及所述重叠区域确定所述物体的实际偏移值。
从上述描述可知,本发明的有益效果在于:通过创建限制区域,预设物体移动的偏移值,计算所述物体在未受限状态下根据所述偏移值移动后与所述限制区域的重叠区域,根据所述物体的位置以及所述重叠区域确定所述物体的实际偏移值;避免通过手动改写代码来实现限制物体移动的麻烦,从而为限制物体移动提供了一个通用的解决方案,提高了代码的复用性。
进一步的,所述s1中创建限制区域包括:
根据所述物体的移动平面类型、限制区域的坐标最小点以及坐标最大点创建与所述物体的移动平面类型对应的限制区域。
由上述描述可知,通过物体的移动平面类型、限制区域的坐标最小点和坐标最大点创建与所述物体的移动平面类型对应的限制区域,从而能够准确地确定所述限制区域的位置信息。
进一步的,所述s1中计算所述物体在未受限状态下根据所述偏移值移动后与所述限制区域的重叠区域包括:
根据所述偏移值判断所述物体在未受限状态下下一帧移动到的位置是否穿过所述限制区域或位于所述限制区域内;
若是,则计算所述物体在未受限状态下根据所述偏移值移动后与所述限制区域的重叠区域。
由上述描述可知,当所述物体在未受限状态下下一帧移动到的位置穿过所述限制区域或位于所述限制区域内时,则计算所述物体在未受限状态下根据所述偏移值移动后与所述限制区域的重叠区域,从而能够科学地计算出所述重叠区域,合理性强。
进一步的,所述计算所述物体在未受限状态下根据所述偏移值移动后与所述限制区域的重叠区域包括:
分别计算所述物体在未受限状态下根据所述偏移值移动后与所述限制区域的横向重叠区域和纵向重叠区域;
根据所述横向重叠区域和纵向重叠区域计算所述物体在未受限状态下根据所述偏移值移动后与所述限制区域的重叠区域。
由上述描述可知,通过计算所述横向重叠区域和纵向重叠区域确定所述物体与所述限制区域的重叠区域,提高了重叠区域获取的严谨性和完整性。
进一步的,所述步骤s1中所述限制区域有多个,每生成一个针对一限制区域的重叠区域,将所述重叠区域加入第一列表;
所述s2包括:
s21、针对所述第一列表中的每一重叠区域,执行:
根据所述物体的位置以及所述重叠区域对所述重叠区域对应的限制区域进行贴边处理,进行贴边处理后的限制区域可限制所述物体沿所述贴边移动;
根据所述物体的位置计算所述物体移动至贴边处理后的限制区域的偏移值,将所述偏移值加入第二列表;
s22、取所述第二列表中的偏移值中的最小值作为所述物体的实际偏移值。
由上述描述可知,通过上述方法,能够令物体在碰到多个限制区域时,提供一个合理的解决方法得到最终的实际偏移值,从而提高了在不同场景下限制物体移动的兼容性和通用性。
实施例一
请参照图1及图3至图6,一种限制物体移动的方法,包括:
s1、创建限制区域,预设物体移动的偏移值,计算所述物体在未受限状态下根据所述偏移值移动后与所述限制区域的重叠区域;
其中,所述创建限制区域包括:
根据所述物体的移动平面类型、限制区域的坐标最小点以及坐标最大点创建与所述物体的移动平面类型对应的限制区域;
具体的,创建限制区域的具体步骤如下:
(1)定义一个自定义类areainfo,所述areainfo用来存储限制区域的信息,包括坐标最小点、坐标最大点、实际限制区域最小点和实际限制区域最大点;
(2)封装一个类limitareaspeedcalculator,所述limitareaspeedcalculator包含有移动平面类型planetype和限制区域的限制区域集合,比如将该集合定义为dictionary,则该集合的具体格式可以为:dictionary<planetype,dictionary<int,areainfo>>;
(3)通过移动平面类型、坐标最小点和坐标最大点创建限制区域信息;所述移动平面类型有基于unity世界坐标的xy平面、yz平面和xz平面这三种移动平面类型;由于物体的移动是在上述平面上移动,所以对应的限制区域同样是二维区域,比如:如果物体的移动平面类型为xy平面,所述限制区域的坐标最小点可以为(x1,y1),坐标最大点可以为(x2,y2),根据坐标最小点和坐标最大点和xy平面的移动平面类型即可形成所述移动面上的矩形限制区域为直线x=x1,x=x2,y=y1,y=y2围成的矩形;
(4)在物体移动时,通过unity的物理系统collider获取所述物体的包围盒信息,从而计算出所述物体的碰撞体积得到当前帧所述物体的位置信息,根据当前帧所述物体的位置信息,得到所述限制区域集合中所有限制区域的实际限制区域位置信息,计算公式如下:
实际限制区域坐标最小点=当前帧所述物体相对于父物体的位置+坐标最小点;
实际限制区域坐标最大点=当前帧所述物体相对于父物体的位置+坐标最大点;
其中,所述当前帧所述物体相对于父物体的位置表示为:当前帧所述物体相对于父物体坐标(0,0,0)时的位置,使得限制区域的位置可以跟随当前帧所述物体相对于父物体的位置调整位置信息;当所述物体的父物体不存在时,则将当前帧所述物体相对于父物体的位置设置为(0,0,0)。
其中,计算所述物体在未受限状态下根据所述偏移值移动后与所述限制区域的重叠区域包括:
根据所述偏移值判断所述物体在未受限状态下下一帧移动到的位置是否穿过所述限制区域或位于所述限制区域内;
若是,则计算所述物体在未受限状态下根据所述偏移值移动后与所述限制区域的重叠区域;
其中,计算所述物体在未受限状态下根据所述偏移值移动后与所述限制区域的重叠区域还包括:分别计算所述物体在未受限状态下根据所述偏移值移动后与所述限制区域的横向重叠区域和纵向重叠区域;
根据所述横向重叠区域和纵向重叠区域计算所述物体在未受限状态下根据所述偏移值移动后与所述限制区域的重叠区域;
其中所述物体在未受限状态下根据所述偏移值移动后与所述限制区域的横向重叠区域有三种情况,分别为:
请参照图3,第一种情况为:所述物体位于所述限制区域的左侧并朝限制区域方向移动,在未受限状态下下一帧移动到的位置位于所述限制区域内;
请参照图4,第二种情况为:所述物体位于所述限制区域的右侧并朝限制区域方向移动,在未受限状态下下一帧移动到的位置位于所述限制区域内;
请参照图5和图6,第三种情况为:所述物体位于所述限制区域的左侧并朝限制区域方向移动,在未受限状态下下一帧移动到的位置穿过所述限制区域,或者所述物体位于所述限制区域的右侧并朝限制区域方向移动,在未受限状态下下一帧移动到的位置穿过所述限制区域;
所述物体在未受限状态下根据所述偏移值移动后与所述限制区域的纵向重叠区域的三种情况与上述横向重叠区域的情况基本一致,只是x轴的横向位置判断改为了y轴的纵向位置判断,不再赘述;
s2、根据所述物体的位置以及所述重叠区域确定所述物体的实际偏移值;
其中,所述步骤s1中所述限制区域有多个,每生成一个针对一限制区域的重叠区域,将所述重叠区域加入第一列表;
其中,所述s2包括:
s21、针对所述第一列表中的每一重叠区域,执行:
根据所述物体的位置以及所述重叠区域对所述重叠区域对应的限制区域进行贴边处理,进行贴边处理后的限制区域可限制所述物体沿所述贴边移动,避免所述物体进入限制区域;
根据所述物体的位置计算所述物体移动至贴边处理后的限制区域的偏移值,将所述偏移值加入第二列表;
具体的,可以根据当前帧所述物体的位置至下一帧移动到所述限制区域贴边的位置计算所述物体的运动轨迹,如果所述运动轨迹是所述物体从左向右移动至所述限制区域的贴边,那么则将所述偏移值设置为所述限制区域的左边,反之,将所述偏移值设置为所述限制区域的右边;如果所述运动轨迹是所述物体从下向上移动至所述限制区域的贴边,那么则将所述偏移值设置为所述限制区域的下面,反之,将所述偏移值设置为所述限制区域的上面;
s22、取所述第二列表中的偏移值中的最小值作为所述物体的实际偏移值。
其中,所述实际偏移值即所述物体朝所述限制区域移动时实际到达的位置。
实施例二
请参照图2,一种限制物体移动的终端1,包括存储器2、处理器3及存储在存储器2上并可在处理器3上运行的计算机程序,所述处理器3执行所述计算机程序时实现实施例一中的步骤。
综上所述,本发明提供的一种限制物体移动的方法及终端,通过创建限制区域,预设物体移动的偏移值,计算所述物体在未受限状态下根据所述偏移值移动后与所述限制区域的重叠区域,具体为:所述物体在未受限状态下下一帧移动到的位置穿过所述限制区域或位于所述限制区域内时,则计算所述物体在未受限状态下根据所述偏移值移动后与所述限制区域的重叠区域,其中所述限制区域的重叠区域通过横向重叠区域和纵向重叠区域的计算得到,其中计算得到的重叠区域严谨性高且方法合理;最后根据所述物体的位置以及所述重叠区域确定所述物体的实际偏移值,避免通过手动改写代码来实现限制物体移动的麻烦,从而为限制物体移动提供了一个通用的解决方案,提高了代码的复用性。
以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等同变换,或直接或间接运用在相关的技术领域,均同理包括在本发明的专利保护范围内。