近期热门
神降:死亡游戏 之 按键检测及动画制作

[U3D] 神降:死亡游戏 之 按键检测及动画制作

[复制链接]
4537 7 0 2 10年前 举报
神降:死亡游戏 按键检测及动画制作
小编在工作中也遇到困难了呢!今天是焦头烂额啊!!到现在都没有做出需求来!!!本来想回家做,却没想到电脑居然打不开工程了!哎,死就死吧,今晚接着来做我们的《神降:死亡游戏》。
因为小编想要做一个2D横版类的游戏,现在考虑是否有深度的变化呢?也就z轴上的位移!不过这个先放放,先考虑如何实现左右的位移及动画吧!!
因为现在想的是PC端的,那么我们这个游戏的操控方式自然就是WASD控制位移(现在主要是AD控制)和JKLI 进行控制,考虑到以后的开发还有其他的辅助键,比如键盘上上方的123456等,还有shift 加速移动 ctrl下蹲 (想多了!!都没有动画呢)和空格键等。
既然用到了按键那自然就要有按键检测了!!那怎么进行检测呢!别人怎么写的我不太清楚,不过我按照我的想法来写就是用[color=rgb(85, 85, 85) !important]unity3d 的Input.GetKey、Input.GetKeyUp和Input.GetKeyDown了,分别是当按键一直按下时,按键抬起 和按下时。
先想想 我们什么键都需要什么检测呢?比如A键,A键的作用就是控制人物像左侧移动,那么他自然是一直按下的时候要进行检测了。那A键抬起 那就表示人物不移动了,那自然A键的抬起也需要进行检测。在例如J键,J键我定义的进行PT攻击,攻击的方式当然不断的按下了,所以要进行Input.GetKeyDown的检测,其他类似,可以根据需要来进行定义!
那知道了我们要进行检测的事件,那我们怎么进行检测呢!!我是放在Update函数中进行检测的!不如我们先建一个人物控制脚本吧!!
我在在Actor文件下创建了一个ActorController文件夹,再创建了一个CharacterControl的脚本文件,他的作用当然是用来控制我们的主角了。
0.jpg
不过考虑到如果我们在CharacterControl的Update()函数中进行实践检测的话那得是多大的一坨啊!所以我把按键检测的部分单独的放在一个脚本。所以我又在ActorController文件夹中建立了一个 1.jpg DetectKey的脚本,他的作用就是用来进行事件检测的!!
打开DetectKey 我们就可以在Update()函数中添加任意的按键检测了:
2.jpg
上面是部分检测截图,其实就是排队Input是否输入了,然后使用KeyboardEventsMessage() 发送了一个按键信息传递,这个KeyboardEventsMessage()也是自己定义的在后面我会说哦!!也很简单的!!
这个时候我们随便的将脚本挂载在游戏的任何物体的都能检测到按键事件了呢!!不过这个脚本是游戏运行必须需要的脚本,万一我们忘了 或者在游戏的多个物体都添加这个脚本咋办呢!!不好管理,既然这个是必须要的物体,那我们让他在游戏运行时,自动加载上就好了!!怎么做呢??反正我是这么做的:
我在代码中创建了一个Init()函数,就是初始化啦!!我只要的游戏的入口调用一下这个Init()函数,那这个脚本就会自动加载啦!!具体如下:
3.jpg
这个的意思就是如果游戏中没有DetectKey这个游戏物体,那么我就会创建一个游戏物体,并且命名为DetectKey,然后在挂载上这个脚本。至于GameObject.DontDestroyOnLoad(_detectKey);的作用就是在切换场景的手这个物体不会被销毁掉!!
最后一句就是获得我们创建的主角啦!!这个在后面我们会说的!现在不用急!
到这里那我们按键检测脚本就做完了,我们来测试一下吧!!
要进行测试,前面我也说了 只要的游戏的入口调用一下就会自动创建了!!那游戏的入口在哪呢?恩!!这个我们还得创建一个脚本
4.jpg 我在Game下创建了一个GameBase 文件,又创建了一个BaseGame 脚本,暂时就将他作为我们游戏的入口吧!!后面有需求的我们再改(没有规划就是这样,想一步走一步啦!!我已经看到后面我不断改动代码的身影!)
这个脚本就很简单了在Start ()函数中添加DetectKey.Instance.init();这一句就行啦!!哦对了DetectKey 这个脚本不要忘了作为单例模式哦!
5.jpg 就像这样!!
如果有不知道单例模式的童靴可以看看这里http://www.manew.com/blog-27799-3016.html
运行游戏后就会看见 6.jpg DetectKey会自动创建哦!!对了不要忘了吧BaseGame挂载在游戏物体上哦!!
这个时候按下键盘的上的按键就可以在输出中看到输出结果了:
7.jpg
按键检测有了,按键主要是为了控制我们的主角啊!!当然得需要主角了!所以我们接下来做我们主角!
我在网上搜了一个主角的Sprite:
8.jpg
动作还是挺丰富的,大家可以自己导入PS中抠一下图啦!!
然后导入到Resource 文件下的Sprite文件中,当初说过Resource文件的主要作用是用来存放不进行的加载的资源的我的目录结构:
9.jpg
Animation主要是用来存放动画的 ,Sprite主要是用来放置演员的Sprite的!其他的先忽略吧!!
将整理的Sprite放入到Untiy3D中:
10.jpg
然后切一下图,这个我就细说了 !都是很基础的东西!如果有不会的同学可以QQ联系我活着百度查询资料哦!!
切好图后就放到Animation中制作动画吧:
11.jpg
这个也很简单就是把切好的图片放到时间轴上 然后调整一下动画就好啦!!这个咱们也不多说了!!
这样动画就做好了!!前期我也就做了这么几个
12.jpg
当然这也只是一部分呢!!
动画做好了,那么就应上我们的Animator了!!
选择主角我们可以再属性面板中看到Animator组件哦!
13.jpg
双击它就可以进入Animator了!!然后就是连线了!!现在动画少 所以我是怎么连的:
14.jpg
在idle状态下可以进入跑步状态,在idle状态和run状态都可以进入跳跃状态!
这里就要说到我们的动画状态机了!!因为我们以后会添加很多的动画 ,为了方便管理所以我们可以定义一个枚举类型,添加上我们所有的动画,如下:
15.jpg
目录如下:
16.jpg
在Animator中,我设置的是整数标志位:
17.jpg
那么当我移动的时候State的值为10,Idle状态的时候State的值就为零了!!
18.jpg
19.jpg
那这样我们动画也设置差不多了哦!!
另一个主角的设置也是一样的哦!!这样创建不同的主角可以进行同样的控制了:

20.jpg
在以后添加新的角色当然也是这么进行设置啦!!
最后一步!动画都设置好了 那么我就要把Acotr类拖给他了!!虽让他是我们的演员呢!!
21.jpg
属性什么可以先随便设置一下啦!!
这样我们的按键检测 主角 和主角动画都设置的差不多了哦!!下一篇我们就可以说如何用按键控制我们的主角了呢!!
哎!!这一片文章就翘了一个多小时,小编我还要熬夜做老板的需求呢!!~~~~(>_<)~~~~好苦啊!!
有兴趣一起的讨论的同学可以加我QQ:3048734340





0
点赞
0
打赏
2
添加到收藏夹

0

点击复制链接

使用微信扫码分享
一次扣10个券
全部评论7
您需要登录后才可以回帖 登录

好好好好好好好好好
9年前  ·  8楼
回复

使用道具 举报

看了LZ的帖子,我只想说一句很好很强大!
10年前  ·  7楼
回复

使用道具 举报


10年前  ·  6楼
回复

使用道具 举报

资源甚好,发帖艰辛,且阅且珍惜!
10年前  ·  5楼
回复

使用道具 举报

赞,支持一下
10年前  ·  4楼
回复

使用道具 举报

10万个赞!!!!这就是我想要的,太感谢了!
10年前  ·  3楼
回复

使用道具 举报

yi
果断回帖,如果沉了就是我弄沉的很有成就感
10年前  ·  2楼
回复

使用道具 举报

您当前使用的浏览器IE内核版本过低会导致网站显示错误

请使用高速内核浏览器或其他浏览器