CN111167117A - 一种虚幻对象的随机行走方法及其控制系统、存储介质 - Google Patents

一种虚幻对象的随机行走方法及其控制系统、存储介质 Download PDF

Info

Publication number
CN111167117A
CN111167117A CN201911382574.9A CN201911382574A CN111167117A CN 111167117 A CN111167117 A CN 111167117A CN 201911382574 A CN201911382574 A CN 201911382574A CN 111167117 A CN111167117 A CN 111167117A
Authority
CN
China
Prior art keywords
objects
walking
phantom
straight line
line segment
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201911382574.9A
Other languages
English (en)
Other versions
CN111167117B (zh
Inventor
罗威
许秋子
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shenzhen Realis Multimedia Technology Co Ltd
Original Assignee
Shenzhen Realis Multimedia Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Shenzhen Realis Multimedia Technology Co Ltd filed Critical Shenzhen Realis Multimedia Technology Co Ltd
Priority to CN201911382574.9A priority Critical patent/CN111167117B/zh
Publication of CN111167117A publication Critical patent/CN111167117A/zh
Application granted granted Critical
Publication of CN111167117B publication Critical patent/CN111167117B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/55Controlling game characters or game objects based on the game progress
    • A63F13/57Simulating properties, behaviour or motion of objects in the game world, e.g. computing tyre load in a car race game
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/40Processing input control signals of video game devices, e.g. signals generated by the player or derived from the environment
    • A63F13/42Processing input control signals of video game devices, e.g. signals generated by the player or derived from the environment by mapping the input signals into game commands, e.g. mapping the displacement of a stylus on a touch screen to the steering angle of a virtual vehicle
    • A63F13/428Processing input control signals of video game devices, e.g. signals generated by the player or derived from the environment by mapping the input signals into game commands, e.g. mapping the displacement of a stylus on a touch screen to the steering angle of a virtual vehicle involving motion or position input signals, e.g. signals representing the rotation of an input controller or a player's arm motions sensed by accelerometers or gyroscopes
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/80Special adaptations for executing a specific game genre or game mode
    • A63F13/825Fostering virtual characters
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F2300/00Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
    • A63F2300/80Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game specially adapted for executing a specific type of game
    • A63F2300/8082Virtual reality

Abstract

一种虚幻对象的随机行走方法及其控制系统、存储介质,其中随机行走方法包括:获取虚幻对象的行走路线,检查得到虚幻对象所在任务场景中其他对象的静止位置或移动路线,根据其他对象的静止位置或移动路线计算与虚幻对象的行走路线之间的最小距离,将最小距离和预设的安全距离进行比较,根据比较结果控制虚幻对象的行走状态。由于根据其他对象的静止位置或移动路线计算与虚幻对象的行走路线之间的最小距离,如此可以事先对虚幻对象和其他对象进行距离预判,消除即将发生碰撞的可能性,彻底避免任意两个虚幻对象之间存在碰撞或卡住的潜在情形发生。

Description

一种虚幻对象的随机行走方法及其控制系统、存储介质
技术领域
本发明涉及虚幻游戏的开发技术领域,具体涉及一种虚幻对象的随机行走方法及其控制系统、存储介质。
背景技术
游戏AI(artificial intelligence,人工智能)已成为目前讨论较多的主题,随着游戏中画质与音效的稳步提高和改善,游戏控制的玩家(即游戏中的虚幻对象)的行动以“聪明的”方式改变自己游走状态的情形变得越来越明显。单位活动AI(Unit BehavioralAI)不总是标准含义上的AI,而是为设计出具有提供某种挑战或某种真实体现的生命特征的个体。在游戏中,只站在一处、从不移动的警卫会显得非常不真实,不过在创建一个例行程序之后会使他不时的朝四周张望,或变换他的姿势,他会看起来更具活力;通过创建一个在预设的路径上行走的警卫偶然停在站岗的警卫前,并好像与他谈话这样的情景,极大地提高单位活动AI的真实行为体现效果,从而形成具有人工智能特性的AI虚幻对象。在单位活动AI中,动作分为反应性与自发性两类。在反应性的方式下,虚幻对象随时会对自身环境中的变化做出响应,做出行动时并不依赖于自身环境中的任何变化;在自发性的方式下,虚幻对象有意识地去做一些事情,对于创建生命的感觉极为重要。
在虚幻类的游戏中,无论是虚幻对象的反应性行为或者自发性行为,都需要为每个单位活动AI设置一组非警报状态时的预设移动路径,随机移动至预设区域,当路过其他对象以及与其他对象移动到预设目的地时,偶然停在其他单位旁,使其随意地在行走,但是看起来又不是在毫无目的地漫游。那么,单位活动AI的行动真正让一个游戏单位看起来很聪明的是他们的行动,如果他们以玩家可能的方式移动,或在玩家可能的情景下做如闪避、避障、避撞这样的动作,那么看起来会很聪明。
比如,在虚幻4引擎中,往往会设置一个单位活动AI的接口函数MoveTo,函数内的参数是游走的终点坐标,该接口函数可以让单位活动AI根据场景中可行走的网格路径自动寻路走到这个终点坐标,但是可行走的网格路径是依据静态场景而生成的,无法依据动态的单位活动AI来自动生成,使得虚幻对象可以绕开柱子、墙壁等,但是绕不开会动的其它虚幻对象或者角色。在虚幻场景中,往往需要利用众多的虚幻对象进行随机巡逻,他们随机乱跑的时候两个单位活动AI各自行进到自己的终点坐标过程中,因路线较差而可能会发生相撞,甚至在道路过窄或者完全正面撞上时,还会被完全卡住,从而造成单位活动AI无法执行下一步行为逻辑的情形。因此,在出现虚幻对象相撞或者卡住的情形发生时,将会马上给游戏体验者带来一些对象不够聪明的感受,直接影响用户的操控体验。
发明内容
本发明主要解决的技术问题是如何控制虚幻对象的随机行走行为,来避免虚幻对象相撞或卡住的情形发生,从而提高用户的游戏操作体验。
根据第一方面,一种实施例中提供一种虚幻对象的随机行走方法,其特征在于,包括:获取虚幻对象的行走路线,所述行走路线包括所述虚幻对象的当前位置和将要到达的终点位置;检查得到所述虚幻对象所在任务场景中其他对象的静止位置或移动路线,根据所述其他对象的静止位置或移动路线计算与所述虚幻对象的行走路线之间的最小距离;将所述最小距离和预设的安全距离进行比较,根据比较结果控制所述虚幻对象的行走状态。
所述根据所述其他对象的静止位置或移动路线计算与所述虚幻对象的行走路线之间的最小距离,包括:若所述其他对象处于静止状态,则将所述其他对象的静止位置映射到所述虚幻对象的行走路线上,比较各个映射路径的距离并从中确定最小距离;若所述其他对象处于移动状态,则将所述其他对象的移动路线映射到所述虚幻对象的行走路线上,在所述移动路线和所述行走路线不相交时比较各个映射路径的距离并从中确定最小距离,在所述移动路径和所述行走路线相交时确定最小距离为零。
所述将所述其他对象的静止位置映射到所述虚幻对象的行走路线上,比较各个映射路径的距离并从中确定最小距离,包括:建立映射坐标系,生成所述其他对象的静止位置的坐标,以及生成所述虚幻对象的当前位置和终点位置之间的第一直线段;计算所述其他对象的静止位置的坐标与所述第一直线段的垂直距离,或者与所述第一直线段的端点之间的线性距离;将计算得到的垂直距离和线性距离作为各个映射路径的距离,并从中确定得到所述最小距离。
所述将所述其他对象的移动路线映射到所述虚幻对象的行走路线上,在所述移动路线和所述行走路线不相交时比较各个映射路径的距离并从中确定最小距离,在所述移动路径和所述行走路线相交时确定最小距离为零,包括:建立映射坐标系,生成所述虚幻对象的当前位置和终点位置之间的第一直线段,以及生成所述其他对象的移动路线上当前位置和终点位置之间的第二直线段;在判断所述第一直线段和所述第二直线段平行时,计算所述第一直线段和所述第二直线段之间的平行距离;在判断所述第一直线段和所述第二直线段不平行且不相交时,计算所述第一直线段的端点到所述第二直线段的垂直距离或者与所述第二线段的端点之间的线性距离,计算所述第二直线段的端点到所述第一直线段的垂直距离或者与所述第一直线段的端点之间的线性距离;将计算得到的平行距离、垂直距离和线性距离作为各个映射路径的距离,从中确定得到所述最小距离;在判断所述第一直线段和所述第二直线段相交时,将所述最小距离确定为零。
所述将所述最小距离和预设的安全距离进行比较,根据比较结果控制所述虚幻对象的行走状态,包括:预设所述安全距离为所述虚幻对象的自身形体宽度;当所述最小距离小于所述安全距离时,判定所述虚幻对象和所述其他对象存在相撞风险,则控制所述虚幻对象停止行走以中止所述虚幻对象的行走路线直至与所述其他对象之前不存在相撞风险,或者为所述虚幻对象设定新的终点位置以改变所述虚幻对象的行走路线;当所述最小距离大于或等于所述安全距离时,控制所述虚幻对象以所述行走路线所指示的方向进行行走。
根据第二方面,一种实施例中提供一种随机行走的控制系统,包括:多个虚幻对象,所述虚幻对象用于在同一个任务场景中进行随机行走;任务蓝图,用于在所述任务场景中为每个所述虚幻对象配置行走路线;处理器,用于从所述任务蓝图中获取任意一个所述虚幻对象的行走路线,并根据上述第一方面中所述的随机行走方法控制该虚幻对象的行走状态;该虚幻对象之外的所述虚幻对象为所述任务场景中的其他对象。
所述任务蓝图包括多个黑板,分别对应于各个所述虚幻对象,所述黑板用于记录对应所述虚幻对象的当前位置和将要到达的终点位置,以根据所述虚幻对象的当前位置和终点位置形成所述虚幻对象的行走路线,或者形成所述其他对象的静止位置或移动路线。
所述的控制系统还包括任务接口模块,所述任务接口模块设置于所述任务蓝图和所述处理器之间,用于根据所述任务蓝图标记处于移动状态的虚幻对象,使得所述处理器读取所述任务接口模块的标记情况且检查得到所述任务场景中的所述其他对象的静止位置或移动路线。
所述的控制系统还包括显示器,所述显示器与所述处理器连接,用于对所述虚幻对象的行走状态进行实时显示。
根据第三方面,一种实施例中提供一种计算机可读存储介质,包括程序,所述程序能够被处理器执行以实现如上述第一方面中所述的随机行走方法。
本申请的有益效果是:
依据上述实施例的一种虚幻对象的随机行走方法及其控制系统、存储介质,其中随机行走方法包括:获取虚幻对象的行走路线,检查得到虚幻对象所在任务场景中其他对象的静止位置或移动路线,根据其他对象的静止位置或移动路线计算与虚幻对象的行走路线之间的最小距离,将最小距离和预设的安全距离进行比较,根据比较结果控制虚幻对象的行走状态。第一方面,由于根据其他对象的静止位置或移动路线计算与虚幻对象的行走路线之间的最小距离,如此可以事先对虚幻对象和其他对象进行距离预判,消除即将发生碰撞的可能性,彻底避免两个虚幻对象之间存在碰撞或卡住的潜在情形发生;第二方面,由于最小距离的比较对象是安全距离(自身形体宽度),如此可以避免接近重叠或者接近隔离的显示情形发生,利用保证两个虚幻对象时刻处于互为个体独立的位置,增强游戏人物真实再现的显示效果;第三方面,在计算静止位置与虚幻对象的行走路径之间的最小距离时,充分利用了点到直线段的映射原理,利于快速地从各个映射路径中确定出最小距离;第四方面,在计算移动路线与虚幻对象的行走路径之间的最小距离时,充分利用了直线段到直线段的映射原理,如此可以减少运算量,提高游戏后台运算处理的性能;第五方面,本申请将随机行走方法应用于随机行走的控制系统中,结合任务蓝图和任务场景的实际需要合理控制虚幻对象的行走状态,既利用了当前游戏平台上的任务策略,也利于用最小软硬件改变实现平台的功能升级要求;第六方面,控制系统根据随机行走的实施策略不仅可以对单个虚幻对象进行行走状态的控制,还可以按照一样策略同时对任务场景内的多个虚幻对象进行控制,从而达到多任务多对象的控制要求;第七方面,由于在任务蓝图和处理器之间设置了任务接口模块,使得处理器检查其他对象的静止位置或移动路线的过程变得更加容易,也充分利用了虚幻4引擎的自带接口函数,增强了实施方法与引擎之间的匹配性能。
附图说明
图1为本申请中随机行走的控制系统的结构示意图;
图2为另一个实施例中控制系统的结构示意图;
图3为本申请中虚幻对象的随机行走方法的流程图;
图4为根据其他对象的静止位置或移动路线计算与虚幻对象的行走路线之间的最小距离的流程图;
图5为根据其他对象的静止位置映射确定最小距离的流程图;
图6为根据其他对象的移动路线映射确定最小距离的流程图;
图7为控制虚幻对象的行走状态的流程图;
图8为任务场景中各个虚幻对象的行走状态示意图;
图9为确定虚幻对象之间最小距离的原理示意图。
具体实施方式
下面通过具体实施方式结合附图对本发明作进一步详细说明。其中不同实施方式中类似元件采用了相关联的类似的元件标号。在以下的实施方式中,很多细节描述是为了使得本申请能被更好的理解。然而,本领域技术人员可以毫不费力的认识到,其中部分特征在不同情况下是可以省略的,或者可以由其他元件、材料、方法所替代。在某些情况下,本申请相关的一些操作并没有在说明书中显示或者描述,这是为了避免本申请的核心部分被过多的描述所淹没,而对于本领域技术人员而言,详细描述这些相关操作并不是必要的,他们根据说明书中的描述以及本领域的一般技术知识即可完整了解相关操作。
另外,说明书中所描述的特点、操作或者特征可以以任意适当的方式结合形成各种实施方式。同时,方法描述中的各步骤或者动作也可以按照本领域技术人员所能显而易见的方式进行顺序调换或调整。因此,说明书和附图中的各种顺序只是为了清楚描述某一个实施例,并不意味着是必须的顺序,除非另有说明其中某个顺序是必须遵循的。
本文中为部件所编序号本身,例如“第一”、“第二”等,仅用于区分所描述的对象,不具有任何顺序或技术含义。而本申请所说“连接”、“联接”,如无特别说明,均包括直接和间接连接(联接)。
实施例一、
请参考图1,本申请公开一种随机行走的控制系统,其主要包括多个虚幻对象(如附图标记A1、A2、A3),以及任务蓝图12和处理器1,下面分别说明。
虚幻对象(如A1、A2或A3)可以是游戏中的角色或单元活动AI,其能够自发性地或者反应性地执行一些智能化的动作,比如行走、漫游、警戒、防御、攻击等,使其看起来是一个聪明的单元,那么本实施例中的每个虚幻对象用于在同一个任务场景11中进行随机行走。
任务蓝图12是配置每个虚幻对象执行动作的基础性功能模块,其用于在任务场景11中为每个虚幻对象配置行走路线,从而使得虚幻对象在任务场景中可以按照任务蓝图12中配置的行走路线进行移动。需要说明的是,任务蓝图12中为每个虚幻对象配置的行走路线不是一成不变的,可以根据任务场景11的变化而进行随意调整,也可以根据处理器13的处理结果而实时性调整。
处理器13是数据运算处理的功能部件,用于从任务蓝图12中获取任意一个虚幻对象的行走路线,并预先设置的随机行走方法控制该虚幻对象的行走状态。需要注意的是,该虚幻对象之外的虚幻对象为任务场景中的其他对象。
例如图1,任务场景11中存在虚幻对象A1、A2和A3,若以虚幻对象A1为目标对象且控制其行走状态,那么A2、A3将被作为相对于A1的其他对象,在控制虚幻对象A1沿着箭头所指示的行走路线进行移动时,应当避免与静止状态的其他对象A2和移动状态的其他对象A3之间造成相撞或卡住的情形发生。
需要说明的是,避免多个虚幻对象之间造成相撞或卡住的情形发生,关键在于使用预先设置的随机行走方法对虚幻对象进行行走状态的控制。这里提及的随机行走方法可以参考下文公开的实施例二,在实施例二中仅以某一个虚幻对象作为目标对象进行随机行走控制,那么其他的虚幻对象的控制过程也可以参考这一实施例。
在本实施中,任务蓝图12包括多个黑板(图中未示意),分别对应于各个虚幻对象,这里的黑板用于记录对应虚幻对象的当前位置和将要到达的终点位置,以根据虚幻对象的当前位置和终点位置形成虚幻对象的行走路线,或者形成其他对象的静止位置或移动路线。
例如图1,任务蓝图12中可以包括针对于虚幻对象A1的黑板,该黑板记录有当前位置p1和终点位置p1′。如果虚幻对象A1作为目标对象,那么通过当前位置p1和终点位置p1′之间的连线就可以简单地形成该虚幻对象A1的行走路线。如果虚幻对象A1是作为虚幻对象A2或A3的其他对象(即以A2或A3作为目标对象的情形),那么根据当前位置p1可以形成其他对象A1的静止位置,以及根据当前位置p1和终点位置p1′之间的连线形成其他对象A1的移动路线。
需要有说明的是,处理器13控制虚幻对象的行走状态时,可以通过保持任务蓝图12中对应黑板的记载位置来维持原行走路线不变,还可以通过修改任务蓝图12中对应黑板的记载位置来中止或改变原行走路线。其中,通过删除某一个虚幻对象的终点位置或者重设某一个虚幻对象的终点位置,就可以达到中止或改变该虚幻对象的行走路线的目的。
在另一个实施例中,参见图2,控制系统1还包括任务接口模块14,该任务接口模块14设置于任务蓝图12和处理器13之间,用于根据任务蓝图12标记处于移动状态的虚幻对象,使得处理器13读取任务接口模块14的标记情况且检查得到任务场景11中的其他对象的静止位置或移动路线。
例如,任务接口模块14可以是虚幻4引擎中自带的接口函数MoveTo,其参数是终点位置的坐标,若一个虚幻对象正在使用接口函数MoveTo,则表明其处于移动状态且向着自己的终点位置进行移动,而未使用接口函数MoveTo的虚幻对象则认为其处于静止状态。那么,处理器13在读取接口函数MoveTo时就可以方便地根据其他对象的静止状态或移动状态判断他的静止位置或移动路线。
进一步地,参见图2,控制系统1还包括显示器15,该显示器15与处理器13连接,用于对虚幻对象的行走状态进行实时显示。具体地,处理器13从任务蓝图12获取各个虚幻对象的位置信息,根据位置信息将各个虚幻对象准确地投影到任务场景11中,从而使得显示器15在从处理器13获得位置信息和投影信息之后,对任务场景11所对应的画面进行展示。
本领域的技术人员可以理解,利用本实施例中公开的控制系统可以达到以下技术优势:(1)将随机行走方法应用于随机行走的控制系统中,结合任务蓝图和任务场景的实际需要合理控制虚幻对象的行走状态,既利用了当前游戏平台上的任务策略,也利于用最小软硬件改变实现平台的功能升级要求;(2)控制系统根据随机行走的实施策略不仅可以对单个虚幻对象进行行走状态的控制,还可以按照一样策略同时对任务场景内的多个虚幻对象进行控制,从而达到多任务多对象的控制要求;(3)在任务蓝图和处理器之间设置了任务接口模块,使得处理器检查其他对象的静止位置或移动路线的过程变得更加容易,也充分利用了虚幻4引擎的自带接口函数,增强了实施方法与引擎之间的匹配性能。
实施例二、
请参考图3,在实施例一中公开的控制系统的基础上,本申请公开一种虚幻对象的随机行走方法,其可以借助实施例一中的处理器13来具体实施,该随机行走方法包括步骤S100-S300,下面分别说明。
步骤S100,获取虚幻对象的行走路线,行走路线包括虚幻对象的当前位置和将要到达的终点位置。
例如图8,在一个任务场景中,可以将虚幻对象A1作为目标对象,那么同一任务场景内的虚幻对象A2、A3就认为是A1的其他对象。获取虚幻对象A1的当前位置p1和将要到达的终点位置p1′之后,就能依据当前位置p1至终点位置p1′之间的连线p1—p1′来得到虚幻对象A1的行走路线。
步骤S200,检查得到虚幻对象所在任务场景中其他对象的静止位置或移动路线,根据其他对象的静止位置或移动路线计算与虚幻对象的行走路线之间的最小距离。
例如图8,相对于虚幻对象A1,存在其他对象A2、A3。其他对象A2处于静止状态,且静止位置为p2;其他对象A3处于移动状态,其移动路线为当前位置p2和终点位置p2′之间的连线p2—p2′。那么,根据静止位置p2和行走路线p1—p1′即可计算其他对象A2到虚幻对象A1的行走路线之间的最小距离,根据移动路线p2—p2′和行走路线p1—p1′即可计算其他对象A3的移动路线到虚幻对象A1的行走路线之间的最小距离。
步骤S300,将最小距离和预设的安全距离进行比较,根据比较结果控制虚幻对象的行走状态。具体地,当最小距离小于安全距离时,可以控制虚幻对象中止或者改变当前的行走路线;当最小距离大于或等于安全距离时,可以控制循环对象以当前的行走路线进行前进。如此可以避免两个虚幻对象在各自的位置或者行进过程中因路线距离过小而发生碰撞或卡住的情形。
需要说明的是,任务场景中可能存在多个其他对象,那么就需要计算虚幻对象与每个其他对象之间的最小距离。若存在一个最小距离小于安全距离,那么就需要中止或改变虚幻对象的行走状态,从而避免虚幻对象与所有其他对象之间的潜在碰撞情形发生。
在本实施例中,参见图4,上述的步骤S200可以具体包括步骤S210-S240,分别说明如下。
步骤S210,检查得到虚幻对象所在任务场景中其他对象的静止位置或移动路线。
步骤S220,判断其他对象是否处于静止状态,若是则进入步骤S230,若否则确定其他对象处于移动状态,则进入步骤S240。
步骤S230,在其他对象处于静止状态的情况下,将其他对象的静止位置映射到虚幻对象的行走路线上,比较各个映射路径的距离并从中确定最小距离。在一个具体实施例中,参见图5,该步骤S230可以包括步骤S231-S233,分别说明如下。
步骤S231,建立映射坐标系,生成其他对象的静止位置的坐标,以及生成虚幻对象的当前位置和终点位置之间的第一直线段。
比如建立图9中的映射坐标系,将图8中的虚幻对象A1和其他对象A2分别映射到该坐标系中,得到虚幻对象A1的当前位置坐标p1和终点位置坐标p1′,且生成第一直线段p1—p1′;还可以得到其他对象A2的静止位置的坐标p2。
步骤S232,计算其他对象的静止位置的坐标与第一直线段的垂直距离,或者与第一直线段的端点之间的线性距离。由于坐标p2到第一直线段p1—p1′之间的最小距离可能在是落在线段上的垂直距离,也可能是与线段端点之间的距离,所以这里要对这些距离进行计算。
步骤S233,将计算得到的垂直距离和线性距离作为各个映射路径的距离,并从中确定得到最小距离。
在该具体实施例中,可以将步骤S231-S233的过程理解为一个计算点到线段距离的函数CheckOneLineOnPoint,其需要输入三个结构体类型的参数,分别为坐标p1(X1,Y1)、坐标p1′(X′1,Y′1)和坐标p2(X2,Y2)。利用计算斜率的函数Slope计算第一直线段p1—p1′的斜率k1=(Y1-Y′1)/(X1-X′1)和截距b1=Y1–(k1*X1),由此可以得到斜率k1、截距b1的直线L1。假定有一条直线L2经过坐标p2,且与直线L1相互垂直,则直线L2的斜率k2=(-1)/k1,直线L2的截距b2=Y2-k2*X2。直线L1和直线L2的交点处满足k1*x+b1=k2*x+b2,则可以计算出交点的x值,且表示为x=(b2-b1)/(k1-k2)。若交点的x值在X1和X′1之间,则表示坐标p2到第一直线段p1—p1′的垂直距离在该直线段上,且能够计算出交点的y值,垂直距离就是坐标p2到交点(x,y)的长度,此时也是最小距离。若交点的x值不在X1和X′1之间,则计算坐标p2分别到第一直线段端点的坐标p1和坐标p1′的线性距离,那么此时线性距离中的最小值就是最小距离。由此可知,在垂直距离、线性距离中确定最小值就可以得到点到线段的最小距离。
步骤S240,若其他对象处于移动状态,则将其他对象的移动路线映射到虚幻对象的行走路线上,在移动路线和行走路线不相交时比较各个映射路径的距离并从中确定最小距离,在移动路径和行走路线相交时确定最小距离为零。在一个具体实施例中,参见图6,该步骤S240可以包括步骤S241-S244,分别说明如下。
步骤S241,建立映射坐标系,生成虚幻对象的当前位置和终点位置之间的第一直线段,以及生成其他对象的移动路线上当前位置和终点位置之间的第二直线段。
比如建立图9中的映射坐标系,将图8中的虚幻对象A1和其他对象A3分别映射到该坐标系中,得到虚幻对象A1的当前位置坐标p1和终点位置坐标p1′,且生成第一直线段p1—p1′;得到其他对象A3的当前位置坐标p3和终点位置坐标p3′,且生成第二直线段p3—p3′。
步骤S242,在判断第一直线段和第二直线段平行时,计算第一直线段和第二直线段之间的平行距离;在判断第一直线段和第二直线段不平行且不相交时,计算第一直线段的端点到第二直线段的垂直距离或者与第二线段的端点之间的线性距离,计算第二直线段的端点到第一直线段的垂直距离或者与第一直线段的端点之间的线性距离。
步骤S243,将计算得到的平行距离、垂直距离和线性距离作为各个映射路径的距离,从中确定得到最小距离。
步骤S244,在判断第一直线段和第二直线段相交时,将最小距离确定为零。
在该具体实施例中,可以将步骤S241-S244的过程理解为一个计算线段到线段距离的函数CheckTwoLine,其需要输入四个结构体类型的参数,分别为坐标p1(X1,Y1)、坐标p1′(X′1,Y′1)、坐标p3(X3,Y3)和坐标p′3(X′3,Y′3)。利用计算斜率的函数Slope计算第一直线段p1—p1′的斜率k1=(Y1-Y′1)/(X1-X′1)和截距b1=Y1–(k1*X1),由此可以得到斜率k1、截距b1的直线L1;还可以计算第二直线段p3—p3′的斜率k3=(Y3-Y′3)/(X3-X′3)和截距b3=Y3–(k3*X3),由此可以得到斜率k3、截距b3的直线L3。若斜率k1和斜率k3相等则表明直线L1和直线L3平行,此时截距b1和截距b3差值的绝对值就是平行距离。若斜率k1和斜率k3不相等,则表明直线L1和直线L3存在交点,交点处满足k1*x+b1=k3*x+b3,则可以计算出交点的x值,且表示为x=(b3-b1)/(k1-k3)。若交点的x值在X1和X′1之间,且在X3和X′3之间,则表示第一直线段p1—p1′和第二直线段p3—p3′相交,那么最小距离为零。若交点的x值不在X1和X′1之间,或者不在X3和X′3之间,则表示第一直线段p1—p1′和第二直线段p3—p3′不相交,两个直线段之间的最小距离就是点到线段的垂直距离或者线性距离。关于点到线段的垂直距离或者线性距离的计算方法可以参考步骤S230中提及的函数CheckOneLineOnPoint,这里不再进行赘述;为简化计算,仅需要计算坐标p1′到第二直线段p3—p3′的垂直距离和线性距离,计算坐标p3和坐标p3′分别到第一直线段p1—p1′的垂直距离和线性距离即可。由此可知,在两个线段不相交时只要从平行距离、垂直距离和线性距离中确定出最小值即可得到线段到线段的最小距离;在两个线段相交时可以直接确定最小距离为零。
在本实施例中,参见图5,上述的步骤S300可以包括步骤S310-S330,分别说明如下。
步骤S310,预设安全距离为虚幻对象的自身形体宽度。
步骤S320,当最小距离小于安全距离时,判定虚幻对象和其他对象存在相撞风险,则控制虚幻对象停止行走以中止虚幻对象的行走路线直至与其他对象之前不存在相撞风险,或者为虚幻对象设定新的终点位置以改变虚幻对象的行走路线。
需要说明的是,可以将最小距离小于安全距离的判断结果定义为false,则表明虚幻对象和其他对象之间存在相撞风险。
步骤S330,当最小距离大于或等于安全距离时,控制虚幻对象以行走路线所指示的方向进行行走,表示虚幻对象和其他对象各自移动时不存在相撞的风险。
需要说明的是,可以将最小距离大于或等于安全距离的判断结果定义为ture,则表明虚幻对象和其他对象之间不存在相撞风险。
本领域的技术人员可以理解,在利用本实施例中提供的随机行走方法控制虚幻对象的行走状态时,能够实现以下技术优势:(1)根据其他对象的静止位置或移动路线计算与虚幻对象的行走路线之间的最小距离,如此可以事先对虚幻对象和其他对象进行距离预判,消除即将发生碰撞的可能性,彻底避免两个虚幻对象之间存在碰撞或卡住的潜在情形发生;(2)最小距离的比较对象是安全距离(自身形体宽度),如此可以避免接近重叠或者接近隔离的显示情形发生,利用保证两个虚幻对象时刻处于互为个体独立的位置,增强游戏人物真实再现的显示效果;(3)在计算静止位置与虚幻对象的行走路径之间的最小距离时,充分利用了点到直线段的映射原理,利于快速地从各个映射路径中确定出最小距离;(4)在计算移动路线与虚幻对象的行走路径之间的最小距离时,充分利用了直线段到直线段的映射原理,如此可以减少运算量,提高游戏后台运算处理的性能。
本领域技术人员可以理解,上述实施方式中各种方法的全部或部分功能可以通过硬件的方式实现,也可以通过计算机程序的方式实现。当上述实施方式中全部或部分功能通过计算机程序的方式实现时,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:只读存储器、随机存储器、磁盘、光盘、硬盘等,通过计算机执行该程序以实现上述功能。例如,将程序存储在设备的存储器中,当通过处理器执行存储器中程序,即可实现上述全部或部分功能。另外,当上述实施方式中全部或部分功能通过计算机程序的方式实现时,该程序也可以存储在服务器、另一计算机、磁盘、光盘、闪存盘或移动硬盘等存储介质中,通过下载或复制保存到本地设备的存储器中,或对本地设备的系统进行版本更新,当通过处理器执行存储器中的程序时,即可实现上述实施方式中全部或部分功能。
以上应用了具体个例对本发明进行阐述,只是用于帮助理解本发明,并不用以限制本发明。对于本发明所属技术领域的技术人员,依据本发明的思想,还可以做出若干简单推演、变形或替换。

Claims (10)

1.一种虚幻对象的随机行走方法,其特征在于,包括:
获取虚幻对象的行走路线,所述行走路线包括所述虚幻对象的当前位置和将要到达的终点位置;
检查得到所述虚幻对象所在任务场景中其他对象的静止位置或移动路线,根据所述其他对象的静止位置或移动路线计算与所述虚幻对象的行走路线之间的最小距离;
将所述最小距离和预设的安全距离进行比较,根据比较结果控制所述虚幻对象的行走状态。
2.如权利要求1所述的随机行走方法,其特征在于,所述根据所述其他对象的静止位置或移动路线计算与所述虚幻对象的行走路线之间的最小距离,包括:
若所述其他对象处于静止状态,则将所述其他对象的静止位置映射到所述虚幻对象的行走路线上,比较各个映射路径的距离并从中确定最小距离;
若所述其他对象处于移动状态,则将所述其他对象的移动路线映射到所述虚幻对象的行走路线上,在所述移动路线和所述行走路线不相交时比较各个映射路径的距离并从中确定最小距离,在所述移动路径和所述行走路线相交时确定最小距离为零。
3.如权利要求2所述的随机行走方法,其特征在于,所述将所述其他对象的静止位置映射到所述虚幻对象的行走路线上,比较各个映射路径的距离并从中确定最小距离,包括:
建立映射坐标系,生成所述其他对象的静止位置的坐标,以及生成所述虚幻对象的当前位置和终点位置之间的第一直线段;
计算所述其他对象的静止位置的坐标与所述第一直线段的垂直距离,或者与所述第一直线段的端点之间的线性距离;
将计算得到的垂直距离和线性距离作为各个映射路径的距离,并从中确定得到所述最小距离。
4.如权利要求2所述的随机行走方法,其特征在于,所述将所述其他对象的移动路线映射到所述虚幻对象的行走路线上,在所述移动路线和所述行走路线不相交时比较各个映射路径的距离并从中确定最小距离,在所述移动路径和所述行走路线相交时确定最小距离为零,包括:
建立映射坐标系,生成所述虚幻对象的当前位置和终点位置之间的第一直线段,以及生成所述其他对象的移动路线上当前位置和终点位置之间的第二直线段;
在判断所述第一直线段和所述第二直线段平行时,计算所述第一直线段和所述第二直线段之间的平行距离;在判断所述第一直线段和所述第二直线段不平行且不相交时,计算所述第一直线段的端点到所述第二直线段的垂直距离或者与所述第二线段的端点之间的线性距离,计算所述第二直线段的端点到所述第一直线段的垂直距离或者与所述第一直线段的端点之间的线性距离;将计算得到的平行距离、垂直距离和线性距离作为各个映射路径的距离,从中确定得到所述最小距离;
在判断所述第一直线段和所述第二直线段相交时,将所述最小距离确定为零。
5.如权利要求1-4中任一项所述的随机行走方法,其特征在于,所述将所述最小距离和预设的安全距离进行比较,根据比较结果控制所述虚幻对象的行走状态,包括:
预设所述安全距离为所述虚幻对象的自身形体宽度;
当所述最小距离小于所述安全距离时,判定所述虚幻对象和所述其他对象存在相撞风险,则控制所述虚幻对象停止行走以中止所述虚幻对象的行走路线直至与所述其他对象之前不存在相撞风险,或者为所述虚幻对象设定新的终点位置以改变所述虚幻对象的行走路线;
当所述最小距离大于或等于所述安全距离时,控制所述虚幻对象以所述行走路线所指示的方向进行行走。
6.一种随机行走的控制系统,其特征在于,包括:
多个虚幻对象,所述虚幻对象用于在同一个任务场景中进行随机行走;
任务蓝图,用于在所述任务场景中为每个所述虚幻对象配置行走路线;
处理器,用于从所述任务蓝图中获取任意一个所述虚幻对象的行走路线,并根据权利要求1-5中任一项所述的随机行走方法控制该虚幻对象的行走状态;该虚幻对象之外的所述虚幻对象为所述任务场景中的其他对象。
7.如权利要求6所述的控制系统,其特征在于,所述任务蓝图包括多个黑板,分别对应于各个所述虚幻对象,所述黑板用于记录对应所述虚幻对象的当前位置和将要到达的终点位置,以根据所述虚幻对象的当前位置和终点位置形成所述虚幻对象的行走路线,或者形成所述其他对象的静止位置或移动路线。
8.如权利要求6所述的控制系统,其特征在于,还包括任务接口模块,所述任务接口模块设置于所述任务蓝图和所述处理器之间,用于根据所述任务蓝图标记处于移动状态的虚幻对象,使得所述处理器读取所述任务接口模块的标记情况且检查得到所述任务场景中的所述其他对象的静止位置或移动路线。
9.如权利要求6所述的控制系统,其特征在于,还包括显示器,所述显示器与所述处理器连接,用于对所述虚幻对象的行走状态进行实时显示。
10.一种计算机可读存储介质,其特征在于,包括程序,所述程序能够被处理器执行以实现如权利要求1-5中任一项所述的随机行走方法。
CN201911382574.9A 2019-12-27 2019-12-27 一种虚幻对象的随机行走方法及其控制系统、存储介质 Active CN111167117B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911382574.9A CN111167117B (zh) 2019-12-27 2019-12-27 一种虚幻对象的随机行走方法及其控制系统、存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911382574.9A CN111167117B (zh) 2019-12-27 2019-12-27 一种虚幻对象的随机行走方法及其控制系统、存储介质

Publications (2)

Publication Number Publication Date
CN111167117A true CN111167117A (zh) 2020-05-19
CN111167117B CN111167117B (zh) 2023-06-02

Family

ID=70647332

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911382574.9A Active CN111167117B (zh) 2019-12-27 2019-12-27 一种虚幻对象的随机行走方法及其控制系统、存储介质

Country Status (1)

Country Link
CN (1) CN111167117B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112121410A (zh) * 2020-10-22 2020-12-25 深圳市瑞立视多媒体科技有限公司 一种基于vr游戏的装备入柜的方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105031921A (zh) * 2015-02-15 2015-11-11 北京乐动卓越信息技术有限公司 一种游戏对象无序移动过程中的防碰撞的方法及系统
CN105056528A (zh) * 2015-07-23 2015-11-18 珠海金山网络游戏科技有限公司 一种虚拟角色的移动方法及装置

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105031921A (zh) * 2015-02-15 2015-11-11 北京乐动卓越信息技术有限公司 一种游戏对象无序移动过程中的防碰撞的方法及系统
CN105056528A (zh) * 2015-07-23 2015-11-18 珠海金山网络游戏科技有限公司 一种虚拟角色的移动方法及装置

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112121410A (zh) * 2020-10-22 2020-12-25 深圳市瑞立视多媒体科技有限公司 一种基于vr游戏的装备入柜的方法
CN112121410B (zh) * 2020-10-22 2024-04-12 深圳市瑞立视多媒体科技有限公司 一种基于vr游戏的装备入柜的方法

Also Published As

Publication number Publication date
CN111167117B (zh) 2023-06-02

Similar Documents

Publication Publication Date Title
Wang et al. Social interactions for autonomous driving: A review and perspectives
US10029179B2 (en) Touch control with dynamic zones and displayed elements
US9781176B2 (en) Managing permissions in collaborative workspaces using visual representations of clients
CN105848742B (zh) 虚拟环境中的玩家化身移动辅助
CN110141862B (zh) 游戏中移动控制的方法及装置、电子设备、存储介质
US9901824B2 (en) User control of objects and status conditions
US10792568B1 (en) Path management for virtual environments
CN111279394B (zh) 虚拟角色的任务执行方法、装置及终端设备
Kremer et al. Modelling distracted agents in crowd simulations
CN111167117B (zh) 一种虚幻对象的随机行走方法及其控制系统、存储介质
CN114470777A (zh) 一种角色的控制方法、装置、电子设备及可读存储介质
CN112090078A (zh) 游戏角色移动控制方法、装置、设备和介质
CN113082719B (zh) 三维虚拟场景的寻路方法、装置及电子设备
Jaklin et al. Adding sociality to virtual pedestrian groups
Oliva et al. A generalized exact arbitrary clearance technique for navigation meshes
Rojas et al. Group agent-based steering for the realistic corner turning and group movement of pedestrians in a crowd simulation
Newton et al. Unreal Engine 4 AI Programming Essentials
CN112774204B (zh) 一种角色碰撞规避方法、装置、设备以及存储介质
JP7341801B2 (ja) ビデオゲーム処理プログラム、及びビデオゲーム処理システム
CN114612553A (zh) 一种虚拟对象的控制方法、装置、计算机设备及存储介质
CN117232531B (zh) 机器人导航规划方法及存储介质和终端设备
Menezes et al. Development of an autonomous vehicle controller for simulation environments
CN113082706B (zh) 一种游戏图标指示方法、装置、终端设备及存储介质
WO2024066723A1 (zh) 针对虚拟场景的位置更新方法、设备、介质和程序产品
KR20180015965A (ko) 가상공간내 오브젝트 제어 방법 및 프로그램

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant