虚拟对象的瞄准方法、装置、设备及介质与流程

文档序号:22252691发布日期:2020-09-18 13:06阅读:212来源:国知局
虚拟对象的瞄准方法、装置、设备及介质与流程

本申请实施例涉及虚拟环境领域,特别涉及一种虚拟对象的瞄准方法、装置、设备及介质。



背景技术:

对战游戏是多个用户账号在同一场景内进行竞技的游戏。可选地,对战游戏可以是多人在线战术竞技游戏(multiplayeronlinebattlearenagames,moba)。

在典型的moba游戏中,用户控制的第一虚拟对象拥有技能。在使用该技能时,终端会显示扇形技能指示器,该扇形技能指示器包括位于第一虚拟对象脚下的一个扇形区域,该扇形区域的对称轴为瞄准线。用户可以拖动该扇形技能指示器围绕第一虚拟对象进行旋转,位于该扇形区域中且离瞄准线最近的候选虚拟对象确定为被瞄准的目标虚拟对象,进而由用户控制第一虚拟对象对目标虚拟对象释放技能。

上述技术是将离瞄准线最近的候选虚拟对象确定为被瞄准的目标虚拟对象,当存在两个候选虚拟对象均位于瞄准线上时,被瞄准的目标虚拟对象不一定是用户期望的瞄准目标。



技术实现要素:

本申请实施例提供了一种虚拟对象的瞄准方法、装置、设备及介质,可以提高用户在瞄准时的准确性。所述技术方案如下:

一方面,提供了一种虚拟对象的瞄准方法,所述方法包括:

显示用户界面,所述用户界面包括虚拟环境画面,所述虚拟环境画面包括位于所述虚拟环境中的第一虚拟对象和第二虚拟对象;

响应于在第一时刻接收到瞄准操作的开始指令,在所述虚拟环境的地平面上显示点式技能指示器,所述点式技能指示器用于指示所述瞄准操作在所述虚拟环境的所述地平面上选中的瞄准点;

响应于在第二时刻接收到所述瞄准操作的结束指令,控制所述第一虚拟对象瞄准目标虚拟对象,所述目标虚拟对象是根据第一优先级原则从所述第二虚拟对象中确定的一个虚拟对象,所述第一优先级原则包括虚拟对象类型的优先级高于所述第二虚拟对象与所述瞄准点的直线距离的优先级;

其中,所述第二时刻与所述第一时刻的差值小于时间阈值。

另一方面,提供了一种虚拟对象的瞄准装置,所述装置包括:

显示模块,用于显示用户界面,所述用户界面包括虚拟环境画面,所述虚拟环境画面包括位于所述虚拟环境中的第一虚拟对象和第二虚拟对象;

交互模块,用于在第一时刻接收瞄准操作生成开始指令;

显示模块,用于响应于在所述第一时刻接收到瞄准操作的所述开始指令,在所述虚拟环境的所述地平面上显示点式技能指示器,所述点式技能指示器用于指示所述瞄准操作在所述虚拟环境的地平面上选中的瞄准点;

所述交互模块,还用于响应于在第二时刻所述瞄准操作停止,生成结束指令;

瞄准模块,用于响应于在所述第二时刻接收到所述瞄准操作的所述结束指令,控制所述第一虚拟对象瞄准目标虚拟对象,所述目标虚拟对象是根据第一优先级原则从所述第二虚拟对象中确定的一个虚拟对象,所述第一优先级原则包括虚拟对象类型的优先级高于所述第二虚拟对象与所述瞄准点的直线距离的优先级;

其中,所述第二时刻与所述第一时刻的差值小于时间阈值。

另一方面,提供了一种计算机设备,所述计算机设备包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现如上方面所述的虚拟对象的瞄准方法。

另一方面,提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现如上方面所述的虚拟对象的瞄准方法。

另一方面,提供了一种计算机程序产品,当所述计算机程序产品在计算机上运行时,使得计算机执行如上述方面所述的虚拟对象的瞄准方法。

本申请实施例提供的技术方案带来的有益效果至少包括:

通过在接收到用户的瞄准操作时,根据用户选中的瞄准点以及第二虚拟对象的虚拟对象类型,为用户瞄准类型优先级较高的目标虚拟对象。例如,通常情况下,用户会更想攻击英雄,客户端就会优先为用户瞄准英雄。从而提高客户端瞄准虚拟对象的能力,降低用户瞄准虚拟对象所需要的操作难度,提高瞄准操作的人机交互效果和准确率。当对局非常激烈时,在虚拟环境画面上可能存在很多个用户可以瞄准的虚拟对象,例如,虚拟环境画面上有敌方英雄和多个小兵,为了赢得对局优势,用户需要快速瞄准以控制第一虚拟对象攻击敌方英雄,但由于可瞄准的虚拟对象过多,且大部分是用户不想瞄准到的小兵,用户很难准确瞄准到敌方英雄。此时,使用本申请实施例提供的方法,用户只需要快速进行瞄准操作给出一个大致的瞄准位置,客户端就会根据可瞄准的虚拟对象类型,优先为用户瞄准英雄,而不是小兵,从而提高用户瞄准操作的效率和准确率。

附图说明

为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。

图1是本申请一个示例性实施例提供的计算机系统的结构框图;

图2是本申请另一个示例性实施例提供的虚拟对象的瞄准方法的用户界面示意图;

图3是本申请另一个示例性实施例提供的虚拟对象的瞄准方法的死区的示意图;

图4是本申请另一个示例性实施例提供的虚拟对象的瞄准方法的虚拟环境示意图;

图5是本申请另一个示例性实施例提供的虚拟对象的瞄准方法的虚拟环境示意图;

图6是本申请另一个示例性实施例提供的虚拟对象的瞄准方法的方法流程图;

图7是本申请一个示例性实施例提供的虚拟角色的视角对应的摄像机模型示意图;

图8是本申请另一个示例性实施例提供的虚拟对象的瞄准方法的用户界面示意图;

图9是本申请另一个示例性实施例提供的虚拟对象的瞄准方法的虚拟环境示意图;

图10是本申请另一个示例性实施例提供的虚拟对象的瞄准方法的虚拟环境示意图;

图11是本申请另一个示例性实施例提供的虚拟对象的瞄准方法的方法流程图;

图12是本申请另一个示例性实施例提供的虚拟对象的瞄准方法的虚拟环境示意图;

图13是本申请另一个示例性实施例提供的虚拟对象的瞄准方法的方法流程图;

图14是本申请另一个示例性实施例提供的虚拟对象的瞄准方法的选中特效示意图;

图15是本申请另一个示例性实施例提供的虚拟对象的瞄准方法的方法流程图;

图16是本申请另一个示例性实施例提供的虚拟对象的瞄准方法的方法流程图;

图17是本申请另一个示例性实施例提供的虚拟对象的瞄准方法的方法流程图;

图18是本申请另一个示例性实施例提供的虚拟对象的瞄准方法的用户界面示意图;

图19是本申请另一个示例性实施例提供的虚拟对象的瞄准方法的时间轴示意图;

图20是本申请另一个示例性实施例提供的虚拟对象的瞄准方法的方法流程图;

图21是本申请另一个示例性实施例提供的虚拟对象的瞄准方法的方法流程图;

图22是本申请另一个示例性实施例提供的虚拟对象的瞄准方法的分类器的示意图;

图23是本申请另一个示例性实施例提供的虚拟对象的瞄准方法的方法流程图;

图24是本申请另一个示例性实施例提供的虚拟对象的瞄准方法的虚拟环境示意图;

图25是本申请另一个示例性实施例提供的虚拟对象的瞄准装置的装置框图;

图26是本申请另一个示例性实施例提供的终端的框图。

具体实施方式

为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。

首先,对本申请实施例中涉及的名词进行简单介绍:

虚拟环境:是应用程序在终端上运行时显示(或提供)的虚拟环境。该虚拟环境可以是对真实世界的仿真世界,也可以是半仿真半虚构的三维世界,还可以是纯虚构的三维世界。虚拟环境可以是二维虚拟环境、2.5维虚拟环境和三维虚拟环境中的任意一种。可选地,该虚拟环境还用于至少两个虚拟对象之间的虚拟环境对战,在该虚拟环境中具有可供至少两个虚拟对象使用的虚拟资源。可选地,该虚拟环境包括对称的左下角区域和右上角区域,属于两个敌对阵营的虚拟对象分别占据其中一个区域,并以摧毁对方区域深处的目标建筑/据点/基地/水晶来作为胜利目标。

虚拟对象:是指在虚拟环境中的可活动对象和不可活动对象。该可活动对象可以是虚拟人物、虚拟动物、动漫人物中的至少一种。该不可活动对象可以是虚拟建筑、虚拟植物、虚拟地形中的至少一种。可选地,当虚拟环境为三维虚拟环境时,虚拟对象可以是三维虚拟模型,每个虚拟对象在三维虚拟环境中具有自身的形状和体积,占据三维虚拟环境中的一部分空间。可选地,虚拟对象是基于三维人体骨骼技术构建的三维角色,该虚拟对象通过穿戴不同的皮肤来实现不同的外在形象。在一些实现方式中,虚拟对象也可以采用2.5维或2维模型来实现,本申请实施例对此不加以限定。示例性的,根据控制虚拟对象的方式不同,可以将虚拟对象分为用户控制的虚拟对象和服务器控制的虚拟对象,其中,用户控制的虚拟对象是由客户端控制的在虚拟环境中可活动的对象。服务器控制的虚拟对象是由客户端或服务器上的自动控制算法或人工智能程序控制的虚拟对象。服务器控制的虚拟对象包括虚拟环境中可活动对象和不可活动对象。示例性的,不可活动对象可以响应或影响可活动对象的活动,例如,可活动对象可以摧毁不可活动对象,或,当可活动对象进入不可活动对象时,可活动对象进入隐身状态。示例性的,本申请中的第一虚拟对象是由客户端控制的虚拟对象。示例性的,本申请中的目标虚拟对象可以是由其他客户端或服务器控制的虚拟对象。

多人在线战术竞技是指:在虚拟环境中,分属至少两个敌对阵营的不同虚拟队伍分别占据各自的地图区域,以某一种胜利条件作为目标进行竞技。该胜利条件包括但不限于:占领据点或摧毁敌对阵营据点、击杀敌对阵营的虚拟对象、在指定场景和时刻内保证自身的存活、抢夺到某种资源、在指定时刻内比分超过对方中的至少一种。战术竞技可以以局为单位来进行,每局战术竞技的地图可以相同,也可以不同。每个虚拟队伍包括一个或多个虚拟对象,比如1个、2个、3个或5个。

moba游戏:是一种在虚拟环境中提供若干个据点,处于不同阵营的用户控制虚拟对象在虚拟环境中对战,占领据点或摧毁敌对阵营据点的游戏。例如,moba游戏可将用户分成两个敌对阵营,将用户控制的虚拟对象分散在虚拟环境中互相竞争,以摧毁或占领敌方的全部据点作为胜利条件。moba游戏以局为单位,一局moba游戏的持续时刻是从游戏开始的时刻至达成胜利条件的时刻。

用户界面ui(userinterface)控件,在应用程序的用户界面上能够看见的任何可视控件或元素,比如,图片、输入框、文本框、按钮、标签等控件,其中一些ui控件响应用户的操作,比如,技能控件,控制主控虚拟对象释放技能。用户触发技能控件,控制主控虚拟对象释放技能。本申请实施例中涉及的ui控件,包括但不限于:技能控件、移动控件。

图1给出了本申请一个示例性实施例提供的计算机系统的结构框图。该计算机系统100包括:第一终端110、服务器120、第二终端130。

第一终端110安装和运行有支持虚拟环境的客户端111,该客户端111可以是多人在线对战程序。当第一终端运行客户端111时,第一终端110的屏幕上显示客户端111的用户界面。该客户端可以是军事仿真程序、大逃杀射击游戏、虚拟现实(virtualreality,vr)应用程序、增强现实(augmentedreality,ar)程序、三维地图程序、虚拟现实游戏、增强现实游戏、第一人称射击游戏(first-personshootinggame,fps)、第三人称射击游戏(third-personalshootinggame,tps)、多人在线战术竞技游戏(multiplayeronlinebattlearenagames,moba)、策略游戏(simulationgame,slg)中的任意一种。在本实施例中,以该客户端是moba游戏来举例说明。第一终端110是第一用户112使用的终端,第一用户112使用第一终端110控制位于虚拟环境中的第一虚拟对象进行活动,第一虚拟对象可以称为第一用户112的主控虚拟对象。第一虚拟对象的活动包括但不限于:调整身体姿态、爬行、步行、奔跑、骑行、飞行、跳跃、驾驶、拾取、射击、攻击、投掷中的至少一种。示意性的,第一虚拟对象是第一虚拟人物,比如仿真人物角色或动漫人物角色。

第二终端130安装和运行有支持虚拟环境的客户端131,该客户端131可以是多人在线对战程序。当第二终端130运行客户端131时,第二终端130的屏幕上显示客户端131的用户界面。该客户端可以是军事仿真程序、大逃杀射击游戏、vr应用程序、ar程序、三维地图程序、虚拟现实游戏、增强现实游戏、fps、tps、moba、slg中的任意一种,在本实施例中,以该客户端是moba游戏来举例说明。第二终端130是第二用户113使用的终端,第二用户113使用第二终端130控制位于虚拟环境中的目标虚拟对象进行活动,目标虚拟对象可以称为第二用户113的主控虚拟对象。示意性的,目标虚拟对象是第二虚拟人物,比如仿真人物角色或动漫人物角色。

可选地,第一虚拟人物和第二虚拟人物处于同一虚拟环境中。可选地,第一虚拟人物和第二虚拟人物可以属于同一个阵营、同一个队伍、同一个组织、具有好友关系或具有临时性的通讯权限。可选的,第一虚拟人物和第二虚拟人物可以属于不同的阵营、不同的队伍、不同的组织或具有敌对关系。

可选地,第一终端110和第二终端130上安装的客户端是相同的,或两个终端上安装的客户端是不同操作系统平台(安卓或ios)上的同一类型客户端。第一终端110可以泛指多个终端中的一个,第二终端130可以泛指多个终端中的另一个,本实施例仅以第一终端110和第二终端130来举例说明。第一终端110和第二终端130的设备类型相同或不同,该设备类型包括:智能手机、平板电脑、电子书阅读器、mp3播放器、mp4播放器、膝上型便携计算机和台式计算机中的至少一种。

图1中仅示出了两个终端,但在不同实施例中存在多个其它终端140可以接入服务器120。可选地,还存在一个或多个终端140是开发者对应的终端,在终端140上安装有支持虚拟环境的客户端的开发和编辑平台,开发者可在终端140上对客户端进行编辑和更新,并将更新后的客户端安装包通过有线或无线网络传输至服务器120,第一终端110和第二终端130可从服务器120下载客户端安装包实现对客户端的更新。

第一终端110、第二终端130以及其它终端140通过无线网络或有线网络与服务器120相连。

服务器120包括一台服务器、多台服务器、云计算平台和虚拟化中心中的至少一种。服务器120用于为支持三维虚拟环境的客户端提供后台服务。可选地,服务器120承担主要计算工作,终端承担次要计算工作;或者,服务器120承担次要计算工作,终端承担主要计算工作;或者,服务器120和终端之间采用分布式计算架构进行协同计算。

在一个示意性的例子中,服务器120包括处理器122、用户账号数据库123、对战服务模块124、面向用户的输入/输出接口(input/outputinterface,i/o接口)125。其中,处理器122用于加载服务器121中存储的指令,处理用户账号数据库123和对战服务模块124中的数据;用户账号数据库123用于存储第一终端110、第二终端130以及其它终端140所使用的用户账号的数据,比如用户账号的头像、用户账号的昵称、用户账号的战斗力指数,用户账号所在的服务区;对战服务模块124用于提供多个对战房间供用户进行对战,比如1v1对战、3v3对战、5v5对战等;面向用户的i/o接口125用于通过无线网络或有线网络和第一终端110和/或第二终端130建立通信交换数据。

结合上述对虚拟环境的介绍以及实施环境说明,对本申请实施例提供的虚拟对象的瞄准方法进行说明,以该方法的执行主体为图1所示出的终端上运行的客户端来举例说明。该终端运行有应用程序,该应用程序是支持虚拟环境的程序。

示例性的,以本申请提供的虚拟对象的瞄准方法应用在moba游戏中为例。

在moba游戏中,用户可以通过使用瞄准控件来选择第一虚拟对象的攻击目标,瞄准控件可以是普通攻击对应的普攻控件,也可以是技能攻击对应的技能控件。

示例性的,瞄准控件是一种轮盘瞄准控件。如图2所示,在第一用户界面上显示有圆形的瞄准控件201,用户通过按住瞄准控件201可以唤出瞄准控件的轮盘式虚拟摇杆202,轮盘式虚拟摇杆由轮盘区203(轮盘区域)和摇杆204(摇杆按钮)组成,轮盘区203是轮盘式虚拟摇杆的可操作范围,摇杆205是轮盘式虚拟摇杆的触点位置,用户可以在轮盘区203的范围内任意滑动摇杆205。示例性的,如图3所示,轮盘区203又分为死区2032和有效轮盘区2031,死区2032是半径小于轮盘区203且与轮盘区203同心的圆形区域,有效轮盘区2031是轮盘区203除死区2032之外的环形区域。示例性的,上图仅以瞄准控件是圆形为例,瞄准控件还可以为其他形状,例如,椭圆形、正方形、长方形、三角形、五角形等,本实施例对瞄准控件的形状不加以限定。

示例性的,瞄准控件具有三种触发方式:快速触发、快速拖动触发(本申请提出)、拖动触发。示例性的,这三种触发方式都是连续触发。当用户使用手指触发控件时,连续触发是指从用户手指按下控件开始到用户手指离开控件为止,为一次完整的触发操作。示例性的,当用户手指按下瞄准控件时,客户端获取用户手指按下的激活点,并周期性检测手指在瞄准控件上移动的触点,当客户端在一段时刻内没有检测到下一个触点时,确定本次触发操作结束。例如,客户端每隔0.01ms获取一次手指在瞄准控件上的触点位置,当客户端在0.05ms内没有获取到用户手指的下一个触点位置时,客户端确定用户的手指离开了瞄准控件,本次触发操作结束。

其中,快速触发是瞄准控件的激活点位于死区内,且本次触发操作的触点没有超出死区的触发操作。激活点是在一次触发操作中,瞄准控件第一次被触发的触点,即,用户手指按下控件时的触点。示例性的,如图3所示,快速触发是用户快速点击瞄准控件,且点击位置位于死区2032的触发操作。示例性的,瞄准控件在用户界面上显示的位置可以在一定范围内跟随激活点移动,客户端以激活点为中心,移动瞄准控件,即,用户每次激活瞄准控件,激活点都是瞄准控件的中心(圆心)。

拖动触发是瞄准控件的激活点位于死区内,存在至少一个触点超出死区,且触点移出死区的时长大于时刻阈值的操作。示例性的,如图3所示,拖动触发是用户在死区2032按下瞄准控件,将手指划出死区2032,在有效轮盘区2031进行瞄准,并在瞄准后抬起手指的操作。

快速拖动触发是瞄准控件的激活点位于死区内,存在至少一个触点超出死区,且触点移出死区的时长小于时刻阈值的操作。示例性的,快速拖动触发是用户按下瞄准控件,将手指快速划出死区并抬起的操作。示例性的,快速拖动触发是用时较短的拖动触发。

示例性的,当用户快速触发瞄准控件时,客户端从第一虚拟对象的瞄准范围或目标选择范围内自动选择一个候选虚拟对象作为瞄准对象。目标选择范围是第一虚拟对象的瞄准范围加上扩充范围,当瞄准范围是以第一虚拟对象为中心半径r的范围时,扩充范围是瞄准范围外侧宽度为y的环形区域。例如,如图4所示,当用户快速触发瞄准控件时,客户端从第一虚拟对象的目标选择范围301内选择血量最低的虚拟对象b作为瞄准对象,目标选择范围301是以第一虚拟对象为中心的圆形范围。

当用户拖动触发瞄准控件时,客户端将用户从瞄准控件上抬起手指时的触点作为瞄准点,将参考范围内与瞄准点的距离最近的候选虚拟对象确定为瞄准对象,参考范围是根据瞄准点确定的范围。例如,如图5所示,当用户拖动触发瞄准控件时,客户端获取拖动操作对应的瞄准点302,以瞄准点302为圆心确定参考范围303,获取参考范围303内的候选虚拟对象,将参考范围303内与瞄准点302距离最近的虚拟对象a确定为瞄准对象。

当用户快速拖动触发瞄准控件时,客户端将根据用户从瞄准控件上抬起手指时的瞄准点、以及候选虚拟对象的虚拟对象类型,从瞄准范围或目标选择范围内的候选虚拟对象中确定出瞄准对象。

示例性的,本实施例提供的方法应用在快速拖动触发瞄准控件时,快速选中瞄准对象。

示例性的,以瞄准对象的选择规则是根据候选虚拟对象与瞄准点的距离以及候选虚拟对象的虚拟对象类型设置的规则为例。当候选虚拟对象的类型包括:虚拟人物、野怪、建筑物时,其优先级可以是虚拟人物大于野怪大于建筑物。当用户的手指在死区按下瞄准控件,将手指移出死区时开始计时,在前n帧时刻内优先根据虚拟对象类型确定瞄准对象。前n帧可以是指逻辑帧也可以是指表现帧。逻辑帧是服务器由统一设置的,例如,n帧可以是2帧逻辑帧。表现帧是各个客户端根据终端的帧率和逻辑帧计算得到的,例如,n帧是2帧逻辑帧,服务器的帧率为15帧/s,当终端的帧率为30帧/s时,2帧逻辑帧对应4帧表现帧,则n帧可以是2帧逻辑帧或4帧表现帧。

若用户在前n帧时刻内抬起手指,则将虚拟对象类型优先级较高的候选虚拟对象确定为瞄准对象。

示例性的,本实施例提供的方法也可以应用在其他两种触发方式中。

示例性的,在技术实现方面,当用户进行快速拖动操作时,客户端获取在瞄准控件有效轮盘区中的触点位置,将触点位置映射到虚拟环境中得到瞄准点。然后,客户端调用搜敌接口,将以第一虚拟对象为中心的目标选择范围内的候选虚拟对象存入候选虚拟对象列表。然后,调用过滤器将候选虚拟对象列表中不符合瞄准条件的候选虚拟对象删除,例如,将不能被技能作用的候选虚拟对象从候选虚拟对象列表中删除,得到过滤后的候选虚拟对象列表。将过滤后的候选虚拟对象列表用搜敌树(搜敌选择器)进行过滤和排序。搜敌树用于根据预设的优先级规则从候选虚拟对象列表中选出瞄准对象。例如,搜敌树将候选虚拟对象列表中当前处于不可被攻击状态的候选虚拟对象删除,将保留下来的候选虚拟对象根据优先级分数进行排序,将优先级分数最高或最低的候选虚拟对象确定为瞄准对象。

图6示出了本申请一个示例性实施例提供的虚拟对象的瞄准方法的流程图。该方法可以由上述图1中的任一终端上运行的客户端来执行,该客户端是支持虚拟环境的客户端。该方法包括:

步骤601,显示用户界面,用户界面包括虚拟环境画面,虚拟环境画面包括位于虚拟环境中的第一虚拟对象和第二虚拟对象。

可选地,虚拟环境画面是以第一虚拟对象为观察中心对虚拟环境进行观察得到的画面。观察中心是指摄像机模型拍摄虚拟环境时的对焦位置。示例性的,观察中心位于虚拟环境画面的中心。即,第一虚拟对象位于虚拟环境画面的中心。示例性的,以第一虚拟对象为观察中心是指以第三人称视角对第一虚拟对象进行观察获取虚拟环境画面。视角是指以虚拟对象的第三人称视角在虚拟环境中进行观察时的观察角度。可选地,本申请的实施例中,视角是在虚拟环境中通过摄像机模型对虚拟对象进行观察时的角度。

可选地,摄像机模型在虚拟环境中对虚拟对象进行自动跟随,即,当虚拟对象在虚拟环境中的位置发生改变时,摄像机模型跟随虚拟对象在虚拟环境中的位置同时发生改变,且该摄像机模型在虚拟环境中始终处于虚拟对象的预设距离范围内。可选地,在自动跟随过程中,摄像头模型和虚拟对象的相对位置不发生变化。

摄像机模型是指在虚拟环境中位于虚拟对象周围的三维模型,当采用第三人称视角时,该摄像机模型可以位于虚拟对象的后方并与虚拟对象进行绑定,也可以位于与虚拟对象相距预设距离的任意位置,通过该摄像机模型可以从不同角度对位于虚拟环境中的虚拟对象进行观察,可选地,除第一人称视角和第三人称视角外,视角还包括其他视角,比如俯视视角;当采用俯视视角时,该摄像机模型可以位于虚拟对象头部的上空,俯视视角是以从空中俯视的角度进行观察虚拟环境的视角。可选地,该摄像机模型在虚拟环境中不会进行实际显示,即,在用户界面显示的虚拟环境中不显示该摄像机模型。

对该摄像机模型位于与虚拟对象相距预设距离的任意位置为例进行说明,可选地,一个虚拟对象对应一个摄像机模型。示例性的,在部分支持虚拟环境的应用程序中,该摄像机模型可以以虚拟对象为旋转中心进行旋转,如:以虚拟对象的任意一点为旋转中心对摄像机模型进行旋转,摄像机模型在旋转过程中的不仅在角度上有转动,还在位移上有偏移,旋转时摄像机模型与该旋转中心之间的距离保持不变,即,将摄像机模型在以该旋转中心作为球心的球体表面进行旋转,其中,虚拟对象的任意一点可以是虚拟对象的头部、躯干、或者虚拟对象周围的任意一点,本申请实施例对此不加以限定。可选地,摄像机模型在对虚拟对象进行观察时,该摄像机模型的视角的中心指向为该摄像机模型所在球面的点指向球心的方向。

可选地,该摄像机模型还可以在虚拟对象的不同方向以预设的角度对虚拟对象进行观察。

示意性的,请参考图7,在虚拟对象11中确定一点作为旋转中心12,摄像机模型围绕该旋转中心12进行旋转,可选地,该摄像机模型配置有一个初始位置,该初始位置为虚拟对象后上方的位置(比如脑部的后方位置)。示意性的,如图7所示,该初始位置为位置13,当摄像机模型旋转至位置14或者位置15时,摄像机模型的视角方向随摄像机模型的转动而进行改变。

可选地,虚拟环境画面显示的虚拟环境包括:山川、平地、河流、湖泊、海洋、沙漠、沼泽、流沙地、天空、植物、建筑、车辆、人物中的至少一种元素。

第一虚拟对象是由执行该方法的客户端控制的虚拟对象。客户端根据接收到的用户操作控制第一虚拟对象在虚拟环境中活动。示例性的,第一虚拟对象在虚拟环境中的活动包括:行走、跑动、跳跃、攀爬、趴下、射击、普通攻击、释放技能、捡拾道具、使用道具、发送消息。

技能是由虚拟对象使用或释放、对虚拟对象(包括第二虚拟对象和自身)进行攻击、产生减益效果或产生增益效果的一种能力。技能包括主动技能、被动技能,主动技能是由虚拟对象主动使用、释放的技能,被动技能是当满足被动条件时自动触发的技能。示例性的,不同的虚拟对象可以具有不同的技能。

普通攻击是虚拟对象的一种攻击方式,虚拟对象通过普通攻击可以对第二虚拟对象造成伤害。示例性的,普通攻击本身只能对第二虚拟对象造成伤害,不能产生增益效果或减益效果。所有虚拟对象都可以进行普通攻击,根据不同虚拟对象攻击速度、攻击力、特效显示的不同,可能会显示不同的攻击效果。

示例性的,部分活动需要用户为虚拟对象指定目标,即,在进行这些活动之前用户需要选中或瞄准某个虚拟对象。例如,虚拟对象在释放技能、普通攻击、使用道具、获取视野时都需要瞄准目标。本实施例提供的方法就用于瞄准目标。

示例性的,在虚拟环境中存在至少一个第二虚拟对象。第二虚拟对象包括由客户端控制的虚拟对象、由服务器控制的虚拟对象中的至少一种。示例性的,第二虚拟对象分为不同的虚拟对象类型。示例性的,可以根据虚拟对象的不同特点对虚拟对象进行分类,例如,根据虚拟对象是否可以活动,可以将虚拟对象分为可活动对象和不可活动对象。根据虚拟对象的控制方式,可以将虚拟对象分为用户控制的虚拟对象和服务器控制的虚拟对象。根据虚拟对象的模型种类,可以将虚拟对象分为虚拟人物、虚拟动物、虚拟建筑物、虚拟植物、虚拟地形等。示例性的,根据虚拟对象的阵营,可以将虚拟对象分为第一阵营、第二阵营和中立阵营。根据虚拟对象的属性可以将虚拟对象分为法术攻击类和物理攻击类。本实施例对虚拟对象的分类方式不加以限定,因此,虚拟对象类型也可以是多样的。一个虚拟对象也可以具有多个虚拟对象类型。

示例性的,第二虚拟对象是能够被第一虚拟对象瞄准的虚拟对象。示例性的,能被瞄准的虚拟对象包括虚拟环境中任意的三维模型。例如,由其他客户端控制的虚拟对象(队友或对手)、由客户端或服务器控制的虚拟对象(野怪、动物、植物等)、虚拟建筑物(防御塔、基地、兵营、水晶等)、虚拟载具(汽车、飞机、摩托等)。例如,第一虚拟对象可以瞄准其他客户端控制的虚拟对象,进而对其释放技能或进行普通攻击。再如,第一虚拟对象可以瞄准服务器控制的虚拟对象(野怪、小兵)进而攻击虚拟对象。又或者,第一虚拟对象可以瞄准虚拟建筑物或虚拟植物进而攻击虚拟建筑物或摧毁虚拟建筑物。再或,第一虚拟对象可以瞄准虚拟地形进而改变虚拟地形或制造虚拟地形等。

示例性的,用户界面还可以包括位于虚拟环境画面上的ui控件,例如,ui控件可以是技能控件、普通攻击控件、移动控件、信号发送控件、设置控件、聊天控件等。

例如,如图8所示,是一种用户界面801,在用户界面801显示有虚拟环境画面,虚拟环境画面中包括第一虚拟对象802和两个第二虚拟对象803。示例性的,在用户界面801还显示有移动控件804、技能控件805、普通攻击控件806。移动控件804用于控制第一虚拟对象802在虚拟环境中移动;技能控件805用于控制第一虚拟对象802释放技能;普通攻击控件806用于控制第一虚拟对象802进行普通攻击。

步骤602,响应于在第一时刻接收到瞄准操作的开始指令,在虚拟环境的地平面上显示点式技能指示器,点式技能指示器用于指示瞄准操作在虚拟环境的地平面上选中的瞄准点。

瞄准操作是客户端接收到的用户操作。示例性的,用户操作可以是对ui控件的触发操作、语音操作、动作操作、文字操作、鼠标操作、键盘操作、游戏摇杆操作。例如,瞄准操作可以是客户端在ui控件上接收到的拖动操作,瞄准操作还可以是用户发出语音指令、动作指令、文字指令的操作,客户端通过识别用户的语音、动作或文字来获取用户意图。

示例性的,瞄准操作是在虚拟环境中选择出瞄准点的操作。用户通过瞄准操作,在虚拟环境中选个位置点,将该位置点确定为瞄准点。后续客户端可以根据瞄准点来确定瞄准的虚拟对象。

示例性的,瞄准操作是一种持续性操作,具有开始时刻和结束时刻。示例性的,在瞄准操作从开始时刻到结束时刻的持续时间内,客户端会连续地接收到瞄准操作的瞄准指令。在本实施例中,以瞄准指令是通过轮盘瞄准控件上超出死区的拖动操作触发的指令为例,此时“瞄准操作”即为轮盘瞄准控件上超出死区的拖动操作。示例性的,开始指令为第一个超出死区的触点对应的瞄准指令。示例性的,结束指令为用户松开轮盘瞄准控件前在有效瞄准区上的最后一个触点对应的瞄准指令。

例如,当瞄准操作是对ui控件的拖动或滑动操作时,当用户按下ui控件时,客户端确定接收到瞄准操作,在第一时刻生成开始指令,开始指令中包括了用户按下ui控件时的激活点,然后用户按住ui控件并拖动,客户端周期性检测用户拖动路径上的多个触点,生成拖动轨迹,每个瞄准指令包括一个拖动路径上的触点,当用户松开ui控件,客户端无法在ui控件上检测到触点,则确定瞄准操作结束,将最后一个触点确定为本次拖动操作的偏移点,该偏移点对应的时刻即为结束时刻。

再如,由于ui控件可以接收多种触发操作,例如,点击、拖动、快速拖动等,而本实施例中的瞄准操作为快速瞄准操作,为了区别于点击操作,可以通过以下方式来确定瞄准操作的开始时刻,进而生成开始指令。示例性的,如图2所示,以ui控件是瞄准控件201为例,当瞄准控件201被触发时,显示瞄准控件201的轮盘式虚拟摇杆203,轮盘式虚拟摇杆202包括摇杆204(摇杆按钮)和轮盘区域203。如图3所示,轮盘区域203又包括死区2032和有效瞄准区2031。示例性的,当用户按下瞄准控件201时,客户端以用户按下的位置为中心,显示瞄准控件201的轮盘式虚拟摇杆202,即,用户按下的激活点一定位于死区2032中。同时,在用户按下的位置显示摇杆204,摇杆204跟随用户的触点移动而移动。示例性的,用户按下瞄准控件201后,进行拖动操作,当用户拖动操作的触点超出死区2032的范围时,确定该操作为瞄准操作,将触点超出死区时的时刻确定为第一时刻,生成开始指令。示例性的,此时开始指令中的触点并不是激活点,激活点始终使用户按下ui控件时的点。

示例性的,上述实施例中是以瞄准操作是在ui控件上的拖动操作为例,瞄准操作还可以是用户拖动鼠标的操作,用户的长按操作、用户连续多次的点击操作等。

在另一个可选的实施例中,瞄准操作还可以是一种分段式操作。例如,用户先进行一次触发操作,来开始瞄准操作;然后,用户再进行一次触发操作,来结束瞄准操作。例如,瞄准操作还可以是:用户点击ui控件,来进入瞄准状态,然后,用户点击虚拟环境中的任意一点,或,点击ui控件上的任意一点,来选中瞄准点,结束瞄准操作。

点式技能指示器是为了便于用户观察瞄准操作在虚拟环境中选中的瞄准点,而在虚拟环境中显示的辅助瞄准的指示器。示例性的,点式技能指示器是目标型技能对应的指示器,或,指定目标进行的普通攻击对应的指示器。示例性的,点式技能指示器包括在虚拟环境中显示的瞄准点。示例性的,点式技能指示器包括瞄准范围和瞄准点。示例性的,瞄准范围是根据第一虚拟对象所在的第一地图点确定的范围。例如,瞄准范围是以第一虚拟对象所在位置为中心点,以瞄准半径为半径的圆形。瞄准点是根据瞄准操作的触点映射到虚拟环境中的点。示例性的,点式技能指示器上还可以显示参考范围。参考范围是根据瞄准点确定的范围,例如,参考范围是以瞄准点为中心点,以参考半径为半径的圆形。示例性的,点式技能指示器上还可以显示参考线,参考线是第一虚拟对象所在位置与瞄准点的连线。

例如,如图9所示,给出了一种点式技能指示器901,该点式技能指示器901包括瞄准范围902、瞄准点903、参考范围904、参考线905。再如,如图10所示,给出了一种点式技能指示器901,该点式技能指示器901包括瞄准范围902、瞄准点903、参考范围904。

步骤603,响应于在第二时刻接收到瞄准操作的结束指令,控制第一虚拟对象瞄准目标虚拟对象,目标虚拟对象是根据第一优先级原则从第二虚拟对象中确定的一个虚拟对象,第一优先级原则包括虚拟对象类型的优先级高于第二虚拟对象与瞄准点的直线距离的优先级,其中,第二时刻与第一时刻的差值小于时间阈值。

示例性的,第二时刻是瞄准操作的结束时刻。示例性的,当客户端在一段时间内没有接收到瞄准操作的下一个触点时,将最后一个触点确定为本次瞄准操作的偏移点(结束点),并将偏移点对应的时间(第二时刻)确定为结束时刻。结束指令中包括偏移点。

示例性的,客户端根据偏移点相对于激活点的偏移方向,来确定瞄准点相对于第一虚拟对象所在位置的偏移方向(瞄准方向);根据偏移点到激活点的偏移距离与轮盘半径的比值,来确定瞄准点到第一虚拟对象所在位置的瞄准距离与瞄准半径的比值,进而计算得到瞄准点在虚拟环境中的坐标位置。轮盘半径是轮盘区域的半径,瞄准半径是第一虚拟对象瞄准的最大距离。

示例性的,客户端根据结束指令中存储的触点(偏移点)来计算得到瞄准点,根据第二虚拟对象与瞄准点的直线距离、以及第二虚拟对象的虚拟对象类型从第二虚拟对象中选出一个目标虚拟对象,使第一虚拟对象瞄准目标虚拟对象。

示例性的,当瞄准操作的持续时长(第二时刻与第一时刻之差)小于时间阈值时,客户端根据第一优先级原则来选出目标虚拟对象。其中,第一优先级原则是优先考虑虚拟对象类型,然后再考虑直线距离的原则。即,第一虚拟对象优先瞄准指定类型的虚拟对象。例如,当瞄准操作是快速瞄准操作(快速拖动操作)时,客户端优先瞄准英雄。

示例性的,第一优先级原则至少是根据直线距离和虚拟对象类型设置的原则,在其他可选的实施例中,第一优先级原则还可以根据其他参数或条件来设置,例如,第二虚拟对象与第一虚拟对象的距离、第二虚拟对象的血量(生命值)、防御值、攻击力、职业、性别、攻击属性(物理攻击或法术攻击)等。

示例性的,客户端可以根据第一优先级原则来设置分类树,根据优先级来确定每一个参数的分类先后顺序,进而确定出瞄准目标。例如,客户端按照虚拟对象类型对第二虚拟对象进行分类,获取第一类型的第二虚拟对象,然后对于第一类型的第二虚拟对象再按照直线距离进行排序,将直线距离最小的虚拟对象确定为瞄准目标(目标虚拟对象)。

示例性的,客户端还可以根据第一优先级原则来设置各个参数或条件的权重分数,然后计算第二虚拟对象的优先级分数,将优先级分数最高或最低的虚拟对象确定为瞄准目标(目标虚拟对象)。

时间阈值是服务器设置的用于判断瞄准操作是否为快速瞄准操作的判断标准。当瞄准操作的持续时长大于时间阈值时,客户端将瞄准操作确定为正常瞄准操作(拖动操作);当瞄准操作的持续时长小于时间阈值时,客户端将瞄准操作确定为快速瞄准操作(快速拖动操作)。对应不同的瞄准操作,客户端会遵从不同的优先级原则来确定瞄准目标。

示例性的,时间阈值可以是时长,例如,0.5s、1s。示例性的,时间阈值也可以是本次对局的逻辑时间(逻辑帧),例如,2个逻辑帧。示例性的,在对局开始时,参与本次对局的所有客户端以及为本次对局提供逻辑运算服务的服务器都会同步计时本次对局的额逻辑时间,并周期性校准该逻辑时间,以保证本次对局中所有客户端的逻辑时间一致。逻辑帧与表现帧的对应关系详见上一个实施例,即,时间阈值也可以是客户端的表现帧,例如,4个表现帧。

示例性的,本实施例中的瞄准包括普通瞄准和锁定瞄准中的至少一种。普通瞄准:当瞄准目标(目标虚拟对象)的位置发生变化,瞄准即自动取消。锁定瞄准:当瞄准目标(目标虚拟对象)的位置发生变化,瞄准也不会被取消。

示例性的,当第一虚拟对象通过普通瞄准的方式瞄准目标虚拟对象后,目标虚拟对象进行了移动使位置发生改变,则第一虚拟对象不再瞄准目标虚拟对象,也不会对目标虚拟对象使用技能或进行普通攻击,如果用户想要继续瞄准目标虚拟对象,则需要再次进行瞄准操作瞄准目标虚拟对象。

示例性的,当第一虚拟对象通过锁定瞄准的方式瞄准目标虚拟对象后,第一虚拟对象会持续地瞄准目标虚拟对象进行技能释放或普通攻击。在一种实施例中,第一对象通过锁定瞄准的方式瞄准目标虚拟对象后,当目标虚拟对象的位置发生改变,使目标虚拟对象的位置超出第一虚拟对象的攻击范围(瞄准范围)时,客户端还会自动控制第一虚拟对象对目标虚拟对象进行跟随,以便继续瞄准目标虚拟对象进行攻击。示例性的,锁定瞄准的结束方式可以包括以下几种:在瞄准时长达到预定时长后,停止锁定瞄准;在目标虚拟对象移动出第一虚拟对象的瞄准范围后,停止瞄准;在目标虚拟对象或第一虚拟对象死亡后,停止瞄准;在用户重新进行瞄准操作,瞄准第二虚拟对象时,停止对目标虚拟对象的瞄准。

综上所述,本实施例提供的方法,通过在接收到用户的瞄准操作时,根据用户选中的瞄准点以及第二虚拟对象的虚拟对象类型,为用户瞄准类型优先级较高的目标虚拟对象。例如,通常情况下,用户会更想攻击英雄,客户端就会优先为用户瞄准英雄。从而提高客户端瞄准虚拟对象的能力,降低用户瞄准虚拟对象所需要的操作难度,提高瞄准操作的人机交互效果和准确率。当对局非常激烈时,在虚拟环境画面上可能存在很多个用户可以瞄准的虚拟对象,例如,虚拟环境画面上有敌方英雄和多个小兵,为了赢得对局优势,用户需要快速瞄准以控制第一虚拟对象攻击敌方英雄,但由于可瞄准的虚拟对象过多,且大部分是用户不想瞄准到的小兵,用户很难准确瞄准到敌方英雄。此时,使用本申请实施例提供的方法,用户只需要快速进行瞄准操作给出一个大致的瞄准位置,客户端就会根据可瞄准的虚拟对象类型,优先为用户瞄准英雄,而不是小兵,从而提高用户瞄准操作的效率和准确率。

示例性的,给出了一种根据第一优先级原则确定目标虚拟对象的示例性实施例。

图11示出了本申请一个示例性实施例提供的虚拟对象的瞄准方法的流程图。该方法可以由上述图1中的任一终端上运行的客户端来执行,该客户端是支持虚拟环境的客户端。基于如图6所示的示例性实施例,步骤603包括步骤6031至步骤6034,步骤603之后还包括步骤605。

步骤6031,响应于在第二时刻接收到瞄准操作的结束指令,将位于目标选择范围中的至少两个第二虚拟对象确定为候选虚拟对象,目标选择范围是根据第一虚拟对象所在的第一地图点和瞄准点中的至少一个确定的范围。

示例性的,瞄准操作对应有目标选择范围,用户可以通过瞄准操作来瞄准目标选择范围中的目标(虚拟对象)。目标选择范围用于选出候选虚拟对象,进而从候选虚拟对象中选出瞄准目标(目标虚拟对象)。示例性的,目标选择范围可以是根据第一虚拟对象所在位置确定的,也可以是根据瞄准点来确定的。

当目标选择范围是根据第一虚拟对象所在位置确定的时,目标选择范围可以是第一虚拟对象当前瞄准操作的瞄准范围。瞄准范围可以是以第一虚拟对象所在位置为中心点,以瞄准半径为半径的圆形。此外,目标选择范围还可以是瞄准范围加扩充范围,扩充范围是对瞄准范围的扩充,例如,扩充范围是在瞄准范围之外宽度为y的环形。

例如,客户端调用搜敌接口,来搜索目标选择范围中的其他虚拟独享。搜敌接口在以第一虚拟对象所在的第一地图点为中心,以(x+y)作为半径所确定的圆形范围内,将位于圆形范围内所有第二虚拟对象都加入候选虚拟对象列表,确定为候选虚拟对象。其中,x是瞄准的最大瞄准范围的半径,y是预瞄准范围的半径与最大瞄准范围的半径的差值,预瞄准范围是一个套接在最大瞄准范围之外的圆环状范围,

例如,如图12所示,目标选择范围包括以第一虚拟对象为中心的圆形的瞄准范围1201和环形的扩充范围1202。瞄准点可以在瞄准范围1201内任意移动,但无法超出瞄准范围1201到达扩充范围1202。

客户端根据虚拟环境中所有第二虚拟对象的坐标位置,来确定位于目标选择范围内的第二虚拟对象,并将其确定为候选虚拟对象。示例性的,客户端也可以分别计算第二虚拟对象与第一虚拟对象的距离,将距离小于目标选择范围半径的确定为候选虚拟对象。

示例性的,客户端会将候选虚拟对象生成候选虚拟对象列表,对候选虚拟对象列表进行筛选或排序,得到瞄准目标(目标虚拟对象)。

步骤6032,获取至少两个候选虚拟对象的虚拟对象类型,虚拟对象类型包括第一类型和第二类型。

客户端获取每一个候选虚拟对象的虚拟对象类型。虚拟对象类型至少包括第一类型和第二类型,示例性的,第一类型是在虚拟环境中参与对局的虚拟对象,第二类型是虚拟环境中设置的虚拟对象。例如,第二类型的虚拟对象包括:野怪、小兵、防御塔、水晶、兵营等。示例性的,由于用户通常想要攻击的目标都是第一类型的虚拟对象,因此,第一类型的优先级高于第二类型。

步骤6033,响应于第一类型的优先级高于第二类型的优先级,将第一类型的候选虚拟对象确定为目标虚拟对象。

当候选虚拟对象中只存在一个第一类型的候选虚拟对象时,客户端将该候选虚拟对象确定为目标虚拟对象。

当候选虚拟对象中存在多个第一类型的候选虚拟对象时,客户端还会根据直线距离来进一步筛选目标虚拟对象。

如图13所示,步骤6033还包括步骤6033-1和步骤6033-2。

步骤6033-1,响应于第一类型的优先级高于第二类型的优先级且存在至少两个第一类型的候选虚拟对象,获取至少两个第一类型的候选虚拟对象与瞄准点的直线距离。

当第一类型的候选虚拟对象存在多个时,客户端分别计算每个第一类型的候选虚拟对象与瞄准点的直线距离,并根据直线距离进行排序,将距离瞄准点最近的候选虚拟对象确定为瞄准目标(目标虚拟对象)。

步骤6033-2,将直线距离最小的第一类型的候选虚拟对象确定为目标虚拟对象。

步骤6034,控制第一虚拟对象瞄准目标虚拟对象。

步骤605,在目标虚拟对象上显示选中特效,选中特效包括如下特效中的至少一种:在目标虚拟对象所在的第二地图点上显示第一选中标识,在目标虚拟对象的上方显示第二选中标识。

示例性的,由于瞄准操作是一种连续性操作,客户端对瞄准操作中的任意一个触点都会计算响应的瞄准点,并控制瞄准点随着触点的移动而移动。根据不同的瞄准点,客户端可能会算出不同的瞄准目标(目标虚拟对象)。

示例性的,由于当瞄准操作是快速瞄准操作时,快速瞄准操作的持续时间较短,为了防止瞄准目标在短时间内多次变换,使用户无法分清正在瞄准哪个目标,在快速瞄准操作的操作过程中客户端并不会在瞄准目标上显示选中特效。只有当快速瞄准操作结束后,客户端确定了本次快速瞄准操作最终选定的瞄准目标,才会对该瞄准目标显示出选中特效,从而告知用户第一对象正在瞄准瞄准目标,对瞄准目标释放技能或发动普通攻击。

即,在快速瞄准操作的操作过程中,在用户界面上会显示随着快速瞄准操作实时变换的点式技能指示器的瞄准点,并不会在当前的瞄准目标上显示选中特效。当快速瞄准操作结束时,客户端不再显示点式技能指示器,而会在瞄准目标上显示选中特效。

示例性的,当瞄准操作的持续时间超过时间阈值,瞄准操作为正常瞄准操作时,在正常瞄准操作的持续时间超过时间阈值后,客户端会根据正常瞄准操作当前的瞄准点实时确定瞄准目标(第三瞄准目标),并在瞄准目标上显示选中特效。在正常瞄准操作的持续时间小于时间阈值时,客户端同样不会显示选中特效。当客户端结束正常瞄准操作时,选中特效停留在最后瞄准的瞄准目标上,并控制第一虚拟对象对瞄准目标释放技能或发动普通攻击。

即,选中特效是在瞄准操作的持续时间超过时间阈值后,才开始显示的,直到第一虚拟对象停止释放技能或停止普通攻击时,停止显示选中特效。

示例性的,选中特效是指对虚拟环境中的虚拟对象(目标虚拟对象)进行区别显示。例如,改变虚拟对象的模型颜色、昵称颜色、血量条颜色,对虚拟对象的模型、昵称、血量条进行高亮显示,加粗虚拟对象的模型描边、昵称字体、血量条描边,在虚拟对象周围显示选中图标、选中光柱、选中动画等。

例如,如图14所示,选中特效可以是显示在目标虚拟对象上方的瞄准图标1401,显示在目标虚拟对象头上的光柱1402,改变目标虚拟对象的三维虚拟模型1403的颜色等。

综上所述,本实施例提供的方法,通过在接收到用户的瞄准操作时,获取位于目标选择范围内的第二虚拟对象,生成候选虚拟对象列表,然后从候选虚拟对象列表中根据第一优先级原则选出目标虚拟对象。客户端只需要计算位于目标选择范围内的第二虚拟对象,减少客户端的计算量。

本实施例提供的方法,通过获取每个候选虚拟对象的虚拟对象类型和与瞄准点的直线距离,先根据虚拟对象类型来选中优先级较高的类型的候选虚拟对象,再从该类候选虚拟对象中选出距离瞄准点最近的候选虚拟对象,确定为目标虚拟对象。从而综合考量虚拟对象类型和与瞄准点的直线距离,选出用户更倾向于瞄准的虚拟对象,使客户端选出的目标虚拟对象更准确。

示例性的,当瞄准操作的持续时长大于时间阈值时,客户端还会根据第二优先级原则来确定瞄准目标,使用户可以选择通过精准瞄准来准确选择瞄准目标。

图15示出了本申请一个示例性实施例提供的虚拟对象的瞄准方法的流程图。该方法可以由上述图1中的任一终端上运行的客户端来执行,该客户端是支持虚拟环境的客户端。基于如图6所示的示例性实施例,步骤603之后还包括步骤604。

步骤604,响应于在第三时刻未接收到瞄准操作的结束指令,控制第一虚拟对象瞄准第三虚拟对象,第三虚拟对象是根据第二优先级原则从第二虚拟对象中确定的一个虚拟对象,第二优先级原则包括虚拟对象类型的优先级低于第二虚拟对象与瞄准点的直线距离的优先级;其中,第三时刻与第一时刻的差值等于时间阈值。

示例性的,如果瞄准操作在第三时刻还未结束,则本次瞄准操作就不是快速瞄准操作,客户端会根据正常瞄准操作的运算逻辑,来确定本次瞄准操作的瞄准目标。

示例性的,当瞄准操作是正常瞄准操作(拖动操作)时,客户端根据第二优先级原则来确定瞄准目标(第三虚拟对象)。

第二优先级原则是优先考虑直线距离的原则。即,第一虚拟对象优先瞄准指定距离瞄准点最近的虚拟对象。例如,当瞄准操作是正常瞄准操作(拖动操作)时,客户端优先瞄准距离瞄准点最近的其他虚拟角色。

示例性的,第二优先级原则至少是根据直线距离设置的原则,在其他可选的实施例中,第一优先级原则还可以根据其他参数或条件来设置,例如,虚拟对象类型、第二虚拟对象与第一虚拟对象的距离、第二虚拟对象的血量(生命值)、防御值、攻击力、职业、性别、攻击属性(物理攻击或法术攻击)等。

示例性的,如图16所示,步骤604还包括步骤6041到步骤6044。

步骤6041,响应于在第三时刻未接收到瞄准操作的结束指令,将位于目标选择范围中的至少两个第二虚拟对象确定为候选虚拟对象,目标选择范围是根据第一虚拟对象所在的第一地图点和瞄准点中的至少一个确定的范围。

示例性的,步骤6041中的目标选择范围可以是与步骤6031中的目标选择范围相同的目标选择范围,也可以是与步骤6031中的目标选择范围不同的目标选择范围。

示例性的,步骤6041中的目标选择范围与步骤6031中的目标选择范围相同,参见步骤6031中对目标选择范围的介绍。

步骤6042,获取至少两个候选虚拟对象与瞄准点的直线距离。

示例性的,客户端在获得候选虚拟对象的候选虚拟对象列表后,分别计算列表中候选虚拟对象与瞄准点的直线距离,并根据直线距离对候选虚拟对象进行排序。

步骤6043,将直线距离最小的候选虚拟对象确定为第三虚拟对象。

步骤6044,控制第一虚拟对象瞄准第三虚拟对象。

示例性的,在第三时刻,瞄准操作还未结束,即,瞄准操作还在操作过程中,此时,客户端会根据瞄准操作当前的触点实时计算对应的瞄准目标,并根据计算的二到的瞄准目标实时显示选中特效,以便用户观察当前瞄准操作所瞄准的虚拟对象。

综上所述,本实施例提供的方法,通过在快速拖动操作时,利用第一优先级原则从第二虚拟对象中选出瞄准目标(目标虚拟对象);在拖动操作时,依旧按照原有的第二优先级规则选出瞄准目标(第三虚拟对象);使用户可以通过不同的操作来根据不同的优先级原则选中目标单位,提高瞄准操作的准确度和人机交互效率。

示例性的,在根据目标选择范围生成候选虚拟对象列表后,还会对候选虚拟对象列表中的候选虚拟对象进行筛选,根据第一优先级原则或第二优先级原则从筛选后的候选虚拟对象列表中选出瞄准目标。

示例性的,客户端将位于目标选择范围中的至少两个第二虚拟对象确定为候选虚拟对象之后,该方法还包括:

客户端根据瞄准条件和优先级条件中的至少一个筛选候选虚拟对象,瞄准条件包括瞄准操作可选中的虚拟对象应符合的条件,优先级条件包括如下条件中的至少一种:

优先选择离瞄准点最近的候选虚拟对象;

优先选择血量百分比最少的候选虚拟对象;

优先选择血量绝对值最少的候选虚拟对象。

瞄准条件包括用户进行瞄准操作时,瞄准操作对应的条件。例如,当瞄准操作是控制第一虚拟对象释放技能的操作时,瞄准条件是技能的释放条件,例如,该技能只能作用于敌方英雄,或,该技能只能作用于虚拟建筑物等。当瞄准操作是控制第一虚拟对象进行普通攻击的操作时,瞄准条件是普通攻击的攻击条件,例如,第一虚拟对象只能对英雄进行普通攻击,或,只能对防御塔进行普通攻击。

示例性的,瞄准条件还包括瞄准操作对应的其他细化条件,例如,处于无敌状态、不可被选中状态的第二虚拟对象不能被选中;带有某种增益或减益效果的第二虚拟对象不能被选中;在一段时间内已经被同一个技能攻击过的第二虚拟对象不能被选中;优先选中目标选择范围中位于第一区域的第二虚拟对象;当第一区域不存在第二虚拟对象时,再选中目标选择范围中位于第二区域的第二虚拟对象。

优先级条件包括如下条件中的至少一个:

1、距离优先条件;

优先选择离瞄准点最近的候选虚拟对象。如图5所示,候选虚拟对象中同时存在虚拟对象a和虚拟对象b,虚拟对象a与瞄准点302之间的直线距离为第一距离,虚拟对象b与瞄准点302之间的直线距离为第二距离。当第一距离小于第二距离时,优先选择虚拟对象a为瞄准目标。

2、血量百分比优先条件;

优先选择血量百分比最少的候选虚拟对象。如图4所示:候选虚拟对象中同时存在虚拟对象a和虚拟对象b,虚拟对象a的血量百分比为100%,虚拟对象b的血量百分比为80%,优先选择候选虚拟对象b为瞄准目标。

3、血量绝对值优先条件;

优先选择血量绝对值最少的候选虚拟对象。比如:候选虚拟对象中同时存在虚拟对象a和虚拟对象b,虚拟对象a的血量为1200点,虚拟对象b的血量为801点,优先选择虚拟对象b为瞄准目标。

4、类型优先级优先条件;

优先选择虚拟对象类型优先级最高的候选虚拟对象。比如:候选虚拟对象中同时存在虚拟对象a和虚拟对象b,虚拟对象a的类型为英雄,虚拟对象b的类型为小兵,英雄的优先级大于小兵的优先级,优先选择虚拟对象a为瞄准目标。

示例性的,客户端根据优先级原则从候选虚拟对象列表中过滤掉至少一个候选虚拟对象,过滤后的候选虚拟对象列表中存在至少一个候选虚拟对象,然后再对过滤后的候选的虚拟对象列表根据第一优先级原则或第二优先级原则确定瞄准目标。

可选地,当优先级条件包括至少两种不同的优先级条件时,可设定主优先级条件和次优先级条件,当主优先级条件选择完毕后,不存在选择结果或存在不止一个选择结果时,使用次优先级条件进行选择。比如,先按照距离优先条件进行选择,当存在两个候选虚拟对象离瞄准点的距离相同时,再按照类型优先级优先条件进行选择,从而筛选得到筛选后的候选虚拟对象列表。

综上所述,本实施例提供的方法,通过根据瞄准条件和优先级条件将候选虚拟对象列表中不符合条件的候选虚拟对象从列表中删除,然后再对列表中的候选虚拟对象根据优先级原则排序,使最终得到的瞄准目标符合技能或普通攻击的攻击条件,是能够被第一虚拟对象打中的虚拟对象。

示例性的,还给出了一种计算瞄准点的示例性实施例。还给出了一种根据优先级分数从候选虚拟对象列表中选出瞄准目标的示例性实施例。

图17示出了本申请一个示例性实施例提供的虚拟对象的瞄准方法的流程图。该方法可以由上述图1中的任一终端上运行的客户端来执行,该客户端是支持虚拟环境的客户端。基于如图6所示的示例性实施例,步骤602包括步骤6021到步骤6024,步骤603包括步骤6035到步骤6039。

上述瞄准操作是触发轮盘瞄准控件(轮盘式虚拟摇杆控件)的操作。客户端显示的用户界面上还包括:轮盘瞄准控件,该轮盘瞄准控件叠加显示在虚拟环境画面之上。轮盘瞄准控件包括摇杆按钮和轮盘区域,瞄准操作是触发轮盘瞄准控件使摇杆按钮从激活点移动至偏移点的拖动操作,激活点是轮盘区域的中心位置。

步骤6021,响应于在第一时刻接收到瞄准操作的开始指令,计算瞄准操作的激活点与偏移点的偏移向量;

可选地,拖动操作(瞄准操作)触发终端中的触摸屏向cpu(centralprocessingunit,中央处理器)上报一连串的触摸指令,包括但不限于:一个触摸开始指令、至少一个触摸移动指令和一个触摸结束指令。每个触摸指令中均携带有用户手指在触摸屏上实时的触摸坐标(触点)。示例性的,当触点超出轮盘区域的死区时,客户端将每一个触点作为偏移点实时计算该偏移点对应的瞄准点。

结合参考图18,激活点91是指轮盘区域的中心位置。在一些实施例中,轮盘区域的中心位置是固定不变的;当轮盘区域的中心位置固定不变时,激活点是轮盘区域的中心位置。在另一些实施例中,轮盘区域的中心位置是动态改变的,当用户的右手拇指落下时,触摸屏检测到的手指落下位置被设定为轮盘区域的中心位置。当轮盘的中心位置动态改变时,激活点是用户手指落下位置,即,轮盘区域的中心位置。

当用户的手指将摇杆按钮在轮盘区域中拖动时,摇杆位置会从激活点91偏移至偏移点92。客户端中记录有激活点91的第一坐标,和偏移点92的第二坐标,根据第二坐标和第一坐标计算得到偏移向量。

其中,偏移向量是从激活点91指向偏移点92的向量,第一坐标和第二坐标均为触摸屏所在平面的坐标(二维坐标),偏移向量是位于触摸屏所在平面的向量。

步骤6022,根据偏移向量计算瞄准向量,瞄准向量是从第一虚拟对象所在位置指向瞄准点的向量,偏移向量与轮盘半径之比等于瞄准向量与瞄准半径之比,轮盘半径是轮盘区域的半径,瞄准半径是第一虚拟对象瞄准的最大距离;

瞄准向量是从第一虚拟对象所在的第一地图点指向瞄准点的向量。

可选地,如图18所示,偏移向量的长度l1与轮盘半径r1之比,等于瞄准向量的长度l2与瞄准半径r2之比。轮盘半径r1是轮盘区域的半径,瞄准半径r2是第一虚拟对象在瞄准时的最大瞄准距离。在一些实施例中,瞄准半径r2等于技能(或普通攻击)的最大射程距离x。在另一些实施例中,也可以根据目标选择范围的选择半径来代替瞄准半径计算瞄准向量。选择半径等于技能(或普通攻击)的最大射程距离x和预瞄准距离y的和。本实施例以前者来举例。

可选地,如图18所示,α1等于瞄准夹角α2。α1是偏移向量相对于水平方向的偏移夹角,α2是瞄准向量相对于虚拟环境中的x轴的偏移夹角。

瞄准向量是在虚拟环境中的向量。当虚拟环境是三维虚拟环境时,瞄准向量是虚拟环境中的平面上的向量。

示例性的,客户端将偏移向量通过映射关系映射到虚拟环境中得到瞄准向量。映射关系是虚拟环境画面到虚拟环境的投影关系。

步骤6023,根据瞄准向量和第一虚拟对象所在位置计算瞄准点;

客户端将第一虚拟对象所在位置与瞄准向量相加,计算得到瞄准点。可选地,瞄准点是位于虚拟环境的地平面上的点。

步骤6024,根据瞄准点在虚拟环境的地平面上显示点式技能指示器。

步骤6035,响应于接收到瞄准操作的结束指令,记录接收到结束指令的结束时刻。

当瞄准操作是快速瞄准操作时,即结束时刻小于第三时刻时,将结束时刻记为第二时刻。当瞄准操作是正常瞄准操作时,即结束时刻大于第三时刻时,将结束时刻记为第四时刻。

例如,如图19所示,用户在t1时刻开始瞄准操作,在t3时刻结束瞄准操作,则用户抬起技能按键的时刻t3即为结束时刻。其中,t1为第一时刻,t4为第三时刻,t4-t1为时间阈值。当瞄准操作是快速瞄准操作时,瞄准操作的持续时间比时间阈值短,即,结束时刻位于t4时刻之前,t3为第二时刻(结束时刻);当瞄准操作是正常瞄准操作时,瞄准操作的持续时间比时间阈值长,即,结束时刻位于t4时刻之后。在t1到t3中的t2时刻客户端实时计算瞄准操作所瞄准的目标,用户抬起技能案件后,在t5时刻第一虚拟对象对瞄准的瞄准目标释放技能。

步骤6036,将位于目标选择范围中的至少两个第二虚拟对象确定为候选虚拟对象,目标选择范围是根据第一虚拟对象所在的第一地图点和瞄准点中的至少一个确定的范围。

步骤6037,计算候选虚拟对象的优先级分数,优先级分数是根据虚拟对象类型的类型权重、直线距离、时间阈值、瞄准操作的持续时长中的至少一项计算得到的,持续时长是结束时刻与第一时刻之差。

示例性的,不同的虚拟对象类型对应有不同的类型权重。客户端会根据候选虚拟对象的类型权重、直线距离、时间阈值、瞄准操作的持续时长中的至少一项来计算候选虚拟对象的优先级分数。

示例性的,如图20所示,步骤6037还包括步骤6037-1到步骤6037-4。

示例性的,客户端根据如下的式子计算候选虚拟对象的优先级分数。

curweight=distance+weight*max((maxframe-aimframes),0)/maxframe

其中,curweight是优先级分数,distance是候选虚拟对象与瞄准点的直线距离,weight是候选虚拟对象的类型权重,maxframe是时间阈值,aimframes是瞄准操作的持续时长,(maxframe-aimframes)是时间阈值与持续时长的差值,max((maxframe-aimframes),0)是取该差值和0中较大的数,当持续时长大于时间阈值时max((maxframe-aimframes),0)取0,当持续时长小于时间阈值时max((maxframe-aimframes),0)取(maxframe-aimframes)。

步骤6037-1,获取候选虚拟对象的虚拟对象类型对应的类型权重。

示例性的,客户端获取每个候选虚拟对象的虚拟对象的类型权重weight。

步骤6037-2,计算候选虚拟对象与瞄准点的直线距离。

示例性的,客户端计算候选虚拟对象所在位置与瞄准点的直线距离distance。

步骤6037-3,计算瞄准操作的持续时长对应的时间权重,其中,响应于持续时长大于时间阈值,时间权重为0;响应于持续时长小于时间阈值,时间权重非0。

示例性的,客户端先根据结束时刻和第一时刻极端瞄准操作的持续时长aimframes(结束时刻减第一时刻的差值)。然后计算时间阈值和持续时长差值(maxframe-aimframes),利用max((maxframe-aimframes),0)计算得到时间权重。

步骤6037-4,将类型权重与时间权重的乘积,与直线距离之和确定为候选虚拟对象的优先级分数。

示例性的,客户端将上述步骤计算得到的参数带入优先级分数的计算公式,计算得到候选虚拟对象的优先级分数。

步骤6038,根据优先级分数从候选虚拟对象中确定目标虚拟对象。

示例性的,客户端将优先级分数最大或优先级分数最小的候选虚拟对象确定为目标虚拟对象。

示例性的,类型权重weight为负数,虚拟对象类型的优先级越高类型权重越小,则客户端将优先级分数最小的候选虚拟对象确定为目标虚拟对象。

步骤6039,控制第一虚拟对象瞄准目标虚拟对象。

综上所述,本实施例提供的方法,通过获取每个候选虚拟对象的虚拟对象类型对应的类型权重、每个候选虚拟对象与瞄准点的直线距离、时间阈值、瞄准操作的持续时长,计算出每个候选虚拟对象的优先级分数,根据优先级分数来确定瞄准目标。使客户端根据优先级分数就可以实现对快速瞄准操作用第一优先级原则选出瞄准目标,对正常瞄准操作用第二优先级原则选出瞄准目标,减少客户端的判断或计算过程,提高瞄准目标的确定效率和准确度。

以第一虚拟对象向目标虚拟对象释放技能为例,如图21所示,上述瞄准虚拟对象的方法包括:

步骤2101,轮盘瞄准控件的摇杆按钮被按下并拖动;

在摇杆按钮被按下时,触摸屏向cpu上报触摸开始事件,客户端记录触摸开始事件中的第一坐标,作为激活点downpos。

在摇杆按钮被拖动时,触摸屏按照采样频率向cpu上报触摸移动事件,客户端记录最近一个触摸移动事件中的第二坐标,作为偏移点dragpos。

步骤2102,计算拖动后的摇杆按钮,在虚拟环境中对应的瞄准点focuspoint;

设轮盘瞄准控件中的轮盘半径(最大的拖动范围)为maxdragradius,用户控制的第一英雄在虚拟环境中所处的第一地图点为heropos,指向性技能的最大射程半径x,采用如下比例关系计算瞄准点相对于第一地图点的偏移位置:

|dragpos-downpos|/maxdragradius=|focuspoint–heropos|/x;

另外,需要计算出瞄准点focuspoint相对第一地图点heropos的朝向。示意性的,先将屏幕中心点(0,0)位置映射到三维虚拟环境中的位置screencenter2sencepos,位置screencenter2sencepos也是摄像机模型的观察中心,然后用屏幕中心点(0,0)+偏移向量(dragpos-downpos)的位置映射出参考点screendrag2scenepos。在三维虚拟环境中参考点screendrag2scenepos与观察中心screencenter2sencepos的位置朝向就是瞄准点focuspoint与第一地图点heropos的位置朝向。综合以上获得以下公式:

focuspoint=heropos+(|dragpos-downpos|/maxdragradius)*x*normalize(screendrag2scenepos-screencenter2sencepos)。

其中,normalize代表归一化,normalize(screendrag2scenepos-screencenter2sencepos)为归一化后的单位瞄准向量。

步骤2103,根据技能信息(技能树id、瞄准点、最大射程范围、最大射程范围外的预瞄准范围等参数)调用搜敌接口;

其中,技能树id是指向性技能的标识。最大射程范围是指向性技能的最大射程范围,通常为圆形范围。可选地,最大射程范围采用上述最大射程半径x来表示。最大射程范围外的预瞄准范围用y来表示。其中,y可以由策划为每个指向性技能单独配置。

步骤2104,获取第一英雄(最大射程范围+预瞄准范围)周围的第二虚拟对象存入候选虚拟对象列表;

搜敌接口在以第一英雄所在的第一地图点为中心,以(x+y)作为半径所确定的圆形范围内,将属于圆形范围内所有其他英雄都加入目标列表。其中,x是技能的最大射程范围的半径,y是预瞄准范围的半径与最大射程范围的半径的差值,预瞄准范围是一个套接在最大射程范围之外的圆环状范围.

步骤2105,遍历候选虚拟对象列表,删除不符合过滤器的对象;

策划会给每一个指向性技能配置一个过滤器id,此过滤器id也就是指向性技能的释放目标所需要满足的合法条件,比如与第一英雄属于不同阵营的虚拟对象、不能是特定类型(比如建筑,大小龙、眼)的虚拟对象、不能是处于特定状态的虚拟对象(隐身,不可选中)等。

客户端遍历候选虚拟对象列表中的候选虚拟对象,是否符合过滤器规则,将不符合过滤器的候选虚拟对象从候选虚拟对象列表中删除。

步骤2106,调用搜索树,找出合适的第二英雄。

搜索树的结构如图22所示,首先搜索树中所有节点都继承自baseselector节点,baseselector节点主要有两个方法configure和battleactorselect,battleactor是指候选虚拟对象。其中:

configure用于根据策划的配置的表格数据初始化selector子类的自身数据,比如,branchselector节点就需要配置多个分支,那么configure配置的数据就是几个分支selector的id,又比如在shapefilter节点中需要配置目标目标选择范围的形状字段,比如有圆形,扇形,当然还要比如圆形的半径,扇形的角度等参数。

battleactorselect函数的输入参数为候选虚拟对象列表list<battleactor>,返回参数为过滤后的候选虚拟对象battleactor,但是其实际内容根据selector子类实现不同会有不同的行为。

baseselector节点包括有三个核心派生子类:linkedselector、branchselector和priorityselector。

linkselector:核心是有一个next参数,用于表示下一个需要的过滤器,从而形成链状结构。它有很多子类,很多子类基本都是过滤器filter。主要在select函数中将不符合合法规则的候选虚拟对象battleactor删除,并将删除了不符合合法规则的候选虚拟对象battleactor的list<battleactor>传递给下一个selector,这样就实现了过滤器。比如目标目标选择范围对应的shapeselector,会在configure配置需要的图形和参数,select函数则会逐个判断list<battleactor>中的候选虚拟对象是否在目标目标选择范围对应的形状范围内,并且将不在目标目标选择范围的候选虚拟对象从list<battleactor>中删除,其他filter同理,比如bufftypefilter会将具有某一类附加效果buff的候选虚拟对象删除,idselector将含有某个id的候选虚拟对象删除,用于处理某个技能不能第二次命中敌人,除了以上的过滤器之外,还可以其他很多具体的过滤器,比如保证当前技能释放就会击杀的cankillfilter,比如idfilter用来筛选某一个单独角色,还有很多filter的实现不再赘述。

branchselector:主要功能是用于处理多个规则优先级。在配置表格中会配置几个selectorid,在configure函数中会根据配置的selectorid初始化成员变量selectors,在select函数中需要参数list<battleactor>actors先暂停存起来,然后逐个用selectors中的baseselector以暂存的list<battleactor>作为参数调用select函数判断是否存在返回候选虚拟对象battleactor,如果存在返回候选虚拟对象battleactor就表示已经有一个候选虚拟对象battleactor满足目标规则,则不需要遍历之后的selectors,如果没有返回则调用下一个selectors中的baseselector。

priorityselector:策划人员利用这个selector将已经过滤完成的list<battleactor>进行排序,选出合适的目标虚拟对象battleactor。策划需要在表格中配置优先规则,比如血量优先、距离优先、百分比血量优先等,在select函数中会根据配置的优先规则对列表list<battleactor>做一个排序,并返回列表中的第一个,如果列表为空则返回null。

通过上述selector的组合使用,可以实现非常复杂的搜敌逻辑。示意性的如图23,在快速瞄准操作时根据第一优先级原则确定瞄准目标,正常瞄准操作时根据第二优先级原则确定瞄准目标时,那么我们整个搜索树的结构如图23所示。

步骤2301,客户端初始化参数,设置minweight=0;minweighttarget=null

步骤2302,客户端遍历候选虚拟对象列表中的候选虚拟对象,选择当前目标curtarget进行下列步骤。

步骤2303,客户端计算当前目标与瞄准点距离distance。

步骤2304,客户端获取当前目标的类型权重weight。

步骤2305,客户端计算当前目标的优先级分数。

curweight=distance+weight*max((maxframe-aimframes),0)/maxframe

步骤2306,客户端判断当前目标的优先级分数是否小于minweight。若小于则进行步骤2307,否则进行步骤2308。

步骤2307,客户端将当前目标的优先级分数赋值给minweight,将当前目标确定为minweighttarget。

步骤2308,客户端判断是否遍历了候选虚拟对象列表,若是则进行步骤2309,否则进行步骤2302。

步骤2309,客户端输出minweighttarget,即为候选虚拟对象列表中优先级分数最小的目标。

综上所述,本实施例提供的方法,通过在接收到用户的瞄准操作时,根据用户选中的瞄准点以及第二虚拟对象的虚拟对象类型,从多个第二虚拟对象中选出优先级最高的目标虚拟对象,控制第一虚拟对象瞄准目标虚拟对象。使客户端确定瞄准的虚拟对象的依据,不知局限于虚拟对象与瞄准点的距离,还会根据虚拟对象的类型优先瞄准用户更有可能想攻击的目标,例如,通常情况下,用户会更想攻击由其他客户端控制的第二虚拟对象。从而提高客户端瞄准虚拟对象的能力,降低用户瞄准虚拟对象所需要的操作难度,提高瞄准操作的人机交互效果和准确率。

上述实施例是基于游戏的应用场景对上述方法进行描述,下面以军事仿真的应用场景对上述方法进行示例性说明。

仿真技术是应用软件和硬件通过模拟真实世界的实验,反映系统行为或过程的模型技术。

军事仿真程序是利用仿真技术针对军事应用专门构建的程序,对海、陆、空等作战元素、武器装备性能以及作战行动等进行量化分析,进而精确模拟战场环境,呈现战场态势,实现作战体系的评估和决策的辅助。

在一个示例中,士兵在军事仿真程序所在的终端建立一个虚拟的战场,并以组队的形式进行对战。士兵控制战场虚拟环境中的虚拟对象在战场虚拟环境下进行站立、蹲下、坐下、仰卧、俯卧、侧卧、行走、奔跑、攀爬、驾驶、射击、投掷、攻击、受伤、侦查、近身格斗等动作中的至少一种操作。战场虚拟环境包括:平地、山川、高原、盆地、沙漠、河流、湖泊、海洋、植被中的至少一种自然形态,以及建筑物、交通工具、废墟、训练场等地点形态。虚拟对象包括:虚拟人物、虚拟动物、动漫人物等,每个虚拟对象在三维虚拟环境中具有自身的形状和体积,占据三维虚拟环境中的一部分空间。

基于上述情况,在一个示例中,士兵a控制第一虚拟对象在虚拟环境中活动,士兵a进行快速瞄准操作时,客户端根据士兵a选中的瞄准点,来将位于瞄准点附近的由其他士兵控制的虚拟对象确定为瞄准目标,避免士兵a将距离瞄准点更近的动物、植物、建筑物等选择为瞄准目标,从而简化士兵瞄准其他士兵的瞄准操作,提高瞄准效率。

例如,误入24所示,士兵a进行快速瞄准操作时,客户端根据士兵a选中的瞄准点,来将位于瞄准点附近的由其他士兵控制的虚拟对象2501确定为瞄准目标,避免士兵a将距离瞄准点更近的动物2502选择为瞄准目标。

以下为本申请的装置实施例,对于装置实施例中未详细描述的细节,可参考上述方法实施例。

图25是本申请一个示例性实施例提供的虚拟对象的瞄准装置的框图。所述装置包括:

显示模块2401,用于显示用户界面,所述用户界面包括虚拟环境画面,所述虚拟环境画面包括位于所述虚拟环境中的第一虚拟对象和第二虚拟对象;

交互模块2402,用于在第一时刻接收瞄准操作生成开始指令;

显示模块2401,用于响应于在所述第一时刻接收到瞄准操作的所述开始指令,在所述虚拟环境的地平面上显示点式技能指示器,所述点式技能指示器用于指示所述瞄准操作在所述虚拟环境的地平面上选中的瞄准点;

所述交互模块2402,还用于响应于在第二时刻所述瞄准操作停止,生成结束指令;

瞄准模块2403,用于响应于在所述第二时刻接收到所述瞄准操作的所述结束指令,控制所述第一虚拟对象瞄准目标虚拟对象,所述目标虚拟对象是根据第一优先级原则从所述第二虚拟对象中确定的一个虚拟对象,所述第一优先级原则包括虚拟对象类型的优先级高于所述第二虚拟对象与所述瞄准点的直线距离的优先级;

其中,所述第二时刻与所述第一时刻的差值小于时间阈值。

在一个可选的实施例中,所述装置还包括:

确定模块2404,用于响应于在第二时刻接收到所述瞄准操作的结束指令,将位于目标选择范围中的至少两个所述第二虚拟对象确定为候选虚拟对象,所述目标选择范围是根据所述第一虚拟对象所在的第一地图点和所述瞄准点中的至少一个确定的范围;

获取模块2405,用于获取至少两个所述候选虚拟对象的所述虚拟对象类型,所述虚拟对象类型包括第一类型和第二类型;

所述确定模块2404,还用于响应于所述第一类型的优先级高于所述第二类型的优先级,将所述第一类型的所述候选虚拟对象确定为所述目标虚拟对象;

所述瞄准模块2403,还用于控制所述第一虚拟对象瞄准所述目标虚拟对象。

在一个可选的实施例中,所述获取模块2405,还用于响应于所述第一类型的优先级高于所述第二类型的优先级且存在至少两个所述第一类型的所述候选虚拟对象,获取至少两个所述第一类型的所述候选虚拟对象与所述瞄准点的直线距离;

所述确定模块2404,还用于将所述直线距离最小的所述第一类型的所述候选虚拟对象确定为所述目标虚拟对象。

在一个可选的实施例中,所述瞄准模块2403,还用于响应于在第三时刻未接收到所述瞄准操作的结束指令,控制所述第一虚拟对象瞄准第三虚拟对象,所述第三虚拟对象是根据第二优先级原则从所述第二虚拟对象中确定的一个所述虚拟对象,所述第二优先级原则包括所述虚拟对象类型的优先级低于所述第二虚拟对象与所述瞄准点的所述直线距离的优先级;

其中,所述第三时刻与所述第一时刻的差值等于所述时间阈值。

在一个可选的实施例中,所述装置还包括:

确定模块2404,用于响应于在第三时刻未接收到所述瞄准操作的结束指令,将位于目标选择范围中的至少两个所述第二虚拟对象确定为候选虚拟对象,所述目标选择范围是根据所述第一虚拟对象所在的第一地图点和所述瞄准点中的至少一个确定的范围;

获取模块2405,用于获取至少两个所述候选虚拟对象与所述瞄准点的所述直线距离;

所述确定模块2404,还用于将所述直线距离最小的所述候选虚拟对象确定为所述第三虚拟对象;

所述瞄准模块2403,还用于控制所述第一虚拟对象瞄准所述第三虚拟对象。

在一个可选的实施例中,所述装置还包括:

所述交互模块2402,还用于响应于所述瞄准操作停止,生成所述结束指令;

计时模块2406,用于响应于接收到所述瞄准操作的所述结束指令,记录接收到所述结束指令的结束时刻;

确定模块2404,用于将位于目标选择范围中的至少两个所述第二虚拟对象确定为候选虚拟对象,所述目标选择范围是根据所述第一虚拟对象所在的第一地图点和所述瞄准点中的至少一个确定的范围;

计算模块2407,用于计算所述候选虚拟对象的优先级分数,所述优先级分数是根据所述虚拟对象类型的类型权重、所述直线距离、所述时间阈值、所述瞄准操作的持续时长中的至少一项计算得到的,所述持续时长是所述结束时刻与所述第一时刻之差;

所述确定模块2404,还用于根据所述优先级分数从所述候选虚拟对象中确定所述目标虚拟对象;

所述瞄准模块2403,还用于控制所述第一虚拟对象瞄准所述目标虚拟对象。

在一个可选的实施例中,所述装置还包括:

获取模块2405,用于获取所述候选虚拟对象的所述虚拟对象类型对应的所述类型权重;

所述计算模块2407,还用于计算所述候选虚拟对象与所述瞄准点的所述直线距离;

所述计算模块2407,还用于计算所述瞄准操作的所述持续时长对应的时间权重,其中,响应于所述持续时长大于所述时间阈值,所述时间权重为0;响应于所述持续时长小于所述时间阈值,所述时间权重非0;

所述计算模块2407,还用于将所述类型权重与所述时间权重的乘积,与所述直线距离之和确定为所述候选虚拟对象的所述优先级分数。

在一个可选的实施例中,所述装置还包括:

过滤模块2408,用于根据瞄准条件和优先级条件中的至少一个筛选所述候选虚拟对象,所述瞄准条件包括所述瞄准操作可选中的虚拟对象应符合的条件,所述优先级条件包括如下条件中的至少一种:

优先选择离所述瞄准点最近的候选虚拟对象;

优先选择血量百分比最少的候选虚拟对象;

优先选择血量绝对值最少的候选虚拟对象。

在一个可选的实施例中,所述用户界面包括轮盘瞄准控件,所述轮盘瞄准控件包括摇杆按钮和轮盘区域,所述瞄准操作是触发所述轮盘瞄准控件使所述摇杆按钮从激活点移动至偏移点的拖动操作,所述激活点是所述轮盘区域的中心位置;所述装置还包括:

计算模块2407,用于响应于在第一时刻接收到瞄准操作的开始指令,计算所述瞄准操作的所述激活点与所述偏移点的偏移向量;

所述计算模块2407,还用于根据所述偏移向量计算瞄准向量,所述瞄准向量是从所述第一虚拟对象所在位置指向所述瞄准点的向量,所述偏移向量与轮盘半径之比等于所述瞄准向量与瞄准半径之比,所述轮盘半径是所述轮盘区域的半径,所述瞄准半径是所述第一虚拟对象瞄准的最大距离;

所述计算模块2407,还用于根据所述瞄准向量和所述第一虚拟对象所在位置计算所述瞄准点;

所述显示模块2401,还用于根据所述瞄准点在所述虚拟环境的地平面上显示所述点式技能指示器。

在一个可选的实施例中,所述显示模块2401,还用于在所述目标虚拟对象上显示选中特效,所述选中特效包括如下特效中的至少一种:在所述目标虚拟对象所在的第二地图点上显示第一选中标识,在所述目标虚拟对象的上方显示第二选中标识。

需要说明的是:上述实施例提供的虚拟对象的瞄准装置,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的虚拟对象的瞄准装置与虚拟对象的瞄准方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。

本申请还提供了一种终端,该终端包括处理器和存储器,存储器中存储有至少一条指令,至少一条指令由处理器加载并执行以实现上述各个方法实施例提供的虚拟对象的瞄准方法。需要说明的是,该终端可以是如下图26所提供的终端。

图26出了本申请一个示例性实施例提供的终端2900的结构框图。该终端2900可以是:智能手机、平板电脑、mp3播放器(movingpictureexpertsgroupaudiolayeriii,动态影像专家压缩标准音频层面3)、mp4(movingpictureexpertsgroupaudiolayeriv,动态影像专家压缩标准音频层面4)播放器、笔记本电脑或台式电脑。终端2900还可能被称为用户设备、便携式终端、膝上型终端、台式终端等其他名称。

通常,终端2900包括有:处理器2901和存储器2902。

处理器2901可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器2901可以采用dsp(digitalsignalprocessing,数字信号处理)、fpga(field-programmablegatearray,现场可编程门阵列)、pla(programmablelogicarray,可编程逻辑阵列)中的至少一种硬件形式来实现。处理器2901也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称cpu;协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器2901可以在集成有gpu(graphicsprocessingunit,图像处理器),gpu用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器2901还可以包括ai(artificialintelligence,人工智能)处理器,该ai处理器用于处理有关机器学习的计算操作。

存储器2902可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器2902还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。在一些实施例中,存储器2902中的非暂态的计算机可读存储介质用于存储至少一个指令,该至少一个指令用于被处理器2901所执行以实现本申请中方法实施例提供的虚拟对象的瞄准方法。

在一些实施例中,终端2900还可选包括有:外围设备接口2903和至少一个外围设备。处理器2901、存储器2902和外围设备接口2903之间可以通过总线或信号线相连。各个外围设备可以通过总线、信号线或电路板与外围设备接口2903相连。具体地,外围设备包括:射频电路2904、触摸显示屏2905、摄像头2906、音频电路2907、定位组件2908和电源2909中的至少一种。

外围设备接口2903可被用于将i/o(input/output,输入/输出)相关的至少一个外围设备连接到处理器2901和存储器2902。在一些实施例中,处理器2901、存储器2902和外围设备接口2903被集成在同一芯片或电路板上;在一些其他实施例中,处理器2901、存储器2902和外围设备接口2903中的任意一个或两个可以在单独的芯片或电路板上实现,本实施例对此不加以限定。

射频电路2904用于接收和发射rf(radiofrequency,射频)信号,也称电磁信号。射频电路2904通过电磁信号与通信网络以及其他通信设备进行通信。射频电路2904将电信号转换为电磁信号进行发送,或者,将接收到的电磁信号转换为电信号。可选地,射频电路2904包括:天线系统、rf收发器、一个或多个放大器、调谐器、振荡器、数字信号处理器、编解码芯片组、用户身份模块卡等等。射频电路2904可以通过至少一种无线通信协议来与其它终端进行通信。该无线通信协议包括但不限于:万维网、城域网、内联网、各代移动通信网络(2g、3g、4g及5g)、无线局域网和/或wifi(wirelessfidelity,无线保真)网络。在一些实施例中,射频电路2904还可以包括nfc(nearfieldcommunication,近距离无线通信)有关的电路,本申请对此不加以限定。

显示屏2905用于显示ui(userinterface,用户界面)。该ui可以包括图形、文本、图标、视频及其它们的任意组合。当显示屏2905是触摸显示屏时,显示屏2905还具有采集在显示屏2905的表面或表面上方的触摸信号的能力。该触摸信号可以作为控制信号输入至处理器2901进行处理。此时,显示屏2905还可以用于提供虚拟按钮和/或虚拟键盘,也称软按钮和/或软键盘。在一些实施例中,显示屏2905可以为一个,设置终端2900的前面板;在另一些实施例中,显示屏2905可以为至少两个,分别设置在终端2900的不同表面或呈折叠设计;在再一些实施例中,显示屏2905可以是柔性显示屏,设置在终端2900的弯曲表面上或折叠面上。甚至,显示屏2905还可以设置成非矩形的不规则图形,也即异形屏。显示屏2905可以采用lcd(liquidcrystaldisplay,液晶显示屏)、oled(organiclight-emittingdiode,有机发光二极管)等材质制备。

摄像头组件2906用于采集图像或视频。可选地,摄像头组件2906包括前置摄像头和后置摄像头。通常,前置摄像头设置在终端的前面板,后置摄像头设置在终端的背面。在一些实施例中,后置摄像头为至少两个,分别为主摄像头、景深摄像头、广角摄像头、长焦摄像头中的任意一种,以实现主摄像头和景深摄像头融合实现背景虚化功能、主摄像头和广角摄像头融合实现全景拍摄以及vr(virtualreality,虚拟现实)拍摄功能或者其它融合拍摄功能。在一些实施例中,摄像头组件2906还可以包括闪光灯。闪光灯可以是单色温闪光灯,也可以是双色温闪光灯。双色温闪光灯是指暖光闪光灯和冷光闪光灯的组合,可以用于不同色温下的光线补偿。

音频电路2907可以包括麦克风和扬声器。麦克风用于采集用户及环境的声波,并将声波转换为电信号输入至处理器2901进行处理,或者输入至射频电路2904以实现语音通信。出于立体声采集或降噪的目的,麦克风可以为多个,分别设置在终端2900的不同部位。麦克风还可以是阵列麦克风或全向采集型麦克风。扬声器则用于将来自处理器2901或射频电路2904的电信号转换为声波。扬声器可以是传统的薄膜扬声器,也可以是压电陶瓷扬声器。当扬声器是压电陶瓷扬声器时,不仅可以将电信号转换为人类可听见的声波,也可以将电信号转换为人类听不见的声波以进行测距等用途。在一些实施例中,音频电路2907还可以包括耳机插孔。

定位组件2908用于定位终端2900的当前地理位置,以实现导航或lbs(locationbasedservice,基于位置的服务)。定位组件2908可以是基于美国的gps(globalpositioningsystem,全球定位系统)、中国的北斗系统或俄罗斯的伽利略系统的定位组件。

电源2909用于为终端2900中的各个组件进行供电。电源2909可以是交流电、直流电、一次性电池或可充电电池。当电源2909包括可充电电池时,该可充电电池可以是有线充电电池或无线充电电池。有线充电电池是通过有线线路充电的电池,无线充电电池是通过无线线圈充电的电池。该可充电电池还可以用于支持快充技术。

在一些实施例中,终端2900还包括有一个或多个传感器2910。该一个或多个传感器2910包括但不限于:加速度传感器2911、陀螺仪传感器2912、压力传感器2913、指纹传感器2914、光学传感器2915以及接近传感器2916。

加速度传感器2911可以检测以终端2900建立的坐标系的三个坐标轴上的加速度大小。比如,加速度传感器2911可以用于检测重力加速度在三个坐标轴上的分量。处理器2901可以根据加速度传感器2911采集的重力加速度信号,控制触摸显示屏2905以横向视图或纵向视图进行用户界面的显示。加速度传感器2911还可以用于游戏或者用户的运动数据的采集。

陀螺仪传感器2912可以检测终端2900的机体方向及转动角度,陀螺仪传感器2912可以与加速度传感器2911协同采集用户对终端2900的3d动作。处理器2901根据陀螺仪传感器2912采集的数据,可以实现如下功能:动作感应(比如根据用户的倾斜操作来改变ui)、拍摄时的图像稳定、游戏控制以及惯性导航。

压力传感器2913可以设置在终端2900的侧边框和/或触摸显示屏2905的下层。当压力传感器2913设置在终端2900的侧边框时,可以检测用户对终端2900的握持信号,由处理器2901根据压力传感器2913采集的握持信号进行左右手识别或快捷操作。当压力传感器2913设置在触摸显示屏2905的下层时,由处理器2901根据用户对触摸显示屏2905的压力操作,实现对ui界面上的可操作性控件进行控制。可操作性控件包括按钮控件、滚动条控件、图标控件、菜单控件中的至少一种。

指纹传感器2914用于采集用户的指纹,由处理器2901根据指纹传感器2914采集到的指纹识别用户的身份,或者,由指纹传感器2914根据采集到的指纹识别用户的身份。在识别出用户的身份为可信身份时,由处理器2901授权该用户执行相关的敏感操作,该敏感操作包括解锁屏幕、查看加密信息、下载软件、支付及更改设置等。指纹传感器2914可以被设置终端2900的正面、背面或侧面。当终端2900上设置有物理按键或厂商logo时,指纹传感器2914可以与物理按键或厂商logo集成在一起。

光学传感器2915用于采集环境光强度。在一个实施例中,处理器2901可以根据光学传感器2915采集的环境光强度,控制触摸显示屏2905的显示亮度。具体地,当环境光强度较高时,调高触摸显示屏2905的显示亮度;当环境光强度较低时,调低触摸显示屏2905的显示亮度。在另一个实施例中,处理器2901还可以根据光学传感器2915采集的环境光强度,动态调整摄像头组件2906的拍摄参数。

接近传感器2916,也称距离传感器,通常设置在终端2900的前面板。接近传感器2916用于采集用户与终端2900的正面之间的距离。在一个实施例中,当接近传感器2916检测到用户与终端2900的正面之间的距离逐渐变小时,由处理器2901控制触摸显示屏2905从亮屏状态切换为息屏状态;当接近传感器2916检测到用户与终端2900的正面之间的距离逐渐变大时,由处理器2901控制触摸显示屏2905从息屏状态切换为亮屏状态。

本领域技术人员可以理解,图26中示出的结构并不构成对终端2900的限定,可以包括比图示更多或更少的组件,或者组合某些组件,或者采用不同的组件布置。

所述存储器还包括一个或者一个以上的程序,所述一个或者一个以上程序存储于存储器中,所述一个或者一个以上程序包含用于进行本申请实施例提供的虚拟对象的瞄准方法。

本申请提供了一种计算机可读存储介质,所述存储介质中存储有至少一条指令,所述至少一条指令由所述处理器加载并执行以实现上述各个方法实施例提供的虚拟对象的瞄准方法。

本申请还提供了一种计算机程序产品,当计算机程序产品在计算机上运行时,使得计算机执行上述各个方法实施例提供的虚拟对象的瞄准方法。

上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。

本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。

以上所述仅为本申请的可选实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1