在前面的文章中,已经陆陆续续的讲解了一些使用Spine动画的细节,有了这些细节,我们已经满足了在unity中使用Spine动画制作动作游戏的技术基础。

那么,要使用Spine动画在unity中制作一款动作游戏,究竟还有哪些是需要注意的呢?

1. 主角的控制系统

  主角的控制,主要分为以下三个部分:

  1. 输入检测 &&输入数据加工
  2. 接受输入数据,改变主角的位置
  3. 根据输入数据 && 当前状态,播放对应的Spine动画。

  输入检测,这个根据不同的游戏输入方式,有不同的处理,输入的加工,也因游戏而不同,这里不做过多的说明。

  至于改变主角的位置,这里使用 Unity自带的控制器:Character Controller。Character Controller会在主角的身上挂上一个 胶囊碰撞体,用这个胶囊碰撞体来检测物理碰撞,这个Controller除了提供移动主角API外,还处理了

  许多的逻辑,比如主角可以上坡的角度,主角是否碰撞到了地面等问题。

  播放动画组件,这里需要考虑的是Spine各个动画之间转换的动画融合问题,比如从走到跑,这样的过程需要一个渐进的过程,也就是动画融合了。

  这里尤其需要注意的是,因为我们使用了Character Controller来控制 主角的移动,那么,在Spine动画里面,一定不能有位移,不然的话,这样就会出现一个问题,那就是明明看着主角已经走过去了,

  但实际上这个人的碰撞体根本没动!如下图:

  

2.伤害检测系统

  动作游戏,当然要有伤害检测了,这里的伤害检测,我们使用Unity的物理碰撞检测来做。从1中我们已经知道,Spine动画不能有位移,但是在一些酷炫的技能中,

主角难免会有些微的位移,但是因为Character Controller其实是不会随着Spine动画的移动而移动的(其实可以看成这样,Character Controller 在父层级,而Spine动画播放时,移动的是Character Controller的子层级),

但是问题是我们又要实实在在的让碰撞检测跟着 Spine动画走(比如A拿大刀砍怪物,那肯定是刀看到怪物算是伤害成功),那么到底该如何办呢?

  解决方案很简单,我们不使用 Character Controller的胶囊碰撞体来做伤害检测,我们额外的添加碰撞体来做伤害检测。至于怎么添加可以跟随Spine动画移动的碰撞体,请看我的Spine学习系列文章,里面有提到。

  在骨骼上绑定Collider 2D 和 Rigidbody 2D,因为骨骼是靠Spine动作来驱动,并且我们并不想使用物理引擎来控制人物的移动,所以呢,骨骼上的Rigidbody 2D的类型,选择为:Kinematic。

  然后喃,我们在碰撞的时候,显然刀子什么的是可以穿透身体,那么最好 Collider 2D也勾选上 Is Trigger属性。具体设置如下:

  

  这样的设置以后,该物体就可以碰撞到 任意勾选了 Is Trigger的物体了,并且会触发 OnTriggerxxx函数。

  同时,在该物体上添加适合的 Tag,就可以通过Tag区分到底是什么物体与自己产生了碰撞。

3.总结

  当然,制作动作游戏可不是像我说的那样,只要解决了上面两个问题就可以了,具体的制作还有许许多多的细节问题,也有可能需要新的 人物控制,上面的两个方面也只是为制作动作游戏搭好了一个前提。

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------

2018.6.6更新

  在今天的实验中,又发现了一些问题,下面一一补充讲解。

  1.关于碰撞检测的更新

   首先,一个人物,假设有很多部位需要做碰撞检测,但是这个人物自身不做相互碰撞,那么,可以在这个人物的最上一层挂上一个 Rigidbody 2D,然后在需要碰撞检测的其他部位,挂载对应的Collider 2D即可,不需要一个Collider 2D对应一个Rigidbody 2D.

  其次,在Rigidbody 2D的设置上,如果设置 Rigidbody 2D Type 为 Kinematic,那么,除却Dynamic类型外的Rigidbody ,其他类型的均不会与该物体产生碰撞检测!要想可以碰撞检测,就需要勾选上 Use Full Kinematic Contacts选项。

  最后,关于检测方法,一定是 OnXXX2D,不然是不会被触发的哦!

Spine应用--使用Spine动画制作动作游戏的更多相关文章

  1. [Mugeda HTML5技术教程之14]案例分析:制作网页游戏

    本文档要分析的案例是一个爱消除的网页小游戏,从中可以体会一些Mugeda API的用法和使用Mugeda动画制作网页游戏的方法. (一)游戏规则: 1.开始游戏时,手机出现在最上面一行的任意一格: 2 ...

  2. Spine(2D骨骼动画)

    点击进入Spine官网 Spine 是一款针对游戏的 2D 骨骼动画编辑工具. Spine 旨在提供更高效和简洁 的工作流程,以创建游戏所需的动画. 功能: 1.摄影表 Dopesheet 在动画制作 ...

  3. 分享2D Unity游戏的动画制作经验

    作者:Alex Rose Unity近期宣布推出额外的2D游戏支持,加入了Box 2D物理和一个精灵管理器. 但这里还是有些技巧须要牢记在心.逐帧更改图像仅仅是动画制作的冰山一角,若要让你的游戏出色执 ...

  4. 张瀚荣:如何用UE4制作3D动作游戏

    转自:http://www.gamelook.com.cn/2015/06/218267 GameLook报道/ 6月5日,2015年第三期GameLook开放日‧虚幻引擎专场活动在上海正式举行,此次 ...

  5. Spine学习七 - spine动画资源+ Unity Mecanim动画系统

    前面已经讲过 Spine自己动画状态机的动画融合,但是万一有哥们就是想要使用Unity的动画系统,那有没有办法呢?答案是肯定的,接下来,就说说如何实现: 1. 在project面板找打你导入的Spin ...

  6. quick-cocos2d-x游戏开发【8】——动画与动作

    动画与动作,在quick中都有对其封装,所以我们还是来看一下吧. 总的来说,对于帧动画,quick封装的方法我们能够常常使用,这是很方便的,以下直接上代码来直观感受下, 比方,14张帧图片,採用coc ...

  7. 使用CocosSharp制作一个游戏 - CocosSharp中文教程

    注:本教程翻译自官方<Walkthrough - Building a game with CocosSharp>,官方教程有很多地方说的不够详细,或者代码不全,导致无法继续,本人在看了G ...

  8. Cocos2d-x v3.6制作射箭游戏(二)

    原文 Cocos2d-x v3.6制作射箭游戏(二) 六 24, 2015by RENSHANin COCOS2D-X 上章我们创建并加载了游戏地图,接下来的两章我们将实现如下的效果. 在开始之前,先 ...

  9. 手游[追忆之青]动画导演:2D动画制作技巧

    转自:http://www.gamelook.com.cn/2016/09/264591 GameLook报道/由一般法人计算机娱乐协会(CESA)主办的CEDEC2016日前在日本横滨举行,诸多开发 ...

随机推荐

  1. 关于SqlServer那些事1(回归基础)

    即将实习,回归基础总结,希望可以再好好打磨一下基础的一些东西 关于如何在重新修改表结构时该变其权限设置 步骤: 点击工具 进入选项 设计器 取消勾选阻止保存要求重新创建表的更改 关于创建创建数据库以及 ...

  2. github 错误

    Push failed: Unable to access 'https://github.com/infoo/Neo4j.git/': The requested URL returned erro ...

  3. 虚拟机安装Centos(VirtulBox)

    阿里云服务器本月底到期了,之前自己犹豫不觉没上279元3年服务器的车,但是又要用linux,所以有了这篇文章. VirtulBox 一款开源的虚拟化主机应用,可以实现一台电脑上运行多个操作系统(Lin ...

  4. MySQL面试题!新鲜出炉~

    01.Mysql 的存储引擎,myisam和innodb的区别? 答:1.MyISAM 是非事务的存储引擎,适合用于频繁查询的应用.表锁,不会出现死锁,适合小数据,小并发. 2.innodb是支持事务 ...

  5. iOS CALayer 简单介绍

    https://www.jianshu.com/p/09f4e36afd66 什么是CALayer: 总结:能看到的都是uiview,uiview能显示在屏幕上是因为它内部的一个层calyer层. 在 ...

  6. NTFS 文件系统结构

    背景 NTFS 作为一个新的文件系统,因其安全性高而受到越来越多的重视,越来越多的应用采用了NTFS 文件系统.作为一个新的文件系统,NTFS 有着许多区别于FAT32 的优点,如磁盘配额.文件系统加 ...

  7. 20、Java 泛型

    1.晓之以理,动之以码 学Java就是很上头哦,一来直接三连问!!! 什么是泛型?为什么要用泛型?泛型怎么用? 当然泛型在Java中有很重要的一个地位,在面向对象编程以及在各种设计模式中有非常广泛的应 ...

  8. 微信商户H5支付申请不通过被驳回,拒绝原因提示:网站存在不实内容或不安全信息

    一.H5支付简介及使用场景说明 H5支付是指商户在微信客户端外的移动端网页展示商品或服务,用户在前述页面确认使用微信支付时,商户发起本服务呼起微信客户端进行支付.主要用于触屏版的手机浏览器请求微信支付 ...

  9. Linux查询版本、查询端口

    lsb_release -a 查看当前Linux系统版本 netstat 检查端口 netstat 是一个命令行工具,可以提供有关网络连接的信息.要列出正在侦听的所有 TCP 或 UDP 端口,包括使 ...

  10. JS学习第四天

    循环语句 while(){ }: while :先判断再执行,如果while的条件结果为false,那么执行语句块中代码一句都不走 do(){ }while; do   while:先执行代码块中的语 ...