第一个想到的问题:

首先以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游戏的设计问题的更多相关文章

  1. FPS游戏服务器设计的问题 【转】

    一.追溯 去gameloft笔试,有一个题目是说: 叫你去设计一个FPS(第一人称射击游戏),你是要用TCP呢还是要用UDP,说明理由 . 二.学习 这是两篇网上找到的文章,写非常不错. 当时笔试的时 ...

  2. (转)FPS游戏服务器设计的问题

    FPS游戏服务器设计的问题出处:http://www.byteedu.com/thread-20-1-1.html一.追溯 去gameloft笔试,有一个题目是说: 叫你去设计一个FPS(第一人称射击 ...

  3. Unreal Engine 4 系列教程 Part 10:制作简单FPS游戏

    .katex { display: block; text-align: center; white-space: nowrap; } .katex-display > .katex > ...

  4. 基于cocos2d-x的游戏框架设计——李成

    视频:http://v.youku.com/v_show/id_XMzc5ODUyMTI4.html?f=17330006 网易科技讯 3月31日,第四届CocoaChina开发者大会暨Cocos2d ...

  5. 怎样在Android开发中FPS游戏实现的两种方式比较

    怎样在Android开发中FPS游戏实现的两种方式比较 如何用Android平台开发FPS游戏,其实现过程有哪些方法,这些方法又有哪些不同的地方呢?首先让我们先了解下什么是FPS 英文名:FPS (F ...

  6. Elixir游戏服设计五

    在<Elixir游戏服设计一>里提到,按照系统功能划分成app要保证原子性很难, 现在想想也没那么难.保证原子性,无非就是需要某个单点去完成操作.那么选择玩家进程去做原子性工作就可以了. ...

  7. Elixir游戏服设计一

    在Erlang游戏服设计总结http://www.cnblogs.com/rubyist/p/5530575.html里, 我提到我想要的游戏服设计方法,希望以应用做为基础构建块.最近我在学习elix ...

  8. Erlang游戏服设计总结

    这主要是一年多来,个人从事Erlang游戏服开发中对一些事情的思考. 想到哪说到哪,没有条理可言. 欢迎讨论. 通常Erlang游戏服务的设计涉及到的东东包括如下: 任务系统 活动系统 公会系统 玩法 ...

  9. H2Engine游戏服务器设计之属性管理器

    游戏服务器设计之属性管理器 游戏中角色拥有的属性值很多,运营多年的游戏,往往会有很多个成长线,每个属性都有可能被N个成长线模块增减数值.举例当角色戴上武器时候hp+100点,卸下武器时HP-100点, ...

随机推荐

  1. Nowcoder Sum of Maximum ( 容斥原理 && 拉格朗日插值法 )

    题目链接 题意 : 分析 : 分析就直接参考这个链接吧 ==> Click here 大体的思路就是 求和顺序不影响结果.故转化一下思路枚举每个最大值对答案的贡献最后累加就是结果 期间计数的过程 ...

  2. selenium实现chrome分屏截图的合并

    selenium的截图功能在chrome下无法实现,但是可以操作滚动条来一屏一屏的截图,然后再合并成一张图,合并图片的代码在网上找的,十分感谢那位朋友,具体解决方案如下:直接上代码: def capt ...

  3. python爬取智联招聘职位信息(单进程)

    我们先通过百度搜索智联招聘,进入智联招聘官网,一看,傻眼了,需要登录才能查看招聘信息 没办法,用账号登录进去,登录后的网页如下: 输入职位名称点击搜索,显示如下网页: 把这个URL:https://s ...

  4. CF1213F Unstable String Sort

    题目链接 问题分析 题目实际上是一堆大于等于的约束.观察这\(2n-2\)个约束.第一组可以将要求的排成一个不降的序列,然后第二组就是在第一组的基础上再添加条件. 不妨设第一组生成的不降序列是\(\{ ...

  5. 「TJOI2019」大中锋的游乐场

    题目链接 问题分析 比较明显的最短路模型.需要堆优化的dij.建图的时候注意细节就好. 参考程序 #include <bits/stdc++.h> #define LL long long ...

  6. Spring Boot教程(二十九)使用JdbcTemplate操作数据库

    使用JdbcTemplate操作数据库 Spring的JdbcTemplate是自动配置的,你可以直接使用@Autowired来注入到你自己的bean中来使用. 举例:我们在创建User表,包含属性n ...

  7. JavaWeb_(SSH论坛)_六、点赞模块

    基于SSH框架的小型论坛项目 一.项目入门 传送门 二.框架整合 传送门 三.用户模块 传送门 四.页面显示 传送门 五.帖子模块 传送门 六.点赞模块 传送门 七.辅助模块 传送门 联合主键 创建p ...

  8. windows基础提权

    Window基础提权 提到system权限 甚至让他变成你的肉鸡 我们了解一下windows下面有那些用户 Guests是用户最低的权限 而且一般是被禁用的 User权限也很低 连关机都不行 还有wi ...

  9. C++入门经典-例6.13-指针与二维数组

    1:代码如下: // 6.13.cpp : 定义控制台应用程序的入口点. // #include"stdafx.h" #include<iostream> using ...

  10. 【学习】SpringBoot之自定义拦截器

    /** * 自定义拦截器 **/ @Configuration//声明这是一个拦截器 public class MyInterceptor extends WebMvcConfigurerAdapte ...