关于FPS游戏的设计问题
第一个想到的问题:
首先以unity的FPSCharactorController为例,这里规定,相机的方向中心一定是瞄准的方向中心。
设置身体的扭曲朝向相机方向,这样身体可以弯腰。你们看图中,我让玩家的身体朝向相机的瞄准方向,这样瞄准姿势动画的手臂始终保持原来的样子,这样就就偏向了左方。
那如何保证角色动画的同时,能让玩家的枪的轴向瞄准相机的准心瞄准的位置,并且看起来跟我们玩的CS那样的效果:
1.枪支瞄准相机的方向
2.玩家可以弯腰
3.角色的瞄准动画的姿势正确
来看看Unity官方是怎么解决的,好吧,哪位老兄发的官方视频居然没有字幕,不过在观看的过程中我意识到了,其实官方是用脚本控制了角色的IK关节,比如枪瞄准哪个地方,那么就用脚本控制身体的每个部分来使得姿势正确。作为一个独立开发者来说,我是百分之九十九不会这么做的,剩下那百分之一,是有可能我能有足够的精力和经验的时候来做做到这样的效果,反正游戏本身就不是真实的,何必追求绝对的真实,要真实直接去买把真枪来玩,不是更真实吗。所以这里退而求其次,有了下面的两个解决方案。
解决方案一:
让准心在枪支的射击方向
这里部分内容参考自:http://pc.52pk.com/zixun/5958180.shtml
老FPS游戏中的准星就是你手中拿着的枪的准星(还是说成"枪口"吧),这就意味着在近距离射击时会打中哪里需要玩家自己预判,而HUD上的准星只在远距离目标时会用到,为了保证准心始终不会超出屏幕外,枪支总是与相机方“向尽量”平行。
左图是老FPS,从枪口出去的直线被墙壁挡住了,所以子弹都打在最靠近枪口的墙壁上。 当然远距离射击时就要跟着HUD的准星了;右图是现代FPS,你HUD上的准星在哪,击中范围就在哪(图中的子弹并非穿墙过去的,浅色是为了说明射击角度不科学)
还是看不懂的话直接来代表作《半条命》的截图吧。 如图所示,前两图枪口很靠近墙壁,所以子弹应该打在距离玩家最近的墙上; 然而子弹都冲着HUD的准星去了(注:这游戏没穿墙设定)
如果紧挨着墙壁,那么子弹会无视客观规律地冲着HUD的准星去。如下图,整个COD系列都有这毛病,同样在CS里一些高手也利用这个设计漏洞在拐角处蹲点
解决方案二:
方案一里面已经提到了,其实就是将发射准心与发射点设置在相机的中心前方位置处。
这里截取下csdn某位大佬的一段描述:
这里我们先说下射击,小编在对射击的处理时,命中的判定是看准心位置的,换个说法,其实命中判定是看目标是否在我角色摄像头的真中心,而不是看目标是否在我枪前面。其实这个问题是很多游戏中都有,我们射击时子弹到底应该是从枪口出还是从摄像头中心出,这个问题当我们在墙边时尤为体现的突出,有时候在角色面前有一个和抢高度等高的墙面,但是我们第一人称的视角的准心并没有被墙面挡住,那么这时要怎么处理呢?这里我们可以看看目前一些比较优秀的FPS是如何处理的,首先是彩虹六号,这个游戏很多网友都在调侃它是用瞄具在射击,只要我们能瞄到的地方就能达到,不管是否枪口被墙面堵住;再来就是绝地求生,这个游戏当我们在墙体前面时,也就是准心和枪不在同一个位置的时候,会有一个收枪的动作,所以我们在墙体前时,会出现我们能看见目标,却不能射击的情况。
举这两个例子,小编就是想说明对这个子弹出点的说明,当然出于真实,小编更倾向于后者,这个小伙伴可以根据实际情况进行调整。
---------------------
作者:RaAlGhul
来源:CSDN
原文:https://blog.csdn.net/raalghul/article/details/80223207
我们这里采用方案一,探讨一些问题的解决方案,基本玩法参考游戏为CF或者CS:
0.身体的方向:为了方便操作,身体采用添加characConller和FPSCharacter组件
1.不同的武器的持有状态:由于不同武器,肩膀的方向,手的位置,手肘的位置等不同,所以这里优先使用动画,次要使用IK调整
2.换弹过程:优先使用动画,次要使用IK
3.弯腰:IK
4.模型的枪支锚点与头部方向平行。
由于市面上提供的模型有可能不符合我的要求,为了开发第一个FPS游戏,并且减少工作量,这里,我将使用第二种方案,并且优先模型物体为角色物体的子物体,次要作为母物体,游戏尽量贴近第一个德军司令总部的模式,角色的换弹操作和换枪操作优先采用动画,次要采用IK
关于FPS游戏的设计问题的更多相关文章
- FPS游戏服务器设计的问题 【转】
一.追溯 去gameloft笔试,有一个题目是说: 叫你去设计一个FPS(第一人称射击游戏),你是要用TCP呢还是要用UDP,说明理由 . 二.学习 这是两篇网上找到的文章,写非常不错. 当时笔试的时 ...
- (转)FPS游戏服务器设计的问题
FPS游戏服务器设计的问题出处:http://www.byteedu.com/thread-20-1-1.html一.追溯 去gameloft笔试,有一个题目是说: 叫你去设计一个FPS(第一人称射击 ...
- Unreal Engine 4 系列教程 Part 10:制作简单FPS游戏
.katex { display: block; text-align: center; white-space: nowrap; } .katex-display > .katex > ...
- 基于cocos2d-x的游戏框架设计——李成
视频:http://v.youku.com/v_show/id_XMzc5ODUyMTI4.html?f=17330006 网易科技讯 3月31日,第四届CocoaChina开发者大会暨Cocos2d ...
- 怎样在Android开发中FPS游戏实现的两种方式比较
怎样在Android开发中FPS游戏实现的两种方式比较 如何用Android平台开发FPS游戏,其实现过程有哪些方法,这些方法又有哪些不同的地方呢?首先让我们先了解下什么是FPS 英文名:FPS (F ...
- Elixir游戏服设计五
在<Elixir游戏服设计一>里提到,按照系统功能划分成app要保证原子性很难, 现在想想也没那么难.保证原子性,无非就是需要某个单点去完成操作.那么选择玩家进程去做原子性工作就可以了. ...
- Elixir游戏服设计一
在Erlang游戏服设计总结http://www.cnblogs.com/rubyist/p/5530575.html里, 我提到我想要的游戏服设计方法,希望以应用做为基础构建块.最近我在学习elix ...
- Erlang游戏服设计总结
这主要是一年多来,个人从事Erlang游戏服开发中对一些事情的思考. 想到哪说到哪,没有条理可言. 欢迎讨论. 通常Erlang游戏服务的设计涉及到的东东包括如下: 任务系统 活动系统 公会系统 玩法 ...
- H2Engine游戏服务器设计之属性管理器
游戏服务器设计之属性管理器 游戏中角色拥有的属性值很多,运营多年的游戏,往往会有很多个成长线,每个属性都有可能被N个成长线模块增减数值.举例当角色戴上武器时候hp+100点,卸下武器时HP-100点, ...
随机推荐
- MySQL更新字段来自另一个表的count()值
假设有文章post和评论comment两个表,文章表记录有评论的数量,但是这个值我们要一次更新. 如下,现在post表的comment_count都是0,我们的目标是:执行一个SQL语句,让其把统计c ...
- 浏览器自动将参数中的url转码问题
遇到一个问题, 开始的url如下: http://localhost:6666/pages/wxpay.html? code_url=weixin://wxpay/biz 请求转发到谷歌浏览器打开后变 ...
- linux学习:【第1篇】之安装vmware+Centos 6.9
vmware+CentOs 6.9的安装步骤 一.安装步骤 linux分区 登录用户名和密码 登录用户名和密码后安装成功 二.远程控制Xshell的安装
- ToolStrip 选中某一项打勾
(sender as ToolStripMenuItem).Checked = !(sender as ToolStripMenuItem).Checked;
- Struts2基本原理【转】
阐述struts2的执行流程. Struts 2框架本身大致可以分为3个部分:核心控制器FilterDispatcher.业务控制器Action和用户实现的企业业务逻辑组件. 核心控制器FilterD ...
- <?xml version="1.0" encoding="UTF-8" ?>的意思
<?xml version="1.0" encoding="UTF-8" ?> ?xml 这里是申明文件类型,这申明的是XML文件:version= ...
- js new Date() 测试
var t = new Date().toString(); //t = "Thu Oct 31 2019 11:36:57 GMT+0800 (中国标准时间)" var t1 = ...
- zabbix微信发送消息脚本
cat /usr/local/zabbix/share/zabbix/alertscripts/sed_messages_weixin.py python2.x #!/usr/bin/env pyth ...
- TC-SRM391-div2-SortingGame(BFS,STL)
Problem Statement for SortingGame Problem Statement In The Sorting Game, you are given a sequence co ...
- A. Detective Book
A. Detective Book time limit per test 2 seconds memory limit per test 256 megabytes input standard i ...