Spine应用--使用Spine动画制作动作游戏
在前面的文章中,已经陆陆续续的讲解了一些使用Spine动画的细节,有了这些细节,我们已经满足了在unity中使用Spine动画制作动作游戏的技术基础。
那么,要使用Spine动画在unity中制作一款动作游戏,究竟还有哪些是需要注意的呢?
1. 主角的控制系统
主角的控制,主要分为以下三个部分:
- 输入检测 &&输入数据加工
- 接受输入数据,改变主角的位置
- 根据输入数据 && 当前状态,播放对应的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动画制作动作游戏的更多相关文章
- [Mugeda HTML5技术教程之14]案例分析:制作网页游戏
本文档要分析的案例是一个爱消除的网页小游戏,从中可以体会一些Mugeda API的用法和使用Mugeda动画制作网页游戏的方法. (一)游戏规则: 1.开始游戏时,手机出现在最上面一行的任意一格: 2 ...
- Spine(2D骨骼动画)
点击进入Spine官网 Spine 是一款针对游戏的 2D 骨骼动画编辑工具. Spine 旨在提供更高效和简洁 的工作流程,以创建游戏所需的动画. 功能: 1.摄影表 Dopesheet 在动画制作 ...
- 分享2D Unity游戏的动画制作经验
作者:Alex Rose Unity近期宣布推出额外的2D游戏支持,加入了Box 2D物理和一个精灵管理器. 但这里还是有些技巧须要牢记在心.逐帧更改图像仅仅是动画制作的冰山一角,若要让你的游戏出色执 ...
- 张瀚荣:如何用UE4制作3D动作游戏
转自:http://www.gamelook.com.cn/2015/06/218267 GameLook报道/ 6月5日,2015年第三期GameLook开放日‧虚幻引擎专场活动在上海正式举行,此次 ...
- Spine学习七 - spine动画资源+ Unity Mecanim动画系统
前面已经讲过 Spine自己动画状态机的动画融合,但是万一有哥们就是想要使用Unity的动画系统,那有没有办法呢?答案是肯定的,接下来,就说说如何实现: 1. 在project面板找打你导入的Spin ...
- quick-cocos2d-x游戏开发【8】——动画与动作
动画与动作,在quick中都有对其封装,所以我们还是来看一下吧. 总的来说,对于帧动画,quick封装的方法我们能够常常使用,这是很方便的,以下直接上代码来直观感受下, 比方,14张帧图片,採用coc ...
- 使用CocosSharp制作一个游戏 - CocosSharp中文教程
注:本教程翻译自官方<Walkthrough - Building a game with CocosSharp>,官方教程有很多地方说的不够详细,或者代码不全,导致无法继续,本人在看了G ...
- Cocos2d-x v3.6制作射箭游戏(二)
原文 Cocos2d-x v3.6制作射箭游戏(二) 六 24, 2015by RENSHANin COCOS2D-X 上章我们创建并加载了游戏地图,接下来的两章我们将实现如下的效果. 在开始之前,先 ...
- 手游[追忆之青]动画导演:2D动画制作技巧
转自:http://www.gamelook.com.cn/2016/09/264591 GameLook报道/由一般法人计算机娱乐协会(CESA)主办的CEDEC2016日前在日本横滨举行,诸多开发 ...
随机推荐
- 关于SqlServer那些事1(回归基础)
即将实习,回归基础总结,希望可以再好好打磨一下基础的一些东西 关于如何在重新修改表结构时该变其权限设置 步骤: 点击工具 进入选项 设计器 取消勾选阻止保存要求重新创建表的更改 关于创建创建数据库以及 ...
- github 错误
Push failed: Unable to access 'https://github.com/infoo/Neo4j.git/': The requested URL returned erro ...
- 虚拟机安装Centos(VirtulBox)
阿里云服务器本月底到期了,之前自己犹豫不觉没上279元3年服务器的车,但是又要用linux,所以有了这篇文章. VirtulBox 一款开源的虚拟化主机应用,可以实现一台电脑上运行多个操作系统(Lin ...
- MySQL面试题!新鲜出炉~
01.Mysql 的存储引擎,myisam和innodb的区别? 答:1.MyISAM 是非事务的存储引擎,适合用于频繁查询的应用.表锁,不会出现死锁,适合小数据,小并发. 2.innodb是支持事务 ...
- iOS CALayer 简单介绍
https://www.jianshu.com/p/09f4e36afd66 什么是CALayer: 总结:能看到的都是uiview,uiview能显示在屏幕上是因为它内部的一个层calyer层. 在 ...
- NTFS 文件系统结构
背景 NTFS 作为一个新的文件系统,因其安全性高而受到越来越多的重视,越来越多的应用采用了NTFS 文件系统.作为一个新的文件系统,NTFS 有着许多区别于FAT32 的优点,如磁盘配额.文件系统加 ...
- 20、Java 泛型
1.晓之以理,动之以码 学Java就是很上头哦,一来直接三连问!!! 什么是泛型?为什么要用泛型?泛型怎么用? 当然泛型在Java中有很重要的一个地位,在面向对象编程以及在各种设计模式中有非常广泛的应 ...
- 微信商户H5支付申请不通过被驳回,拒绝原因提示:网站存在不实内容或不安全信息
一.H5支付简介及使用场景说明 H5支付是指商户在微信客户端外的移动端网页展示商品或服务,用户在前述页面确认使用微信支付时,商户发起本服务呼起微信客户端进行支付.主要用于触屏版的手机浏览器请求微信支付 ...
- Linux查询版本、查询端口
lsb_release -a 查看当前Linux系统版本 netstat 检查端口 netstat 是一个命令行工具,可以提供有关网络连接的信息.要列出正在侦听的所有 TCP 或 UDP 端口,包括使 ...
- JS学习第四天
循环语句 while(){ }: while :先判断再执行,如果while的条件结果为false,那么执行语句块中代码一句都不走 do(){ }while; do while:先执行代码块中的语 ...