在前面的文章中,已经陆陆续续的讲解了一些使用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. QueryRunner使用总结

    使用JDBC技术是一件繁琐的事情,为了使数据库更加高效,有一种简化jdbc技术的操作--DBUtils.DbUtils(org.apache.commons.dbutils.DbUtils)是Apac ...

  2. python6.1创建类

    class Dog(object): type1="宠物"#类变量 #初始化方法 def __init__(self,name,age,color): self.name=name ...

  3. Django 环境下常用的模型设计

    Django 环境下常用的模型设计 用户表 继承 django.contrib.auth.model import AbstractUser AbstractUser 默认已经包含了很多字段了 id ...

  4. IDEA的基本使用技巧

    博主在大学里学习的专业是计算机科学与技术,在大三的时候才开始接触 “加瓦”,学习加瓦首先就需要一个运行环境,因为受到了老师们的影响,我第一个编辑JAVA的软件环境便是Eclipse,在学校里学习和使用 ...

  5. Nginx介绍,安装,配置

    引言 为什么要学习Nginx 问题一: 客户端到底要将请求发送给哪台服务器? 问题二: 如果所有客户端的请求都发送给了服务器1,那另一台岂不是废了 问题三: 客户端发送的请求可能是申请动态资源的,也可 ...

  6. three.js 着色器材质之纹理

    今天郭先生说一说如何在three.js着色器中添加纹理,先看看今天要完成的效果,在线案例请点击博客原文. 这里我们分别引入三个纹理,分别是地球的表面纹理,对应的海拔灰度图,和云朵的纹理.使用表面纹理还 ...

  7. PowerJob 的自实现高可用方案,妙妙妙!

    本文适合有 Java 基础知识的人群 作者:HelloGitHub-Salieri HelloGitHub 推出的<讲解开源项目>系列. 碎碎念 高可用放到今天已经不是一个新颖的词汇了,怎 ...

  8. manjaro与python开发环境配置

    1.manjaro配置 1.1.启动项 sudo update-grub 注:Manjaro(archLinux)系统时间快8小时--> sudo timedatectl set-local-r ...

  9. NOSQL基础

    一.mongoDB介绍和使用 1.分布式文件储存数据库,使用C++开发的,可以存储任意数据(文件),允许在服务器端执行脚本,使用JSON形式储存数据{key:value} 2.支持的编程语言有:PHP ...

  10. 修改linux服务器的时区

    cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime ntpdate 1.asia.pool.ntp.org 如果出现如下错误 21 Jul 01:0 ...