游戏开发学习笔记(四)-大一项目实战(一)角色控制脚本 ...
一周没更,不是要跑路,是期中考试前的紧急自救= =大学第一次考试,真的挺紧张,工数和线代,我谢谢你们。讲一下我们这个项目。小组挂名的一共有三人,分别是一个策划(组长),一个程序(我),一个美术,除此之外还有一个因为感兴趣而不挂名参加的学姐,负责美术。到今天大一项目的立项报告组长已经写完了,各种设定已经定下了很多,但似乎没有再到这里复制粘贴的必要。简单来说就是个2d类银河恶魔城游戏。
今天就先写上一部分角色控制脚本的内容。(其实也不是完全按照需求写的,主要还是一个练习)
动画状态机
角色的精灵暂且用的是asset store上下载的免费资源,动画状态机是资源自带的。不过为了达到练习效果我还是把参数按照自己的习惯重写了一下
各种变量
把临时能想到的需要的变量分下类
玩家关心的数值属性
计时和计数器
一些物体和组件
玩家输入
角色状态
获取输入
当然不用这个应该也是可以的,但是这样我觉得会更清晰一些……
接下来就可以实现具体的功能了
行走
水平移动
这里idle其实是指枚举中其他成员之外的所有状态,包括待机、行走、跳跃等。除此之外没什么好说的。
面朝方向的控制
刚开始这里的判断条件写的是刚体的水平方向速度与物体x轴比例的积小于零,但实际效果并不理想。把刚体的水平方向速度换成键盘的水平输入之后效果好了不少
跳跃和掉落
输入缓冲
将瞬间的输入判定延长成一段时间
比如说玩家在角色即将落地但还不能跳跃的时候按下跳跃,就很有可能出现“我明明按跳了怎么没跳起来啊魂淡”这种痛苦的感觉。而输入缓冲可以在一个较短的时间段里记住玩家按下了跳跃键,并在可以跳跃的时候立即进行跳跃
缓冲时间如果过短,玩家体验就会和没有输入缓冲的时候没什么差别;缓冲时间过短,玩家就会觉得角色常常比自己操作的多执行一次动作。我在这里设定的缓冲时间是0.3秒
土狼时间
“趁牛顿不注意”
玩家在角色从平台掉落后的极短时间内按下跳跃键,仍然判定为从地面起跳
我在这里没有通过离开地面之后的时间,而是通过刚体竖直方向的速度判定,并用一个名为hyenas的bool变量储存结果。效果应该是相近的
输入缓冲和土狼时间扩展了地面起跳的判定
地面检测
地面检测的方法其实很多,我选择了给角色加了几个带有collider2D组件的子物体作为检测器
每个子物体都挂载一个用于地面检测的脚本
之后在控制玩家的脚本里获取检测器(为了确保检测器的顺序正确,我没敢直接用Get ComponentsInChildren,而是在直接unity中把检测器逐个拖进去)
<hr/>以上为个人学习笔记,欢迎指错,欢迎给出优化方案
页:
[1]